Abonelik İptali

Zotlo üzerinden başlatılan aboneliklerin iptali için kullanılan servistir.

POST https://api.zotlo.com/v1/subscription/cancellation
Servise gönderilen abonenin durumunu sonlandırmak için kullanılır. Eğer servis ile birlikte force parametresi 1 olarak gönderilirse o anda abonelik sonlanır diğer durumlarda bitiş tarihine kadar hesabını kullanmaya devam edebilir.

Profile servisi için gönderilmesi gereken parametreler şunlardır :

Alan
Açıklama
subscriberId
Hesabının iptal edilmek istenildiği abone id'si.
packageId
Hesaba ait iptali gerçekleştirilecek paket id'dir. Gönderilmesi zorunlu alandır.
cancellationReason
Hesabın iptal nedeni.
force
Eğer hesap iptalinden sonra abonenin kullanımı hemen sonlandırmak istiyorsanız bu değeri 1 gönderiniz. Diğer durumlarda abone süresi bitene kadar hesabını kullanmaya devam edecektir..

Örnek İstek

Curl
Php
Java
Python
C#
1
curl --location --request POST 'https://api.zotlo.com/v1/subscription/cancellation' \
2
--header 'AccessKey: ***' \
3
--header 'AccessSecret: ***' \
4
--header 'Content-Type: application/json' \
5
--header 'Language: tr' \
6
--header 'ApplicationId: 2' \
7
--data-raw '{
8
"subscriberId":"Z113331",
9
"cancellationReason":"Not Interest",
10
"force":0,
11
"packageId":"zotlo.premium"
12
}'
Copied!
1
$curl = curl_init();
2
3
curl_setopt_array($curl, array(
4
CURLOPT_URL => "https://api.zotlo.com/v1/subscription/cancellation",
5
CURLOPT_RETURNTRANSFER => true,
6
CURLOPT_ENCODING => "",
7
CURLOPT_MAXREDIRS => 10,
8
CURLOPT_TIMEOUT => 0,
9
CURLOPT_FOLLOWLOCATION => true,
10
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
11
CURLOPT_CUSTOMREQUEST => "POST",
12
CURLOPT_POSTFIELDS =>"{\n\t\"subscriberId\":\"Z113331\",\n\t\"cancellationReason\":\"Not Interest\",\n\t\"force\":0,\n \"packageId\":\"zotlo.premium\"\n}",
13
CURLOPT_HTTPHEADER => array(
14
"AccessKey: ***",
15
"AccessSecret: ***",
16
"Content-Type: application/json",
17
"Language: tr",
18
"ApplicationId: 2"
19
),
20
));
21
22
$response = curl_exec($curl);
23
24
curl_close($curl);
25
echo $response;
Copied!
1
OkHttpClient client = new OkHttpClient().newBuilder()
2
.build();
3
MediaType mediaType = MediaType.parse("application/json");
4
RequestBody body = RequestBody.create(mediaType, "{\n\t\"subscriberId\":\"Z113331\",\n\t\"cancellationReason\":\"Not Interest\",\n\t\"force\":0,\n \"packageId\":\"zotlo.premium\"\n}");
5
Request request = new Request.Builder()
6
.url("https://api.zotlo.com/v1/subscription/cancellation")
7
.method("POST", body)
8
.addHeader("AccessKey", "***")
9
.addHeader("AccessSecret", "***")
10
.addHeader("Content-Type", "application/json")
11
.addHeader("Language", "tr")
12
.addHeader("ApplicationId", "2")
13
.build();
14
Response response = client.newCall(request).execute();
Copied!
1
import requests
2
3
url = "https://api.zotlo.com/v1/subscription/cancellation"
4
5
payload = "{\n\t\"subscriberId\":\"Z113331\",\n\t\"cancellationReason\":\"Not Interest\",\n\t\"force\":0,\n \"packageId\":\"zotlo.premium\"\n}"
6
headers = {
7
'AccessKey': '***',
8
'AccessSecret': '***',
9
'Content-Type': 'application/json',
10
'Language': 'tr',
11
'ApplicationId': '2'
12
}
13
14
response = requests.request("POST", url, headers=headers, data = payload)
15
16
print(response.text.encode('utf8'))
Copied!
1
var client = new RestClient("https://api.zotlo.com/v1/subscription/cancellation");
2
client.Timeout = -1;
3
var request = new RestRequest(Method.POST);
4
request.AddHeader("AccessKey", "***");
5
request.AddHeader("AccessSecret", "***");
6
request.AddHeader("Content-Type", "application/json");
7
request.AddHeader("Language", "tr");
8
request.AddHeader("ApplicationId", "2");
9
request.AddParameter("application/json", "{\n\t\"subscriberId\":\"Z113331\",\n\t\"cancellationReason\":\"Not Interest\",\n\t\"force\":0,\n \"packageId\":\"zotlo.premium\"\n}", ParameterType.RequestBody);
10
IRestResponse response = client.Execute(request);
11
Console.WriteLine(response.Content);
Copied!

