Ana içeriğe geç

Ödeme Linki

Ödeme linki, adresi bilen herkesin tekrar tekrar ödeyebildiği bir ödeme sayfasıdır: bağış, etkinlik kaydı, sabit fiyatlı hizmet. Tutar linkin kalemlerinden gelir ya da ödeme sayfasında ödeyen tarafından belirlenir; para birimi sabit ya da ödeyenin seçimine açık olabilir. Link kapatılana ya da son geçerlilik günü geçene kadar ödeme alır; her ödeme 3D Secure ile alınır. Linkte customer gönderilmez; ödeyenin bilgileri ödeme sayfasında alınır ve işlemin customer alanında döner.

  1. Açma — Sunucunuz create-payment-link çağırır. Yanıt payment_link.token ve payment_link.checkout_url döner.
  2. Paylaşma — checkout_url adresini müşterilerinizle paylaşırsınız.
  3. İzleme — Linkten yapılan ödemeleri retrieve-link-payments ile, ödeme denemelerini retrieve-payment-links (son 50 deneme ve toplam deneme sayısı) ya da retrieve-payments ile okursunuz.
  4. Kapatma — update-payment-link ile is_active: false gönderirsiniz.

Ön koşullar​

  • Çalışma alanının planı ödeme linklerini kapsamalı ve panelde Modüller sayfasından Link ile Ödeme modülü açılmış olmalıdır; değilse 403.
  • Linkin ödeneceği hesap 3D ödeme almalıdır.

1. Açma​

currency her zaman zorunludur. Varsayılan tutar tipi fixed'dir: items zorunludur, tutar kalemlerden hesaplanır ve her ödeme linkin o anki kalemleriyle alınır. Aşağıdaki örnekler fixed tipte bir link açar; tutarı ödeyenin belirlediği link için Tutar tipleri.

not

Örneklerdeki $client / client nesnesinin kurulumu: İstemciyi Kurmak.

use Gurmehub\Odemehub\Enum\Currency;
use Gurmehub\Odemehub\Request\{CreatePaymentLink, Item};

$created = $client->createPaymentLink(new CreatePaymentLink(
currency: Currency::TRY,
items: [new Item(name: 'Bağış', unitAmount: '100.00', quantity: 1, taxRate: '0')],
reference: 'LNK-1',
expiresAt: '2026-12-31',
));

$linkToken = $created->paymentLink->token; // saklayın
$created->paymentLink->checkoutUrl; // paylaşılacak adres
  • reference gönderilmezse LINK1, LINK2 … biçiminde üretilir. Referans tekil değildir: aynı reference ile yapılan her create-payment-link çağrısı yeni bir link ve yeni bir token açar; önceki linkler olduğu gibi kalır ve 422 dönmez. Var olan linki değiştirmek için update-payment-link kullanın. Yanıttaki token'ı saklayın ve linki token'la izleyin; retrieve-payment-links reference ile sorulduğunda o referanstaki bütün linkleri döndürür.
  • expires_at çalışma alanının saat dilimindeki son gündür; yanıtta o günün sonu ISO 8601 UTC olarak döner (2026-12-31 → 2026-12-31T20:59:59.999999Z, Türkiye saati için).

Tutar tipleri​

amount_type linkin tutarının nasıl belirlendiğini seçer:

amount_typeÖdenen tutarZorunlu alanlar
fixed (varsayılan)Kalemlerin toplamı.items
customÖdeyenin yazdığı tutar (0.01–10000000.00).item_name
predefinedpredefined_amounts listesinden seçilen tutar.item_name, predefined_amounts (1–10)
predefined_and_customListeden seçilen ya da ödeyenin yazdığı tutar.item_name, predefined_amounts (1–10)

fixed dışındaki tiplerde items yok sayılır; ödeme, adı item_name olan tek bir kalemden oluşur. KDV tax_rate ile verilir; tax_mode: inclusive (varsayılan) KDV'yi tutarın içinden ayırır, exclusive tutarın üstüne ekler (%20 ile 100.00 → 120.00 çekilir). Bu tiplerde linkin subtotal, tax_amount ve amount alanları null'dır; her ödemenin tutarı link ödemesinde döner.

use Gurmehub\Odemehub\Enum\{AmountType, Currency};
use Gurmehub\Odemehub\Request\CreatePaymentLink;

$created = $client->createPaymentLink(new CreatePaymentLink(
currency: Currency::TRY,
amountType: AmountType::PredefinedAndCustom,
itemName: 'Bağış',
predefinedAmounts: ['100.00', '250.00', '500.00'],
));

