İade
Zotlo üzerinden yapılan satın almalar ve aboneliklerle ilgili iade işlemleri için kullanılacak servistir.
POST https://api.zotlo.com/v1/payment/refund
İade yapılmak istenen ödemeye ait transactionId değeri gönderilerek o ödemenin yapıldığı sağlayıcı üzerinden iade işlemi sistem tarafından yapılır.
DIKKAT! İadesi yapılan ödeme bir abonelik ödemesiyse, bu servisle iade işlemi yapıldıktan sonra abonelik de otomatik olarak iptal edilir.

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

Alan
Açıklama
Zorunlu
transactionId
İadesinin yapılmasının istenildiği transactionId değeri.
Evet
refundReason
İadenin yapılma nedeni
Hayır
refundUser
İade işlemini yapan kullanıcı bilgileri
Hayır

Örnek İstek

Curl
Php
Swift
Java
Python
C#
1
curl --location --request POST 'https://api.zotlo.com/v1/payment/refund' \
2
--header 'AccessKey: ***' \
3
--header 'AccessSecret: ***' \
4
--header 'Content-Type: application/json' \
5
--header 'Language: tr' \
6
--header 'ApplicationId: *' \
7
--header 'Content-Type: application/json' \
8
--data-raw '{
9
"transactionId":"fc50fb57-45f1-4149-ae57-7b9c9bbd77ec",
10
"refundReason":"Beğenmedim"
11
12
}'
Copied!
1
$curl = curl_init();
2
3
curl_setopt_array($curl, array(
4
CURLOPT_URL => "https://api.zotlo.com/v1/payment/refund",
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 =>"{\"transactionId\":\"fc50fb57-45f1-4149-ae57-7b9c9bbd77ec\",\"refundReason\":\"Beğenmedim\"\n}",
13
CURLOPT_HTTPHEADER => array(
14
"AccessKey: ***",
15
"AccessSecret: ***",
16
"Content-Type: application/json",
17
"Language: tr",
18
"ApplicationId: *",
19
"Content-Type: application/json"
20
),
21
));
22
23
$response = curl_exec($curl);
24
25
curl_close($curl);
26
echo $response;
Copied!
1
import Foundation
2
3
var semaphore = DispatchSemaphore (value: 0)
4
5
let parameters = "{\"transactionId\":\"fc50fb57-45f1-4149-ae57-7b9c9bbd77ec\",\"refundReason\":\"Beğenmedim\"\n}"
6
let postData = parameters.data(using: .utf8)
7
8
var request = URLRequest(url: URL(string: "https://api.zotlo.com/v1/payment/refund")!,timeoutInterval: Double.infinity)
9
request.addValue("***", forHTTPHeaderField: "AccessKey")
10
request.addValue("***", forHTTPHeaderField: "AccessSecret")
11
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
12
request.addValue("tr", forHTTPHeaderField: "Language")
13
request.addValue("*", forHTTPHeaderField: "ApplicationId")
14
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
15
16
request.httpMethod = "POST"
17
request.httpBody = postData
18
19
let task = URLSession.shared.dataTask(with: request) { data, response, error in
20
guard let data = data else {
21
print(String(describing: error))
22
return
23
}
24
print(String(data: data, encoding: .utf8)!)
25
semaphore.signal()
26
}
27
28
task.resume()
29
semaphore.wait()
Copied!
1
OkHttpClient client = new OkHttpClient().newBuilder()
2
.build();
3
MediaType mediaType = MediaType.parse("application/json,application/json");
4
RequestBody body = RequestBody.create(mediaType, "{\"transactionId\":\"fc50fb57-45f1-4149-ae57-7b9c9bbd77ec\",\"refundReason\":\"Beğenmedim\"\n}");
5
Request request = new Request.Builder()
6
.url("https://api.zotlo.com/v1/payment/refund")
7
.method("POST", body)
8
.addHeader("AccessKey", "***")
9
.addHeader("AccessSecret", "***")
10
.addHeader("Content-Type", "application/json")
11
.addHeader("Language", "tr")
12
.addHeader("ApplicationId", "*")
13
.addHeader("Content-Type", "application/json")
14
.build();
15
Response response = client.newCall(request).execute();
Copied!
1
import requests
2
3
url = "https://api.zotlo.com/v1/payment/refund"
4
5
payload = "{\"transactionId\":\"fc50fb57-45f1-4149-ae57-7b9c9bbd77ec\",\"refundReason\":\"Beğenmedim\"\n}"
6
headers = {
7
'AccessKey': '***',
8
'AccessSecret': '***',
9
'Content-Type': 'application/json',
10
'Language': 'tr',
11
'ApplicationId': '*',
12
'Content-Type': 'application/json'
13
}
14
15
response = requests.request("POST", url, headers=headers, data = payload)
16
17
print(response.text.encode('utf8'))
Copied!
1
var client = new RestClient("https://api.zotlo.com/v1/team/package");
2
client.Timeout = -1;
3
var request = new RestRequest(Method.GET);
4
request.AddHeader("AccessKey", "***");
5
request.AddHeader("AccessSecret", "***");
6
request.AddHeader("ApplicationId", "*");
7
request.AddHeader("Language", "tr");
8
IRestResponse response = client.Execute(request);
9
Console.WriteLine(response.Content);
Copied!

İade İşlemi Başarılı Şekilde Gerçekleşti

1
{
2
"meta": {
3
"requestId": "MacBook-Pro.local-REQ-5e7cfe003eeb0",
4
"httpStatus": 200
5
},
6
"result": {
7
"providerResponse": {},
8
"transaction": {
9
"id": 105,
10
"payment_type": "subscription",
11
"original_transaction_id": "1a2b9bf3-b35a-4ac5-a3cd-fa39a68fc487",
12
"transaction_id": "1a2b9bf3-b35a-4ac5-a3cd-fa39a68fc487",
13
"package_id": "zotlo.premium",
14
"team_id": 1,
15
"app_id": 1,
16
"status": "trial",
17
"create_date": "2020-03-24 12:18:14",
18
"purchase_date": "2020-03-24 12:18:14",
19
"original_purchase_date": "2020-03-24 12:18:14",
20
"price": 0.01,
21
"currency": "TRY",
22
"country": "TR",
23
"expire_date": "2020-03-27 12:18:14",
24
"subscriber_id": "ZTL-0001223333",
25
"credit_card": "",
26
"refund_price": 0.01,
27
"refund_date": "2020-03-26 19:09:57",
28
"refund_reason": "Beğenmedim",
29
"is_refund": 1,
30
"provider_id": 1
31
}
32
}
33
}
Copied!

Başarılı Cevap Parametleri

Alan
Açıklama
providerResponse
Ödeme sağlayıcı tarafından dönülen iade cevabıdır.
transaction
İade edilen ödemeye ait son bilgiler dönülür.

Hata Durumları

İade 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-5e7cf5bbd892e",
4
"httpStatus": 400,
5
"errorMessage": "İadesini yapmak istediğiniz sipariş numarasına ait satınalma daha önce iade edilmiştir.",
6
"errorCode": 400014
7
},
8
"result": []
9
}
Copied!
Cevap
Açıklama
requestId
Her istek için sistem tarafından atanan id değeridir. Sistemsel hatalarda log'lardan hata yakalamak için kullanılır.
httpStatus
Hatanın HTTP durum kodu 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