Ana içeriğe geç

secure-payment

POST /api/{team}/gateway/secure-payment

3D Secure ile işlenecek bir ödeme başlatır. Kart verisi bu isteğin gövdesinde gönderilir. Yanıt ödemenin sonucu değildir: başarılı yanıt, müşterinin yönlendirileceği result.redirect_url adresini döner. Ödemenin sonucu, dönüşten sonra retrieve-payment ile alınır. Akış: Secure (3D) Ödeme rehberi.

Kimlik doğrulama​

X-Api-Key: key_...
X-Signature: <gövdenin HMAC-SHA256 imzası>
Content-Type: application/json

Ayrıntılar: Kimlik Doğrulama ve İmza.

İstek​

{
"transaction": {
"channel_token": "6f1c2e7a-4b3d-4c8e-9a61-2f5d7b0c3e14",
"channel_reference": "SIP-10231",
"amount": "450.00",
"installment_number": 1,
"ip": "85.105.10.20",
"callback_url": "https://magazam.com/odeme/donus"
},
"customer": {
"channel_reference": "musteri-88",
"firstname": "Ahmet",
"lastname": "Yılmaz",
"email": "[email protected]",
"phone": "05551112233",
"address": "Kızılırmak Mah. Dumlupınar Blv. No:3",
"district": "Çankaya",
"province": "Ankara",
"country": "Türkiye"
},
"card": {
"holder_name": "AHMET YILMAZ",
"number": "5400360000000003",
"security_code": "000",
"expiry_month": "12",
"expiry_year": "2030"
}
}

transaction​

AlanTipZorunluAçıklama
channel_tokenstring (UUID)evetÇalışma alanınıza ait kanalın token'ı.
channel_referencestringevetÖdemenin sizin sisteminizdeki kimliği. En çok 255 karakter, en az bir rakam.
amountstringevetKarttan çekilecek tutar: "450" ya da "450.00".
base_amountstringhayırSatılan tutar (vade farkı hariç). amount değerinden büyük olamaz. Gönderilmezse amount. Bkz. Taksit ve Kur Çevirisi.
currencystringhayırTRY, USD, EUR, GBP. Gönderilmezse TRY. Ödeme hesabının desteklemesi gerekir.
installment_numberintegerevet1–12. TRY dışındaki para birimlerinde (ya da kur çevirisiyle TRY dışında çekilecek ödemede) 1 olmalıdır.
ipstringevetMüşterinin IP adresi (geçerli IPv4/IPv6).
callback_urlstringevetDönüş POST'unun gönderileceği adres. http/https, en çok 2048 karakter. Bkz. Dönüş POST'u.
payment_provider_tokenstring (UUID)hayırÖdeme hesabı. Gönderilmezse ödeme hesabı seçimi uygulanır. saved_card_token ile birlikte gönderilemez.
saved_card_tokenstring (UUID)hayırKayıtlı kartla ödeme. Gönderilirse card ve payment_provider_token gönderilmez; ödeme kartın saklandığı hesaptan alınır. Bkz. Kayıtlı Kartlar.

customer​

Zorunlu. Alanlar: customer nesnesi.

card​

transaction.saved_card_token gönderilmediğinde zorunludur; gönderildiğinde card gönderilmez.

AlanTipZorunluAçıklama
holder_namestringevetKart sahibinin adı. En çok 255 karakter.
numberstringevetKart numarası, 12–19 karakter.
security_codestringevet3–4 karakter.
expiry_monthstringevet2 karakter: "04".
expiry_yearstringevet4 karakter: "2030".
should_savebooleanhayırtrue ise ödeme başarılı olduğunda kart saklanır. Planın kayıtlı kartları kapsaması ve ödeme hesabının kart saklaması gerekir.

SDK örnekleri​

use Gurmehub\Odemehub\Request\{Card, Customer, SecurePayment};

$payment = $client->securePayment(new SecurePayment(
channelReference: 'SIP-10231',
amount: '450.00',
installmentNumber: 1,
ip: $_SERVER['REMOTE_ADDR'],
customer: new Customer(
channelReference: 'musteri-88',
firstname: 'Ahmet',
lastname: 'Yılmaz',
phone: '05551112233',
address: 'Kızılırmak Mah. Dumlupınar Blv. No:3',
district: 'Çankaya',
province: 'Ankara',
country: 'Türkiye',
),
callbackUrl: 'https://magazam.com/odeme/donus',
card: new Card(
holderName: 'AHMET YILMAZ',
number: '5400360000000003',
securityCode: '000',
expiryMonth: '12',
expiryYear: '2030',
),
));

