Faturalar
Faturaları gören, okuyan, ödeyen ve kupon uygulayan dört uç.
Genel Bakış
Fatura, hesabın borç belgesidir. Sipariş, yenileme ve bakiye yüklemesi hepsi fatura keser; ödeme de fatura üzerinden yapılır.
Her faturanın iki durumu vardır: kayıttaki ham durum ve müşteriye gösterilen durum. İkincisi vade tarihini de hesaba katar, yani ödenmemiş bir fatura vadesi geçtiğinde ayrı bir değer alır.
Ödeme burada da dar tutulmuştur: hesap bakiyesi ya da kayıtlı kart. Tarayıcı adımı isteyen ödeme yolları, kısmi ödeme ve havale bildirimi panelde kalır.
Referans
Faturaları Listeleme
Hesabın faturalarını aciliyet sırasıyla döndürür.
0.curl 'https://panel.ornek.com/api/v1/client/invoices?status=overdue' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/invoices?status=overdue', {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data, meta } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/invoices?status=overdue');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Iki durum alani vardir: suzgec MUSTERI durumunu alir, ham durum vadesi gecmisi ayirmaz.
$rows = Kernel::internal('client:Invoices/GetInvoices',
['owner_id' => $uid, 'status' => 'overdue'])['data'];Faturayı Okuma
Faturanın kalemlerini, müşteri kaydını, özetini ve ödemelerini döndürür.
curl 'https://panel.ornek.com/api/v1/client/invoices/1193' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/invoices/${id}`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
if (data.payable && ! data.subscription_locked) enablePayButton();$ch = curl_init('https://panel.ornek.com/api/v1/client/invoices/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Faturadaki musteri kaydi KESIM ANININ fotografidir; guncel profille karsilastirip duzeltmeye calismayin.
$inv = Kernel::internal('client:Invoices/GetInvoice', ['owner_id' => $uid, 'id' => $id])['data'];
$thenAddress = $inv['billed_to']['address'];Faturayı Ödeme
Açık bir faturayı bakiyeyle ya da kayıtlı kartla kapatır.
curl -X POST 'https://panel.ornek.com/api/v1/client/invoices/1193/pay' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"payment":{"method":"balance"}}'const res = await fetch(`https://panel.ornek.com/api/v1/client/invoices/${id}/pay`, {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ payment: { method: 'card' } }),
});
const { data } = await res.json();
if (data.payment.status === 'failed') showError(data.payment.error);$ch = curl_init('https://panel.ornek.com/api/v1/client/invoices/' . $id . '/pay');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['payment' => ['method' => 'balance']]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// KART REDDI hata degildir: yanit basarili doner, fatura komisyonuyla acik kalir, durumu okuyun.
$r = Kernel::internal('client:Invoices/PayInvoice',
['owner_id' => $uid, 'id' => $id, 'payment' => ['method' => 'card']])['data'];
if ($r['payment']['status'] === 'failed') $retryLater($id);Faturaya Kupon Uygulama
Açık bir faturaya kupon uygular ve belgeyi yeniden fiyatlar.
curl -X POST 'https://panel.ornek.com/api/v1/client/invoices/1193/coupon' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"code":"WELCOME10"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/invoices/${id}/coupon`, {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ code }),
});
const { data } = await res.json();
showNewTotal(data.invoice.total, data.discount);$ch = curl_init('https://panel.ornek.com/api/v1/client/invoices/' . $id . '/coupon');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['code' => $code]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kuponu ODEMEDEN ONCE uygulayin: belge kapandiktan sonra degistirilemez, iade yolu yoktur.
Kernel::internal('client:Invoices/ApplyInvoiceCoupon',
['owner_id' => $uid, 'id' => $id, 'code' => $code]);
Kernel::internal('client:Invoices/PayInvoice',
['owner_id' => $uid, 'id' => $id, 'payment' => ['method' => 'balance']]);Tuzaklar
Ödeme ucu kart reddedildiğinde de başarılı yanıt verir: fatura açık kalır ve seçilen yöntemin komisyonu belgenin üzerinde durur. Sonucu yanıttaki ödeme durumundan okuyun. Aynı faturayı başka bir yöntemle ödemeye kalkarsanız komisyon farkını da hesaba katın.
Bir ödeme sağlayıcısı aboneliği bu faturayı tahsil ediyorsa ödeme ucu reddeder. Bu bir hata değil, çifte tahsilata karşı bir kapıdır. Detaydaki abonelik alanını okuyup ödeme butonunu kapatın; elle ödemek için önce aboneliği iptal etmek gerekir.
Fatura, müşteri kaydını üzerinde saklar: adres, vergi numarası ve unvan kesim anındaki hâliyle durur. Profil sonradan değişse belge değişmez, çünkü resmi bir kayıttır. Güncel profille karşılaştırıp tutarsızlık raporlamayın.
Bir faturaya yalnız bir kupon uygulanır ve bu ancak belge açıkken olur. Ödendikten sonra kupon uygulamak reddedilir, geri alma yolu da yoktur. Kupon deneyecekseniz ödeme çağrısından önce yapın.
Cüzdana para yüklemek için kesilen fatura cüzdanla ödenemez; döngüsel olurdu. Bu fatura kayıtlı kartla ya da panelden ödenir. Genel bir ödeme akışı yazıyorsanız bu hatayı ayrı ele alın.
Ham durum kayıttaki değerdir; müşteriye gösterilen durum vade tarihini de hesaba katar. Ödenmemiş bir fatura vadesi geçtiğinde yalnız ikincisi değişir. Süzgeç müşteri durumunu alır, yani vadesi geçenleri ham durumla arayamazsınız.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.