$created->paymentLink->amount; // null: tutarı ödeyen belirler

Para birimi seçimi​

currency_type: selectable ve currencies (en az bir para birimi) gönderilirse ödeyen, currency ve currencies içinden birini seçer; currency listeye her zaman eklenir. Tutarlar çevrilmez: kalem tutarları ya da belirlenen tutar, seçilen para biriminde aynı rakamla alınır. Varsayılan currency_type: fixed'dir; ödeme currency ile alınır. SDK örneği: create-payment-link (ikinci örnek).

Ödeyene e-posta​

emails_customer: true gönderilirse linkten yapılan her başarılı ödemeden sonra ödeyene, ödeme sayfasında verdiği e-posta adresine e-posta gönderilir. Varsayılan false'tur.

Bütün alanlar ve kurallar: create-payment-link.

2. Ödeme sayfası​

checkout_url yalnızca link ödenebilirken doludur: link açık (is_active: true), son geçerlilik günü geçmemiş ve Link ile Ödeme modülü açık. Bu koşullardan biri sağlanmıyorsa yanıtta checkout_url null'dır. Linkin her ödemesi is_test değerinin gösterdiği modda alınır.

3. Ödemeleri izlemek​

Linkten yapılan her ödeme bir link ödemesidir: LINKPAY1, LINKPAY2 … referanslı, kendi token'ı olan bir kayıt. Link ödemesi status: open ile açılır, bir deneme başarılı olunca paid olur; ödenen kalemleri, tutarları, uygulanan kuponu (discount), ödeyenin fatura adresini ve ödeyen işlemi taşır. Bir link ödemesinin her denemesi bir işlemdir ve işlemin reference değeri link ödemesinin referansıdır (LINKPAY1); linkin kendi referansı değildir. İşlem yanıtlarında ve payment_link.* webhook gövdelerinde payment_link.token ile birlikte link_payment.token gelir; SDK'larda linkPaymentToken (Python'da link_payment_token).

UçNe döner
retrieve-link-paymentsLink ödemeleri: token, LINKPAY{n} referansı ya da en fazla 7 günlük tarih aralığıyla. Her biri payment_link, kalemler, tutarlar, discount, customer ve ödeyen transaction ile döner.
retrieve-payment-linksLinkin hâli, son 50 deneme (yeniden eskiye) ve transactions_count.
retrieve-paymentsLINKPAY{n} referansıyla: o link ödemesinin bütün denemeleri. Token'la: tek bir denemenin güncel hâli.

Belirli bir linkin ödemelerini listelemek için retrieve-link-payments'ı tarih aralığıyla sorgulayıp sonuçları payment_link.token alanına göre ayırın:

use Gurmehub\Odemehub\Request\RetrieveLinkPayments;

$linkPayments = $client->retrieveLinkPayments(RetrieveLinkPayments::between('2026-09-26', '2026-10-02'))->linkPayments;

foreach ($linkPayments as $linkPayment) {
if ($linkPayment->paymentLink->token !== $linkToken || !$linkPayment->isPaid()) {
continue;
}

$linkPayment->reference; // LINKPAY1
$linkPayment->amount; // çekilen tutar, kupon düşülmüş
$linkPayment->currency; // ödenen para birimi
$linkPayment->transaction->token; // iade ve iptal bununla
}

Başarılı bir link ödemesi, işlemin token değeriyle refund-payment ve cancel-payment ile geri verilir.

4. Kapatmak, değiştirmek, yeniden açmak​

use Gurmehub\Odemehub\Request\UpdatePaymentLink;

$client->updatePaymentLink(new UpdatePaymentLink(token: $linkToken, isActive: false)); // kapat
$client->updatePaymentLink(new UpdatePaymentLink(token: $linkToken, isActive: true, expiresAt: '2027-01-31')); // süresi geçmiş linki yeniden aç
  • Yalnızca gönderilen alanlar değişir; items gönderilirse kalemlerin tamamı yenilenir ve sonraki ödemeler yeni tutarla alınır.
  • Link fixed tipte kalıyorsa ya da bu tipe dönüyorsa linkte kalem olmalıdır; seçimli tipten fixed'e dönen link items ile birlikte gönderilir, yoksa payment_link.items için En az bir kalem gönderilmeli. döner.
  • Son geçerlilik günü geçmiş bir linke bugün ya da sonrası bir expires_at (ya da expires_at: null) göndermek linki yeniden etkinleştirir; is_active göndermek gerekmez. Yeni tarih olmadan yalnızca is_active: true 422 döner.
  • Link üzerinde sonuçlanmamış bir ödeme olması değişikliği engellemez.