if ($payment->result->successful) {
header('Location: '.$payment->redirectUrl);
}

Yanıt​

Başlatma başarılı:

{
"result": {
"successful": true,
"message": null,
"redirect_url": "https://odeme.gurmehub.com/gateway/secure/0b8f6c2d-3e41-4a7b-9c5d-1e2f3a4b5c6d"
},
"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
}

Başlatma başarısız (sağlayıcı reddetti; yine 200):

{
"result": {
"successful": false,
"message": "<sağlayıcının mesajı>",
"redirect_url": 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
}
AlanTipAçıklama
result.successfulbooleantrue: 3D işlemi başlatıldı. Ödemenin alındığı anlamına gelmez.
result.messagestring | nullsuccessful false ise nedeni.
result.redirect_urlstring | nullMüşterinin yönlendirileceği adres; yalnızca successful true iken dolu. Adres bir kez sunulur; 15 dakika içinde açılmayan ödemenin süresi dolar.
transaction.tokenstringÖdemenin token'ı. retrieve-payment, refund-payment ve cancel-payment bu değeri alır.
transaction.channel_tokenstringÖdemenin kanalı.
transaction.channel_referencestringGönderdiğiniz channel_reference.
customer.channel_referencestringMüşterinin channel_reference değeri.
conversionobject | nullÖdeme kur çevirisiyle başka para biriminde çekilecekse {amount, currency, rate}; değilse null. Bkz. Taksit ve Kur Çevirisi.
saved_cardobject | nullYalnızca card.should_save: true gönderildiyse bulunur. Kart ödeme tamamlanınca saklandığı için bu yanıtta null'dır; saklanan kart retrieve-payment yanıtında döner.

HTTP durum kodları​

KodDurum
200İstek işlendi; sonuç result.successful içinde.
401API anahtarı ya da imza geçersiz.
403Çalışma alanı işlem yapamıyor.
422Doğrulama hatası.

Hatalar​

422 ile dönen uca özel mesajlar:

AlanMesaj
transaction.amountTutar 100 veya 100.10 biçiminde olmalıdır; kuruş basamağı noktayla ayrılır.
transaction.base_amountSatılan tutar, çekilecek tutardan fazla olamaz.
transaction.channel_referenceReferans en az bir rakam içermelidir (ör. SIP1); bankaya giden sipariş numarası bu rakamlarla kurulur.
transaction.installment_numberTürk Lirası dışındaki ödemelerde taksit yapılamaz; taksit sayısı 1 olmalıdır.
transaction.currencyBu ödeme hesabı <para birimi> ile ödeme almıyor.
transaction.currencyGüncel kur bilgisi alınamadığı için ödeme şu an alınamıyor. (kur çevirisi uygulanacak ödemede)
transaction.payment_provider_tokenBu ödeme hesabı 3D Güvenli ödeme desteklemiyor.
transaction.payment_provider_tokenÖdeme hesabı belirtilmedi ve çalışma alanınızın varsayılan ödeme hesabı yok.
transaction.saved_card_tokenKayıtlı kartla ödemede kart bilgisi gönderilmez.
transaction.saved_card_tokenKayıtlı kartla ödemede ödeme hesabı gönderilmez; ödeme kartın saklandığı hesaptan alınır.
transaction.saved_card_tokenBöyle bir kayıtlı kart bulunamadı. / Kayıtlı kart bu müşteriye ait değil. / Kayıtlı kartın saklandığı ödeme hesabı silinmiş. / Kayıtlı kart bu ortamda saklanmamış. / Bu ödeme hesabı kayıtlı kartla ödeme desteklemiyor. / Çalışma alanınızın planı kayıtlı kartları kapsamıyor.
card.should_saveÇalışma alanınızın planı kayıtlı kartları kapsamıyor. / Bu ödeme hesabı kart saklamayı desteklemiyor.

Genel hata biçimi: Hatalar.