Fatura Durumu ve Bildirimleri
Faturanın durumunu, müşteri bilgisini ve müşteriye giden bildirimleri yöneten beş uç.
Genel Bakış
Bu beş uç kesilmiş bir faturanın yaşamını yürütür: durumunu değiştirmek, müşteri bilgilerini düzeltmek, bildirim göndermek, resmileştirmek ve hatırlatmak.
Durum değişimi bu alandaki en ağır işlemdir. Ödenmiş yapmak gelir kaydı açar, ödenmiş fatura numarası verir ve bağlı hizmetleri harekete geçirir; iade etmek bunları geri sarar ve istenirse ödeme modülüne iade emri verir.
Üç uç müşteriye posta gönderir: bildirim, hatırlatma ve dosyası varken resmileştirme. Bir betikte bunları çağırırken gerçek insanlara ulaştığınızı unutmayın.
Referans
Durumu Değiştirme
Faturanın durumunu değiştirir ve durumun getirdiği işleri yürütür.
paid, unpaid, refund ya da cancelled.curl -X PUT 'https://panel.ornek.com/api/v1/admin/invoices/1212/status' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"status":"paid","payment_method":"Balance","notify":true}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/invoices/${id}/status`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
status: 'paid',
payment_method: 'Balance',
notify: true,
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/' . $id . '/status');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'status' => 'paid',
'payment_method' => 'Balance',
'notify' => true,
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Odenmis yapmak GELIR KAYDI acar, numara verir ve hizmetleri harekete gecirir.
Api::Invoices()->UpdateInvoiceStatus([
'id' => $id,
'status' => 'paid',
'notify' => true,
]);Müşteri Bilgilerini Düzeltme
Faturaya donmuş müşteri ve adres bilgilerini düzeltir. Gönderdiğiniz adres saklı adresle birleşir: göndermediğiniz anahtarlar korunur, belgenin okuduğu ülke, il, ilçe ve posta kodu adları yeniden kurulur.
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/invoices/1212/client-details' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"kind":"corporate","company_name":"Ornek A.S.","tax_number":"0000000000"}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/invoices/${id}/client-details`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
kind: 'corporate',
company_name: 'Example Inc.',
tax_number: '000000000',
address: { detail: '123 Market Street', country_id: 840, zipcode: '94105' },
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/' . $id . '/client-details');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'kind' => 'corporate',
'company_name' => 'Example Inc.',
'tax_number' => '000000000',
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu uc CANLI musteriye DOKUNMAZ; yalniz bu faturanin uzerindeki kopyayi duzeltir.
Api::Invoices()->UpdateInvoiceClientDetails([
'id' => $id,
'company_name' => 'Example Inc.',
]);Bildirim Gönderme
Fatura için seçtiğiniz bildirim şablonunu müşteriye gönderir.
curl -X POST 'https://panel.ornek.com/api/v1/admin/invoices/1231/notifications' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"template":"invoice-created"}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/invoices/${id}/notifications`, {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ template: 'invoice-created' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/' . $id . '/notifications');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['template' => 'invoice-created']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kapali bir sablon 422 verir; ekranda gorunen liste ETKIN olanlari gostermez.
Api::Invoices()->SendInvoiceNotification([
'id' => $id,
'template' => 'invoice-created',
]);Resmileştirme
Faturayı resmî faturaya çevirir.
curl -X POST 'https://panel.ornek.com/api/v1/admin/invoices/1231/formalize' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"notify":false}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/invoices/${id}/formalize`, {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ notify: false }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/' . $id . '/formalize');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['notify' => false]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Ikinci cagri 422 verir; toplu bir betikte once faturanin durumunu okuyun.
$inv = Api::Invoices()->GetInvoice(['id' => $id])['data'];
if (! $inv['formalized']) Api::Invoices()->FormalizeInvoice(['id' => $id]);Hatırlatma Gönderme
Ödenmemiş fatura için müşteriye hatırlatma gönderir. Müşteriye ulaşamazsa hiçbir şey kaydetmez ve durum kodu yine 200 olur.
invoice-reminder'dır ve bunu değiştirecek bir alan yoktur.true: sahip, ek iletişim adresi ya da alt kullanıcı, gönderildi ya da kuyrukta. Yalnız personele giden kopya sayılmaz.reminded false iken: disabled, blocked, opted_out, client_side_off, send_failed ya da no_recipients.reminded false iken: reason'ın İngilizce açıklaması.curl -X POST 'https://panel.ornek.com/api/v1/admin/invoices/1231/remind' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/invoices/${id}/remind`, {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/' . $id . '/remind');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Cagri KAC KEZ yapildigini saymaz; ayni faturaya arka arkaya hatirlatma gonderebilir.
Api::Invoices()->RemindInvoice(['id' => $id]);Tuzaklar
Ödenmiş yapmak gelir kaydı açar, ödenmiş fatura numarası verir ve faturaya bağlı hizmetleri harekete geçirir. İade etmek bunları geri sarar, metrik kayıtlarını çözer ve istenirse ödeme modülüne iade emri verir. Test ederken bunu gerçek bir müşteri faturası üzerinde denemeyin.
Fatura zaten o durumdaysa çağrı reddedilir. Tek istisna ödenmiş bir faturada ödeme yöntemini değiştirmektir; orada durum aynı kalır ve yalnız yöntem yazılır. Durumları eşitleyen bir betik yazıyorsanız önce mevcut durumu okuyun.
Bu uç faturanın üzerine donmuş kopyayı düzeltir; canlı müşteri kaydına dokunmaz. Bir adres yanlışsa iki yerde de düzeltilmesi gerekebilir: burada geçmiş belge için, müşteri kaydında gelecek belgeler için. Buradan yapılan düzeltme diğer faturalara da yansımaz.
Zaten resmî bir faturayı yeniden resmileştirmek hata verir. Toplu bir betikte bu, ilk hatada duran bir döngüye yol açar; her fatura için önce durumu okuyun. Bir kanca da resmileştirmeyi engelleyebilir, çünkü bazı kurulumlarda bunun muhasebe tarafında karşılığı vardır.
Hatırlatma ucu kaç kez çağrıldığını tutmaz ve arka arkaya çağrıldığında aynı müşteriye üst üste posta gider. Vadesi geçenleri gezen bir betik yazarken hangi faturaya ne zaman hatırlatma gittiğini kendi tarafınızda saklayın; yoksa her koşuda herkes yeniden uyarılır.
İ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.