Ana içeriğe geç

order-payment

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

Bir sipariş açar. Bu istekte kart verisi gönderilmez ve çekim yapılmaz; yanıt, siparişin ödeneceği gateway ödeme sayfasının adresini (order.checkout_url) döner. Ödeme sayfasındaki ödemeler 3D Secure ile işlenir. Akış: Sipariş Ödemesi rehberi.

Çalışma alanının planı siparişleri kapsamıyorsa istek 403 ile reddedilir.

Kimlik doğrulama​

X-Api-Key, X-Signature, Content-Type: application/json. Ayrıntılar: Kimlik Doğrulama ve İmza.

İstek​

{
"order": {
"channel_token": "6f1c2e7a-4b3d-4c8e-9a61-2f5d7b0c3e14",
"channel_reference": "SIP-10233",
"success_url": "https://magazam.com/tesekkurler",
"cancel_url": "https://magazam.com/sepet",
"items": [
{ "channel_reference": "KAHVE-MAKINESI" },
{ "channel_reference": "KAHVE-500G", "quantity": 2, "unit_amount": "180.00" },
{ "channel_reference": "HEDIYE-PAKETI", "name": "Hediye paketi", "unit_amount": "25.00" }
]
},
"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"
}
}

order​

AlanTipZorunluAçıklama
channel_tokenstring (UUID)evetÇalışma alanınıza ait kanalın token'ı.
channel_referencestringevetSiparişin sizin sisteminizdeki kimliği. En çok 255 karakter, en az bir rakam.
success_urlstringevetBaşarılı ödemeden sonra dönüş POST'unun gönderileceği adres. http/https, en çok 2048 karakter.
cancel_urlstringhayırÖdeme sayfasında vazgeçme bağlantısı olarak verilen adres. http/https, en çok 2048 karakter.
itemsarrayevetEn az bir kalem.
descriptionstringhayırÖdeme sayfasına aktarılan açıklama. En çok 255 karakter.
currencystringhayırTRY, USD, EUR, GBP. Gönderilmezse TRY.
payment_provider_tokenstring (UUID)hayırSiparişin ödeneceği ödeme hesabı. Hesabın 3D ödemeyi desteklemesi gerekir. Gönderilmezse ödeme sırasında ödeme hesabı seçimi uygulanır.

Sipariş tutarı gönderilmez; kalemlerden hesaplanır.

order.items[]​

AlanTipZorunluAçıklama
channel_referencestringevetÜrünün sizin sisteminizdeki kimliği. Aynı kanalda save-product ile kaydedilmiş bir ürüne karşılık geliyorsa boş bırakılan alanlar üründen alınır.
namestringkoşulluÜrün katalogda yoksa zorunlu.
quantityintegerhayırEn az 1. Gönderilmezse 1.
unit_amountstringkoşulluBirim fiyat (KDV dahil), tutar biçiminde. Ürün katalogda yoksa zorunlu.
tax_ratenumberhayırFiyatın içindeki KDV oranı, 0–100, en çok iki ondalık.

Kalemde gönderilen name, unit_amount ve tax_rate yalnızca bu sipariş için geçerlidir; katalogdaki ürünü değiştirmez.

customer​

Zorunlu. Alanlar: customer nesnesi.

SDK örnekleri​

use Gurmehub\Odemehub\Request\{OrderItem, OrderPayment};

$order = $client->orderPayment(new OrderPayment(
channelReference: 'SIP-10233',
successUrl: 'https://magazam.com/tesekkurler',
cancelUrl: 'https://magazam.com/sepet',
customer: $customer, // Customer nesnesi, bkz. secure-payment
items: [
new OrderItem(channelReference: 'KAHVE-MAKINESI'),
new OrderItem(channelReference: 'KAHVE-500G', quantity: 2, unitAmount: '180.00'),
new OrderItem(channelReference: 'HEDIYE-PAKETI', name: 'Hediye paketi', unitAmount: '25.00'),
],
));

header('Location: '.$order->checkoutUrl);

Yanıt​

Katalogda KAHVE-MAKINESI ürününün fiyatı 450.00 iken:

{
"result": {
"successful": true,
"message": null
},
"order": {
"token": "3b7e1f20-5c4a-4d8e-9f1b-7a6c5d4e3f21",
"channel_token": "6f1c2e7a-4b3d-4c8e-9a61-2f5d7b0c3e14",
"channel_reference": "SIP-10233",
"amount": "835.00",
"currency": "TRY",
"status": "open",
"checkout_url": "https://odeme.gurmehub.com/checkout/order/3b7e1f20-5c4a-4d8e-9f1b-7a6c5d4e3f21"
},
"customer": {
"channel_reference": "musteri-88"
}
}
AlanTipAçıklama
order.tokenstringSiparişin token'ı.
order.channel_tokenstringSiparişin kanalı.
order.channel_referencestringGönderdiğiniz channel_reference.
order.amountstringKalemlerin toplamı (unit_amount × quantity), iki ondalıklı.
order.currencystringPara birimi.
order.statusstringopen (ödenmedi) ya da paid. Oluşturulduğunda open.
order.checkout_urlstringSiparişin ödeneceği gateway ödeme sayfası.
customer.channel_referencestringMüşterinin channel_reference değeri.

Ödemenin sonucu bu yanıtta yoktur. Başarılı ödemeden sonra success_url adresine dönüş POST'u gelir; sonuç retrieve-payment ile alınır.

HTTP durum kodları​

KodDurum
200Sipariş açıldı.
401API anahtarı ya da imza geçersiz.
403Çalışma alanı işlem yapamıyor ya da planı siparişleri kapsamıyor.
422Doğrulama hatası.

Hatalar​

AlanMesaj
order.itemsSipariş en az bir kalem içermelidir.
order.items.{i}.channel_reference"<referans>" bu kanalda tanımlı bir ürün değil. Ürünü panelden ekleyin ya da kalemi name ve unit_amount ile gönderin.
order.items.{i}.unit_amountBirim tutar 100 veya 100.10 biçiminde olmalıdır; kuruş basamağı noktayla ayrılır.
order.success_urlBaşarı adresi zorunludur; ödeme sonrası müşteri oraya yönlendirilir.
order.channel_referenceReferans en az bir rakam içermelidir (ör. SIP1); bankaya giden sipariş numarası bu rakamlarla kurulur.
order.payment_provider_tokenBu ödeme hesabı 3D ödeme almıyor; sipariş açılamaz. / Çalışma alanınızın varsayılan ödeme hesabı 3D ödeme almıyor; sipariş açılamaz.
order.payment_provider_tokenÖdeme hesabı belirtilmedi ve çalışma alanınızın varsayılan ödeme hesabı yok.