Ana içeriğe geç

Sipariş Ödemesi

order-payment kart verisi almaz. Sipariş açılır ve ödeme, gateway'in ödeme sayfasında (order.checkout_url) alınır. Ödeme sayfasındaki ödemeler 3D Secure ile işlenir.

  1. Sipariş açma — Sunucunuz order-payment çağırır. Yanıt order.token ve order.checkout_url döner; çekim yapılmaz.
  2. Yönlendirme — Tarayıcıyı order.checkout_url adresine yönlendirirsiniz.
  3. Dönüş — Ödeme başarılı olursa tarayıcı success_url adresinize bir form POST eder: transaction_token, channel_reference (siparişin), successful. Bkz. Dönüş POST'u.
  4. Sonuç — Sunucunuz transaction_token ile retrieve-payment çağırır.

Ön koşullar​

  • Çalışma alanının planı siparişleri kapsamalıdır; kapsamıyorsa 403.
  • Siparişin ödeneceği hesap (gönderilen payment_provider_token ya da varsayılan hesap) 3D ödemeyi desteklemelidir; desteklemiyorsa 422.

1. Sipariş açma​

Kalemler ürünleri channel_reference ile adlandırır. Aynı kanalda save-product ile kaydedilmiş bir ürünün boş bırakılan name, unit_amount ve tax_rate değerleri katalogdan alınır. Katalogda olmayan bir kalem için name ve unit_amount zorunludur. Sipariş tutarı gönderilmez; kalemlerden hesaplanıp order.amount olarak döner.

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,
items: [
new OrderItem(channelReference: 'KAHVE-MAKINESI'),
new OrderItem(channelReference: 'HEDIYE-PAKETI', name: 'Hediye paketi', unitAmount: '25.00'),
],
));

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

2–3. Ödeme sayfası ve dönüş​

OlayDavranış
Ödeme başarılıTarayıcı success_url adresine dönüş formunu POST eder.
Ödeme başarısızsuccess_url adresine bir şey gönderilmez; tarayıcı checkout_url?attempt={transaction.token} adresine döner.
cancel_urlÖdeme sayfasında vazgeçme bağlantısı olarak verilir. Gateway bu adrese istek göndermez.

Dönüş formundaki channel_reference, siparişin channel_reference değeridir (SIP-10233).

4. Sonuç​

Dönüşteki transaction_token ile retrieve-payment çağrılır; akış Secure ödeme ile aynıdır. Sipariş durumu yalnızca bu yanıttaki result.successful ile değiştirilir.

order.status (open / paid) yalnızca order-payment yanıtında döner; siparişi sorgulayan bir uç yoktur.

İade ve iptal​

Sipariş ödemesi retrieve-payment ile alınan transaction.token üzerinden refund-payment ve cancel-payment ile geri verilir.