Was ist der link zu redirect nach erfolgreicher Zahlung an payment-gateway in opencart?
Habe ich umgesetzt payment-Modul in Opencart basiert auf BankTransfer-Modul.
Voraussetzung für die payment-gateway zu senden mit get-Anforderung einen successurl und errorurl. Diese URL sind für eine erfolgreiche Bestellung und stornierten Auftrag.
Algorithmus:
- Kunde erhält auf die Bestellung der Kasse.
- Klicken Sie auf bestätigen, um
- Wird umgeleitet localhost/opencart/testkzm.php, wo Werte werden ausgegeben und es gibt einen link mit auf die ich umleiten im Falle des Erfolgs.
FRAGE: Was ist der link zu redirect nach erfolgreicher Zahlung an payment-gateway?
Ansatz:
Ich habe naiv gedacht, dass http://example.com/opencart/index.php?route=checkout/success ist der Erfolg link. Es zeigt nur Bestätigung, aber die Bestellung ist nicht im system. Ich verstehe, dass es keine Möglichkeit zu geben, externer link, wird automatisch wissen, welche Bestellung zu bestätigen, so sollte ich pass verschlüsselte eindeutige Werte in successurl, so dass bei der Rückkehr kann ich entschlüsseln und die Bestellung bestätigen?
Erklärung der Dateien:
- banktransfer.php ist die Datei opencart bekommt Informationen von system wie
die Auftrags-id, Betrag der Bestellung und etc. - erfolgen.tpl ist das template
Datei für das Rendern der Seite im browser.(Die eigentliche front-end) - testkzm.php ist
einfache Datei, die ich schrieb, um zu testen, bekomme ich die korrekten Werte aus
system.
testkzm.php ist
einfache Datei, die ich schrieb, um zu testen, bekomme ich die korrekten Werte aus
system.
banktransfer.php in controller/Zahlung
class ControllerPaymentBankTransfer extends Controller {
protected function index() {
$this->language->load('payment/bank_transfer');
$this->data['text_instruction'] = $this->language->get('text_instruction');
$this->data['text_description'] = $this->language->get('text_description');
$this->data['text_payment'] = $this->language->get('text_payment');
//Modified things for KZM
$order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
$this->data['orderIdKZM'] = $this->session->data['order_id'];
$this->data['amountKZM'] = $order_info['total'];
$this->data['merchantIdKZM'] = $this->language->get('merchantIdKZM');
$this->data['currencyKZM'] = $this->language->get('currencyKZM');
$this->data['titleKZM'] = $this->language->get('titleKZM');
$this->data['successuUlKZM'] = $this->language->get('successUrlKZM');
$this->data['errorUrlKZM'] = $this->language->get('errorUrlKZM');
$this->data['dateKZM'] = $this->language->get('dateKZM');
$this->data['signstrKZM'] = $this->language->get('signstrKZM');
$this->data['verKZM'] = $this->language->get('verKZM');
//KZM
$this->data['button_confirm'] = $this->language->get('button_confirm');
$this->data['bank'] = nl2br($this->config->get('bank_transfer_bank_' . $this->config->get('config_language_id')));
$this->data['continue'] = $this->url->link('checkout/success');
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/bank_transfer.tpl')) {
$this->template = $this->config->get('config_template') . '/template/payment/bank_transfer.tpl';
} else {
$this->template = 'default/template/payment/bank_transfer.tpl';
}
$this->render();
}
public function confirm() {
$this->language->load('payment/bank_transfer');
$this->load->model('checkout/order');
$comment = $this->language->get('text_instruction') . "\n\n";
$comment .= $this->config->get('bank_transfer_bank_' . $this->config->get('config_language_id')) . "\n\n";
$comment .= $this->language->get('text_payment');
$this->model_checkout_order->confirm($this->session->data['order_id'], $this->config->get('bank_transfer_order_status_id'), $comment, true);
}
}
erfolgen.tpl
<h2><?php echo $text_instruction; ?></h2>
<div class="content">
<p><?php echo $text_description; ?></p>
<p><?php echo $bank; ?></p>
<p><?php echo $text_payment; ?></p>
<p><?php echo $orderIdKZM; ?></p>
<p>
<?php
$titleKZM = $titleKZM.$orderIdKZM;
$merchantIdKZM = '23';
$currencyKZM = 'KZT';
$successUrlKZM = '';
$erroUrlKZM = '';
$dateKZM = $merchantIdKZM.$orderIdKZM.$amountKZM.$currencyKZM;
?></p>
</div>
<div class="buttons">
<div class="right">
<form action="http://example.com/opencart/testkzm.php" method="get">
<input type="hidden" name="merchantIdKZM" value="<?php echo $merchantIdKZM; ?>">
<input type="hidden" name="orderIdKZM" value="<?php echo $orderIdKZM; ?>">
<input type="hidden" name="amountKZM" value="<?php echo $amountKZM; ?>">
<input type="hidden" name="currencyKZM" value="<?php echo $currencyKZM; ?>">
<input type="hidden" name="successUrlKZM" value="<?php echo $successUrlKZM; ?>">
<input type="hidden" name="errorUrlKZM" value="<?php echo $errorUrlKZM; ?>">
<input type="hidden" name="signstrKZM" value="<?php echo $signstrKZM; ?>">
<input type="hidden" name="verKZM" value="<?php echo $verKZM; ?>">
<input type="button" value="<?php echo $button_confirm; ?>" id="button-confirm" class="button" />
</form>
</div>
</div>
<script type="text/javascript"><!--
$('#button-confirm-s').bind('click', function() {
$.ajax({
type: 'get',
url: 'index.php?route=payment/bank_transfer/confirm',
success: function() {
location = '<?php echo $continue; ?>';
}
});
});
//--></script
testkzm.php
merchantID <?php echo $_GET["merchantIdKZM"]; ?><br>
orderID <?php echo $_GET["orderIdKZM"]; ?> <br>
amount <?php echo $_GET["amountKZM"]; ?><br>
currency <?php echo $_GET["currencyKZM"]; ?> <br>
successURL <?php echo $_GET["successUrlKZM"]; ?><br>
errorURL <?php echo $_GET["errorUrlKZM"]; ?> <br>
signstr <?php echo $_GET["signstrKZM"]; ?><br>
ver <?php echo $_GET["verKZM"]; ?> <br>
<div class="buttons">
<div class="right">
<a href="http://example.com/opencart/index.php?route=checkout/success">asdfas</a>
</div>
</div>
InformationsquelleAutor kmaxat | 2013-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den URL zurück, aus der payment-gateway ist vollständig bis zu dir selbst und dem payment-gateway-Methodik. Im Allgemeinen, wenn Sie können übergeben Sie eine url zum payment-gateway zurück für die true und/oder false für den Erfolg der Transaktion, die Sie erhalten würden, es zu verwenden, eine Methode des payment-gateways, controller, wie
http://yourstore.com/index.php?route=payment/payment_gateway/success
wo Sie dann die Zahlung zu verarbeiten, und aktualisieren Sie den status der Bestellung entsprechendWenn Sie möchten, dann gehen Sie zu der checkout-success Seite, die Sie verwenden würden
$this->redirect($this->url->link('checkout/success', '', 'SSL'))
. Wenn es fehlschlägt, sollten Sie die Umleitung auf der checkout-Seiten, auf denen der Kunde schnell überspringen durch die verschiedenen Seiten, die sollte schon Ihre details ausgefüllt, und Sie können es dann erneut versuchenInformationsquelleAutor Jay Gilford
Den Erfolg url checkout/success als Sie dachte.
Den Zahlungs-Modul sollte die Zahlung bestätigen, bevor Sie geht, um den Erfolg der Seite. Bank-Transfer-Modul die Bestätigung durch den Einsatz von AJAX (wie Sie sehen können, erfolgen.tpl), um Anrufe bestätigen Funktion in banktransfer.php.
Es ist besser, wenn du einen anderen payment-gateway-Modul (wie pp_standard, moneybookers, paymate, etc) als Ausgangspunkt statt Bank Übertragen, weil Sie mehr ähneln mit Ihrem custom-payment-gateway-Modul Anforderungen.
InformationsquelleAutor bogalakon
Ich habe diesen gerade Hinzugefügt simple redirect-code zum starten
im view/template/yourtemplate/common/success.tpl
InformationsquelleAutor anxieter