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ış | Adres | Ne zaman gönderilir |
|---|---|---|
secure-payment | transaction.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-payment | order.success_url | Yalnızca ödeme başarılı olduğunda. |
subscription-payment | subscription.success_url | Yalnı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
| Alan | Tip | Açıklama |
|---|---|---|
transaction_token | string | Ödemenin token'ı. |
channel_reference | string | Ödemenin channel_reference değeri. Ödeme sayfası akışlarında siparişin ya da aboneliğin channel_reference değeri. |
successful | string | "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.
successfulalanına göre sipariş durumunu değiştirmeyin.- Ödemenin sonucunu
transaction_tokenileretrieve-paymentuç noktasından alın; o yanıt imzalıdır. successful=0değ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
- PHP
- Node.js
- Python
- Java
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
}
app.post('/odeme/donus', express.urlencoded({ extended: false }), async (req, res) => {
const payment = await client.retrievePayment({ transactionToken: req.body.transaction_token });
if (payment.result.successful) {
// payment.channelReference ile siparişi ödendi olarak işaretleyin
}
});
from odemehub.request import RetrievePayment
@app.post("/odeme/donus")
def odeme_donus():
payment = client.retrieve_payment(RetrievePayment(
transaction_token=request.form["transaction_token"],
))
if payment.result.successful:
... # payment.channel_reference ile siparişi ödendi olarak işaretleyin
import com.odemehub.request.RetrievePayment;
@PostMapping("/odeme/donus")
public String odemeDonus(@RequestParam("transaction_token") String transactionToken) {
var payment = client.retrievePayment(new RetrievePayment(transactionToken));
if (payment.getResult().isSuccessful()) {
// payment.getChannelReference() ile siparişi ödendi olarak işaretleyin
}
// ...
}