Servis Cevapları

Eğer Abonelik Profili Varsa ve İptal Gerçekleştiyse :

1
{
2
"meta": {
3
"requestId": "6d2989e84793-REQ-5f32a93a80310",
4
"httpStatus": 200
5
},
6
"result": {
7
"profile": {
8
"status": "active",
9
"realStatus": "passive",
10
"subscriberId": "9",
11
"subscriptionType": "paid",
12
"startDate": "2020-08-10 21:57:25",
13
"expireDate": "2020-09-09 21:57:25",
14
"package": "zotlo-premium",
15
"country": "TR",
16
"phoneNumber": "+905555555555",
17
"language": "tr",
18
"originalTransactionId": "80397a95-742d-4c74-975e-f740d1909580",
19
"cancellation": {
20
"date": "2020-08-11 14:20:42",
21
"reason": "Not Interest",
22
"code": "CU00001"
23
},
24
"customParameters": {
25
"source": "Landing",
26
}
27
},
28
"package": {
29
"packageId": "zotlo-premium",
30
"price": 3.99,
31
"currency": "USD",
32
"packageType": "subscription",
33
"name": "Zotlo Premium"
34
},
35
"newPackage": null,
36
"card": {
37
"cardNumber": "411111******1111",
38
"expireDate": "12/20"
39
},
40
"customer": {
41
"id": 1,
42
"createDate": "2020-05-13 12:57:36",
43
"country": "TR",
44
"firstname": "Test",
45
"lastname": "Test",
46
"email": "[email protected]"
47
}
48
}
49
}
Copied!

Başarılı Cevap Parametreleri

Alan
Açıklama
status
Abonenin durumunu verir. active ya da passive değerlerini alabilir. Aktif ise abone haklarını kullanmaya devam edebilir. passive durumunda abonenin hakları sona ermiştir.
realStatus
Abonenin gerçek durumunu verir. active ya da passive değerlerini alabilir. Eğer kullanıcının hesabı bir şekilde iptal olduysa passive döner. Status değerinden farklı, status kullanıcının son kullanma tarihi gelene kadar active dönmeye devam edecektir.
subscriptionType
Kullanıcının aboneliğinin durumunu veren parametredir. trial ya da paid değerlerini alır. trial ise abone henüz deneme süresi içerisindedir. paid olduğunda da kullanıcı ücretli süreye geçmiş ve en az bir kere paket ücreti çekilmiş demektir.
startDate
Aboneliğinin başladı tarih
expireDate
Abonelik bitiş tarihi. Bu tarihte abonelik yenileme işlemleri yapılır. Eğer yapılamazsa abonelik sistem tarafından iptal edilir.
package
Aktif aboneliğinin olduğu paket
country
Kullanıcının ülkesi
language
Kullanıcının dili
cancellation
Eğer "null" ise kullanıcı hesabı aktif durumdadır. Eğer array şeklinde gelirse abonelik iptaline ait detaylar dönülür.
cancellation.date
Aboneliğin iptal edildiği tarih
cancellation.reason
Aboneliğin iptal nedeni
cancellation.code
Zotlo tarafından verilen abonelik iptaline ait durum kodudur. Abonelik iptal durum kodlarını aşağıda bulabilirsiniz.

İptal Durum Kodları

Kod
Açıklama
CP00001
Kullanıcının hesabında otomatik yenileme yapılamadığı için hesap iptal edilmiştir.
CU00001
Kullanıcı hesabını kendi isteği ile iptal etmiştir.
CU00002
İade işleminden sonra sistem tarafından otomatik iptal edilmiştir.

Hata Durumları

Ödeme servislerinden HTTP status code olarak başarılı durumlarda 200 dönmektedir. Başarısız durumlarda ise 400 ya da 500 Http StatusCode dönmektedir. Örnek hata cevabı aşağıdaki şekildedir.
1
{
2
"meta": {
3
"requestId": "MacBook-Pro.local-REQ-5e7da75228368",
4
"httpStatus": 400,
5
"errorMessage": "Kullanıcı abonelik profili bulunamadı.",
6
"errorCode": 400009
7
},
8
"result": []
9
}
Copied!
Cevap
Açıklama
requestId
Her request için sistem tarafından atanan id değeridir. Sistemsel hatalarda loglardan hata yakalamak için kullanılmaktadır.
httpStatus
Hatanın HttpStatusCode değeri
errorMessage
Hata mesajı. Tüm hata kodlarına Hata Kodları menüsünden ulaşabilirsiniz.
errorCode
İlgili hata için Zotlo tarafından verilen hata kodu.
Last modified 2mo ago