Ek Servisler
Taksit Yönetimi (Installment)
İş yeri taksit yönetimini kendi sistemleri üzerinden yapıyor ve bu yöntem ile devam etmek istiyorsa; Hepsipay’in backend’i üzerinden bağlanacağı servisi aşağıdaki standartları koruyarak sunması gerekmektedir.
Not: Taksit süreçlerini Craft gate üzerinden yürüten merchantlar, taksit ile ilgili herhangi bir geliştirme yapmak durumunda değiller. Eğer taksit yönetimini Merchant kendi sistemleri üzerinden yapacak ise merchant tarafından aşağıdaki şekilde bir servis sunulması gerekmektedir
curl --location 'http://demo2356202.mockable.io/Installement1-2-5OptionsExample' \
--header 'Content-Type: application/json' \
--data-raw '{
"binNumber" : "123456",
"orderNumber" : "123456-45698",
"customerEmail" : "test@hepsipay.com",
"customerGsm" : "05000000000"
}'
InputName | Type | Required | Description |
---|---|---|---|
binNumber | string | M | Kullanıcının seçtiği kartın bin numarasıdır. |
orderNumber | string | M | HepsipayFrameInit servisinde merchantın geçtiği MerchantOrderNumber bilgisidir. |
customerEmail | string | M | Müşterinin Hepsipay’da tanımlı eposta adresidir. |
customerGsm | string | M | Müşterinin Hepsipay’da tanımlı GSM numarasıdır. |
RewardAmount | int | O | Müşteriye verilecek ödül tutarıdır. |
{
"Installments": [
{
"Price": 1200,
"Force3ds": false,
"InstallmentsPriceDetails": [
{
"ActualInstallmentNumber": 1,
"DisplayInstallmentNumber": 1,
"InstallmentPrice": 1200,
"TotalPrice": 1200,
"PosAlias": "67-ykb-4676"
},
{
"ActualInstallmentNumber": 2,
"DisplayInstallmentNumber": 2,
"InstallmentPrice": 612,
"TotalPrice": 1224,
"PosAlias": "67-ykb-4676",
"InterestAmount": 24
},
{
"ActualInstallmentNumber": 3,
"DisplayInstallmentNumber": 4,
"InstallmentPrice": 312,
"TotalPrice": 1248,
"PosAlias": "67-ykb-4676",
"InterestAmount": 48
}
]
}
]
}
OutputName | Type | Required | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Price | int | M | Tutar bilgisidir. Örnek değer “1000”. (yani 10 TL) | ||||||||||||||||||||||||||||
force3d | boolean | M | İşlemin 3Ds ya da non-3Ds ile mi gerçekleşmesinin beklendiği bilgisini içerir. Örnek değer “true” | ||||||||||||||||||||||||||||
InstallmentPriceDetails | List | M | Taksit Listesi içerisindeki detay bilgileri içerir.
|
Webhook url (Push Notification)
Webhook Url bilgisi backend-to-backend işlem sonucunu üye işyerine bildirilmesi için kullanılan bir yöntemdir. Üye işyerine ait webhook url tanımı var ise üye işyerinin servisi çağırılır. Üye işyeri onboard edilirken bu bilgi üye işyerinden iletilmelidir. Non3d ya da 3d başarılı olduğunda webhook url bilgisi call edilir. Sizden istenen contract aşağıdaki gibidir.
Endpoint |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Method Type |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Request Example and Description | Example Request:
|
Ödeme Durumu (Payment Status)
Üye işyerinin HepsipayFrameInit aşamasında response bulunan token bilgisi, bir başka deyimle
merchantcallbackurl
adresine yapılan post çağrısında ki token değeri ile işlem sonucu sorgulanabilir.
Endpoint |
| |||||||||||||||||||||||||||||||||
Method Type |
| |||||||||||||||||||||||||||||||||
Request Example and Description | Example Request:
| |||||||||||||||||||||||||||||||||
Response Example and Description | Example Response:
| |||||||||||||||||||||||||||||||||
Endpoint |
| |||||||||||||||||||||||||||||||||
|
Olası “Status” değerleri :
Status | Name | Description |
---|---|---|
1 | Initialized | İşlem başlatıldı. |
2 | ThreeDInitialized | 3d akış başlatıldı. |
3 | ThreeDInitializeFailed | 3d akış başlatılamadı! |
4 | ThreeDSuccessfullyCompleted | 3d ödeme başarıyla tamamlandı. |
5 | NonThreeDSuccessfullyCompleted | Non3d ödeme başarıyla tamamlandı. |
6 | NonThreeDFailed | Non3d ödeme hata alındı. |
7 | ThreeDFailed | 3d ödeme hata alındı. |
8 | PartialRefundCompleted | Parçalı iade tamamlandı. |
9 | PartialRefundFailed | Parçalı iade hatası. |
10 | RefundCompleted | İade tamamlandı. |
11 | RefundFailed | İade hatası. |
12 | WalletPaymentCompleted | Cüzdan ile ödeme başarıyla tamamlandı. |
13 | WalletPaymentFailed | Cüzdan ile ödeme yapılamadı. |
14 | ShoppingLoanPaymentCompleted | Alışveriş kredisi ile ödeme başarıyla tamamlandı. |
15 | ShoppingLoanPaymentFailed | Alışveriş kredisi ile ödeme yapılamadı. |
Örnek Kodlar
try {
$header = ["Content-Type: application/json"];
$header = ["merchant-no: XXXXX"]; // Hepsipay tarafından iletilir.
$header = ["terminal-no: YYYYY"]; // Hepsipay tarafından iletilir.
$header = ["signature-no: e74ef7c4994cd3f5ff03f89a310cda8bcf29af12a39ebf1e7dbf27c99efe3784eb5eaaf4f535d666eb513620c8b66ec483a2dfa281c85bc2bb8ff18518f5cdf2"];
$ch = @curl_init("https://merchantpfpayment-gateway-qa.hepsipay.com/payment/61C820BA10FA367AE37052A13C180B5C328FEB0ED5CE30A6D0FBC45903222230B9888A3E2AD6C16B587675D68F9A28F5/status");
@curl_setopt($ch, CURLOPT_POST, false);
@curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
@curl_setopt($ch, CURLOPT_TIMEOUT, 10); //timeout in seconds
$result = curl_exec($ch);
if (@curl_errno($ch)) {
$error_msg = curl_error($ch);
@curl_close($ch);
throw new Exception($error_msg);
} else {
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($result, 0, $header_size);
$body = substr($result, $header_size);
if ($http_code === 401) {
throw new HepsiPaySDKException("Yetkisiz Erişim. " . $http_code);
}
$data = json_decode($result);
@curl_close($ch);
return $data;
}
} catch (Exception $e) {
throw new Exception($e->getMessage());
}
İade (Refund)
Endpoint |
| ||||||||||||||||||||||||
Method Type |
| ||||||||||||||||||||||||
Request Example and Description |
ya da
ya da basketItems ile partial refund
| ||||||||||||||||||||||||
Response Example and Description |
|
Örnek Kodlar
try {
$header = ["Content-Type: application/json"];
$header = ["merchant-no: 10019"]; // Hepsipay tarafından iletilir.
$header = ["terminal-no: 1019"]; // Hepsipay tarafından iletilir.
$header = ["signature-no: e74ef7c4994cd3f5ff03f89a310cda8bcf29af12a39ebf1e7dbf27c99efe3784eb5eaaf4f535d666eb513620c8b66ec483a2dfa281c85bc2bb8ff18518f5cdf2"];
$data_string = '{"refundAmount":100,"clientIp":"127.0.0.1","paymentId":"709840"}';
$ch = @curl_init("https://merchantpfpayment-gateway-qa.hepsipay.com/payment/refund");
@curl_setopt($ch, CURLOPT_POST, true);
@curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
@curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
@curl_setopt($ch, CURLOPT_TIMEOUT, 10); //timeout in seconds
$result = curl_exec($ch);
if (@curl_errno($ch)) {
$error_msg = curl_error($ch);
@curl_close($ch);
throw new Exception($error_msg);
} else {
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($result, 0, $header_size);
$body = substr($result, $header_size);
if ($http_code === 401) {
throw new Exception("Yetkisiz Erişim. " . $http_code);
}
$data = json_decode($result);
@curl_close($ch);
return $data;
}
} catch (Exception $e) {
throw new Exception($e->getMessage());
}