Ana içeriğe geç

Dönüş POST'u

secure-payment, order-payment ve subscription-payment akışlarında, ödeme tamamlandıktan sonra gateway müşterinin tarayıcısına otomatik gönderilen bir HTML formu döner. Form, sizin verdiğiniz adrese POST edilir.

AkışAdresNe zaman gönderilir
secure-paymenttransaction.callback_urlÖdeme başarılı ya da başarısız tamamlandığında; ayrıca süresi dolmuş bir redirect_url açıldığında.
order-paymentorder.success_urlYalnızca ödeme başarılı olduğunda.
subscription-paymentsubscription.success_urlYalnızca ödeme başarılı olduğunda.

Ödeme sayfasında (order-payment, subscription-payment) başarısız olan bir denemeden sonra success_url adresine bir şey gönderilmez; tarayıcı checkout_url?attempt={transaction.token} adresine yönlendirilir.

İstek​

POST /odeme/donus HTTP/1.1
Host: magazam.com
Content-Type: application/x-www-form-urlencoded

transaction_token=0b8f6c2d-3e41-4a7b-9c5d-1e2f3a4b5c6d&channel_reference=SIP-10231&successful=1
AlanTipAçıklama
transaction_tokenstringÖdemenin token'ı.
channel_referencestringÖdemenin channel_reference değeri. Ödeme sayfası akışlarında siparişin ya da aboneliğin channel_reference değeri.
successfulstring"1" ya da "0".

Güvenlik​

Bu istek gateway sunucusundan değil, müşterinin tarayıcısından gelir. İmzası yoktur ve herhangi biri aynı alanlarla bir istek gönderebilir.

  • successful alanına göre sipariş durumunu değiştirmeyin.
  • Ödemenin sonucunu transaction_token ile retrieve-payment uç noktasından alın; o yanıt imzalıdır.
  • successful=0 değerini yalnızca gereksiz bir sorguyu atlamak için kullanabilirsiniz.

Tekrar gelen dönüşler​

Aynı ödeme için dönüş formu birden fazla kez gönderilebilir: bankanın ve tarayıcının dönüş adresine ikisinin de ulaşması ya da kullanıcının sayfayı yenilemesi durumunda form yeniden üretilir. Ödeme yalnızca bir kez tamamlanır; sonraki gönderimler aynı sonucu taşır. Dönüş işleyicinizi aynı transaction_token ile tekrar çalıştığında sonucu değiştirmeyecek şekilde yazın.

Örnek işleyici​

use Gurmehub\Odemehub\Request\RetrievePayment;

$payment = $client->retrievePayment(new RetrievePayment(
transactionToken: $_POST['transaction_token'],
));

if ($payment->result->successful) {
// $payment->channelReference ile siparişi ödendi olarak işaretleyin
}