Subscription Yöntemi
Bir müşteri bu yöntemi seçtiğinde, sepetinde bulunan ne kadar periyodik ürün/hizmet varsa otomatik yenileme özelliği için etkinleştirilmiş olacaktır.
"Subscription" yöntemi "Third Party" ve "Merchant" yöntemleri ile aynı çalışmaktadır. Ek olarak sepetteki her bir öge için abonelik kimliği tanımlanmaktadır.
Abonelik Kimliği Atamak
Aşağıda belirtilen örnek kodu "capture", "area" , "callback" işlevlerinde kullanabilirsiniz. Abonelik kimliği, “Yönetim Paneli > Ürün/Hizmet Detay” sayfasında görünecektir.
if($items = $this->subscribable_items())
{
$subscribed = [];
foreach($items AS $item)
$subscribed[$item['identifier']] = 'Here Subscription ID';
if($subscribed) $this->set_subscribed_items($subscribed);
}
"subscribable_items" işlevinden dönen değer bir dizi döngüsüdür. Parametreler aşağıda belirlenmiştir:
İsim | Türü | Açıklama |
identifier | string | Abonelik kimliği tanımlanabilmesi için gereklidir. |
product_type | string | Ürünün türü (şunlar olabilir: 'hosting', 'server' , 'domain', 'software', 'special', 'sms') |
product_id | integer | Ürünün numarası |
period | string | Seçili periyodun türü (şunlar olabilir: 'hour','day','week','month','year') |
period_time | integer | Seçili periyodun zamanı |
name | string | Ürünün adı |
amount | float | Ürünün vergisiz ücreti |
tax_included | float | Ürünün vergi dahil ücreti |
tax_exempt | integer | Ürünün vergi muafiyeti varsa "1" değilse "0" |
tax_rate | integer | Vergi oranı |
currency | integer | Para birimi, "$this->currency()" işlevini kullanarak para birimi koduna dönüştürebilirsiniz. |
"set_subscribed_items"işlevi ile satın alınan hizmetlere abonelik kimliği tanımlanır. Gönderilecek parametre bir dizi olmalıdır. Dizinin anahtar değerine "subscribable_items" işlevinden geri dönen dizi döngüsünde elde ettiğiniz "identifier" değerini tanımlayın. Daha sonra dizinin değerine ödeme hizmeti sağlayıcısından elde ettiğiniz "abone kimlik numarasını" tanımlayın.
Değişkenler
Aşağıda belirtilen parametreler "get_subscription" , "cancel_subscription" , "change_subscription_fee" , "capture_subscription", işlevlerinde kullanılmaktadır.
İsim | Türü | Açıklama |
id | integer | Abone ID, veritabanı kimlik numarasıdır |
user_id | integer | Müşterinin ID numarası |
items | array | "subscribable_items" işlevinden elde edilen bilgiler |
status | string | Aboneliğin durumu, olabilecek değerler: (approved, active, suspended, cancelled, expired) |
status_msg | string | Aboneliğin durumu ile alakalı var ise mesaj |
identifier | string | Aboneliğin tanımlayıcı kimlik numarası |
currency | integer | Para Birimi, "$this->currency()" işlevini kullanarak para birimi koduna dönüştürebilirsiniz. |
first_paid_fee | float | İlk ödenen ücret |
last_paid_fee | float | Son ödenen ücret |
next_payable_fee | float | Sonraki ödenecek ücret |
last_paid_date | string | En son ödenen tarih, format: YYYY-MM-DD HH:ii:ss |
next_payable_date | string | Sonraki ödenecek tarih, format: YYYY-MM-DD HH:ii:ss |
created_at | String | İlk ödenen tarih, format: YYYY-MM-DD HH:ii:ss |
Abonelik Durumu
Aboneliğin durumu, tarihi ve ödenen tutar hakkında güncel bilgi edinmek için "get_subscription" işlevi kullanılır. Eğer bir hizmete abonelik kimliği tanımlanmışsa, işlevin kullanılması zorunludur.
Örnek
public function get_subscription($params=[])
{
$sub_id = $params["identifier"];
/*
* From here, you can send an API command to the payment service provider and report the status of the subscription according to the response you receive.
*/
return [
'status' => 'active',
'status_msg' => '',
'first_paid' => [
'time' => '2021-07-01 13:00:00',
'fee' => [
'amount' => 15,
'currency' => 'USD',
],
],
'last_paid' => [
'time' => '2021-08-01 13:00:00',
'fee' => [
'amount' => 15,
'currency' => 'USD',
],
],
'next_payable' => [
'time' => '2021-09-01 13:00:00',
'fee' => [
'amount' => 15,
'currency' => 'USD',
],
],
'failed_payments' => 0,
];
}
Yanıt
"get_subscription" işlevinden geri döndürülmesi gereken parametreler aşağıda açıklanmıştır:
İsim | Türü | Açıklama |
status | string | Aboneliğin durumu, olabilecek değerler: (approved, active, suspended, cancelled, expired) |
status_msg | string | Aboneliğin durumu ile alakalı var ise mesaj |
first_paid | array | Aboneliğin ilk başlama tarihi ve ücreti |
first_paid -> time | string | İlk ödenen tarih, format: YYYY-MM-DD HH:ii:ss |
first_paid -> fee | float | İlk ödenen ücret |
last_paid | array | Aboneliğin en son ödenme tarihi ve tutarı |
last_paid -> time | string | En son ödenen tarih, format: YYYY-MM-DD HH:ii:ss |
last_paid -> fee | float | En son ödenen ücret |
next_payable | array | Sonraki ödeme tarihi ve ücreti |
next_payable -> time | string | Sonraki ödenecek tarih, format: YYYY-MM-DD HH:ii:ss |
next_payable -> fee | float | Sonraki ödenecek ücret |
Failed_payments | integer | Başarısız ödeme sayısı |
Ödeme Tahsil Etmek
Eğer ödeme hizmeti sağlayıcınız ödeme tahsil etme özelliğini destekliyorsa, gününde ödenmeyen abonelikleri "capture_subscription" işlevi sayesinde tetikleyebilir ve hemen ödeme işlemi yürütebilirsiniz.
Örnek
İşleve gönderilen parametreler yukarıdaki "Değişkenler" bölümüne açıklanmıştır.
public function capture_subscription($params=[])
{
$sub_id = $params["identifier"];
$amount = $params["next_payable_fee"];
$curr = $params["currency"];
$request_fields = [
'note' => 'pay the remaining balance',
'currency' => $this->currency($curr),
'amount' => $amount,
];
$request = "failed";
if($request == "failed")
{
$this->error = 'Payment cannot be captured.';
return false;
}
return true;
}
Yanıt
Geri döndürülmesi gereken yanıt bir "boolean" olmalıdır.
Abonelik Ücreti Güncelleme
Eğer ödeme hizmeti sağlayıcınız abonelik ücretini güncellemeyi destekliyorsa, "change_subscription_fee" işlevini kullanabilirsiniz.
Ürünlere uygulanan ücret değişiklikleri ve döviz kurundaki değişikliklerden dolayı aboneliğin ücret bilgisi bu işlev sayesinde güncellenebilmektedir.
Abonelikteki her bir "öğe/kalem" için işlev çalıştırılmaktadır.
Örnek
$params > değişken içeriği Değişkenler başlığında açıklanmıştır. (array)
$value > tutar bilgisi (float)
$currency > para birimi kimliği (int)
public function change_subscription_fee($params=[],$value = 0,$currency=0)
{
$sub_id = $params["identifier"];
$request_fields = [
'sub_id' => $sub_id,
'amount' => $value,
'currency' => $this->currency($currency),
];
$request = 'failed';
if($request == 'failed')
{
$this->error = 'The subscription fee cannot change.';
return false;
}
return true;
}
Yanıt
Geri döndürülmesi gereken yanıt bir "boolean" veri türü olmalıdır.
Abonelik İptali
Aboneliğin iptal edilmesi durumunda "cancel_subscription" işlevi tetiklenmektedir.
Örnek
İşleve gönderilen parametreler yukarıdaki "Değişkenler" bölümüne açıklanmıştır.
public function cancel_subscription($params=[])
{
$sub_id = $params["identifier"];
/*
* From here you can send an API command to the payment service provider and, based on the response you receive, report the subscription cancellation.
*/
$request = 'CRITICAL ERROR';
if($request == 'CRITICAL ERROR')
{
$this->error = 'Subscription cannot be cancelled.';
return false;
}
return true;
}
Yanıt
Geri döndürülmesi gereken yanıt bir "boolean" veri türü olmalıdır.