retrieve-payment
POST /api/{team}/gateway/retrieve-payment
Bir ödemenin sonucunu transaction.token ile döndürür. Hiçbir şeyi değiştirmez. Dönüş POST'u geldikten sonra ödemenin sonucu bu uçla alınır.
Kimlik doğrulama
X-Api-Key, X-Signature, Content-Type: application/json. Ayrıntılar: Kimlik Doğrulama ve İmza.
İstek
{
"transaction": {
"token": "0b8f6c2d-3e41-4a7b-9c5d-1e2f3a4b5c6d"
}
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
transaction.token | string (UUID) | evet | Ödemenin token'ı: ödeme yanıtındaki transaction.token ya da dönüş POST'undaki transaction_token. Çalışma alanınıza ait olmalıdır. |
SDK örnekleri
- PHP
- Node.js
- Python
- Java
- cURL
use Gurmehub\Odemehub\Request\RetrievePayment;
$payment = $client->retrievePayment(new RetrievePayment(
transactionToken: $_POST['transaction_token'],
));
if ($payment->result->successful) {
// $payment->channelReference ile siparişinizi eşleştirin
}
const payment = await client.retrievePayment({
transactionToken: req.body.transaction_token,
});
if (payment.result.successful) {
// payment.channelReference ile siparişinizi eşleştirin
}
from odemehub.request import RetrievePayment
payment = client.retrieve_payment(RetrievePayment(
transaction_token=request.form["transaction_token"],
))
if payment.result.successful:
... # payment.channel_reference ile siparişinizi eşleştirin
import com.odemehub.request.RetrievePayment;
var payment = client.retrievePayment(new RetrievePayment(transactionToken));
if (payment.getResult().isSuccessful()) {
// payment.getChannelReference() ile siparişinizi eşleştirin
}
BODY='{"transaction":{"token":"0b8f6c2d-3e41-4a7b-9c5d-1e2f3a4b5c6d"}}'
SIGNATURE=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$ODEMEHUB_API_SECRET" | sed 's/^.* //')
curl -X POST "https://odeme.gurmehub.com/api/$ODEMEHUB_TEAM/gateway/retrieve-payment" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-Api-Key: $ODEMEHUB_API_KEY" \
-H "X-Signature: $SIGNATURE" \
--data-raw "$BODY"
Yanıt
{
"result": {
"successful": true,
"message": null
},
"transaction": {
"token": "0b8f6c2d-3e41-4a7b-9c5d-1e2f3a4b5c6d",
"channel_token": "6f1c2e7a-4b3d-4c8e-9a61-2f5d7b0c3e14",
"channel_reference": "SIP-10231"
},
"customer": {
"channel_reference": "musteri-88"
},
"conversion": null
}
Yanıt, ödeme uçlarının yanıtıyla aynı biçimdedir; result.redirect_url bulunmaz.
| Alan | Tip | Açıklama |
|---|---|---|
result.successful | boolean | Yalnızca ödeme başarıyla tamamlandıysa true. |
result.message | string | null | successful false ise ödemenin kayıtlı hata mesajı. Henüz tamamlanmamış bir 3D ödemesinde boş string ("") döner. |
transaction.token | string | Ödemenin token'ı. |
transaction.channel_token | string | Ödemenin kanalı. |
transaction.channel_reference | string | Ödemeyi başlatırken gönderilen channel_reference. |
customer.channel_reference | string | Müşterinin channel_reference değeri. |
conversion | object | null | Kur çevirisi uygulandıysa {amount, currency, rate}; değilse null. |
saved_card | object | null | Yalnızca ödeme card.should_save: true ile başlatıldıysa bulunur. Ödeme başarılı ve kart saklandıysa kart nesnesi, değilse null. |
result.successful: false durumları
false değeri şu durumların hepsinde döner; yanıt bunları ayrı bir durum alanıyla ayırmaz:
- Sağlayıcı ödemeyi reddetti.
- 3D ödemesi başlatıldı ama henüz tamamlanmadı (
message: ""). redirect_url15 dakika içinde açılmadığı için ödemenin süresi doldu (message:Müşteri 3D doğrulama sayfasını süresi içinde açmadığı için ödemenin süresi doldu.).
İade ya da iptal edilmiş bir ödeme için de successful true kalır; bu uç ödemenin geri verilip verilmediğini göstermez.
HTTP durum kodları
| Kod | Durum |
|---|---|
200 | Ödeme bulundu. |
401 | API anahtarı ya da imza geçersiz. |
403 | Çalışma alanı işlem yapamıyor. |
422 | transaction.token eksik, UUID değil ya da çalışma alanınıza ait bir ödeme değil. |
Hatalar
| Alan | Mesaj |
|---|---|
transaction.token | Bu işlem bulunamadı. (başka bir çalışma alanının ödemesi için de aynı mesaj döner) |