Entegrasyon
Backend Entegrasyonu
Checkavailability

Checkavailability

Ödeme sayfasına gelir gelmez kullanıcının Hepsipay hesabının olup olmadığını telefon numarası veya email üzerinden kontrol edilmesi gerekir. Kullanıcının Hepsipay hesabı olması durumunda kullanıcı doğrulanır ve beraberinde HepsipayFrameInit servisi çağrılır.

Endpoint

/v2/hepsipayframe/checkavailability

Method Type

POST

Request Example

{
    "Amount": 1200,
    "AccountKey": "905551112233",
    "MerchantCallBackUrl": "https://www.Hepsipay.com",
    "BasketItems": [
{
    "Product": "Çikolata",
    "Price": 1200,
    "SubMerchantMemberId": 2,
    "SubMerchantMemberPrice": 100,
    "ExternalId": "12345",
    "CategoryId": "987"
}
    ],
    "IsGuestUser": false,
    "Force3ds": false,
    "AllowedInstallments": [1,2,3],
    "MerchantOrderNumber": "1234"
}

InputName

Type

Required

Description

Amount

int

M

Tutar bilgisi

AccountKey

string

M

İşlem yapılan gsm no ve email bilgisidir

MerchantCallBackUrl

string

M

İşlem sonucunun üye işyerine iletilmesi için gerekli link bilgisi.

BasketItems

List<Product>

M

Sepet içerisindeki ürün bilgileri(Sepet içerisindeki toplam değer price amount a eşit olmalıdır).

OutputName

Type

Required

Description

Product

string

M

Ürün bilgisi

Price

int

M

Ürün tutar bilgisi

SubMerchantMemberId

int?

O

Merchant bir pazar yeri ise satıcının Craftgate üye ID zorunludur.

SubMerchantMemberPrice

int?

O

Merchant bir pazaryeri ise sepete eklenen ürün için satıcının hakediş tutarı bilgisi zorunludur.

CategoryId

string

M

Merchant tarafında satılan ürünün kategori identity bilgisidir. Örnek: "0002131" Kodu: 0002131 Kategori Kodu Açıklaması: Tekstil

ExternalId

string

O

İlgili ürün ya da hizmeti ifade eden dış ID değeri. Genellikle üye işyeri sistemind e bu kırılıma ilişkin ID değeri kullanılır.

IsGuestUser

bool

O

Kullanıcı misafir(üye işyeri sistemine giriş yapmamış) ise bu alan true gönderilmelidir

Force3ds

bool

O

Üye işyeri ödeme adımının 3d ile gerçekleşmesini istiyorsa bu alan true gönderilmelidir.

AllowedInstallments

List<int>

O

Üye işyerinin izin vermiş olduğu taksit sayıları.

MerchantOrderNumber

string

O

Üye işyerine ait sipariş numarası.


Response Example

Example Success Response:
{
    "Success": true,
    "MessageCode": "0000",
    "Message": "İşlem Başarıyla Gerçekleştirildi.",
    "UserMessageTitle": null,
    "UserMessage": "İşlem Başarıyla Gerçekleştirildi.",
    "IsAccountAlreadyLinked": true
}
⚠️
Example Fail Response:
{
    "Success": false,
    "MessageCode": "2001",
    "Message": "Cüzdan Bulunamadı!",
    "UserMessageTitle": null,
    "UserMessage": "İşleminiz şu anda gerçekleştirilemiyor. Lütfen daha sonra tekrar deneyiniz.",
    "IsAccountAlreadyLinked": false
}
OutputNameTypeRequiredDescription
SuccessbooleanMDefault alanlarımızdandır.İşlemin başarılı gerçekleşip gerçekleşmediği bilgisidir. True ise başarılı gerçekleşmiş ve kullanıcının Hepsipay müşterisi ve saklı kartı olduğunu belirtir. False ise o halde Hepsipay müşterisi olmadığını belirtir.
IsAccountAlreadyLinkedbooleanMMüşterinin o merchantla linklenip linklenmediği bilgisidir. Eğer Guest user olarak gelen bir müşteri ise hiçbir zaman müşteri o merchantla linklenmez. Eğer kullanıcı, o merchantta registered olarak en az bir kere gelmiş ise tekrar tekrar OTP atılmayacağı (90 güne kadar) belirtilmesi için bu değeri merchanta bilgi amaçlı iletiyoruz.
MessageCodestringMDefault alanlarımızdandır.Request’in sonucu success:true ise o halde 000 değeri gelecektir. Aksi taktirde Hepsipay sistemi tarafından uygun hata kodları dönecektir. İşlemin başarısız olduğunda hangi hata kodu ile sonlandığını belirtir.
MessagestringMDefault alanlarımızdandır.Hepsipay tarafından hata koduna bağlı olarak hata mesajı olarak dönülmektedir. İşlemin gerçekte hangi durumdan dolayı hata verdiği gösterilir. Örnek değer “Cüzdan Bulunamadı.”
UserMessageTitlestringODefault alanlarımızdandır.User’a verilecek mesajın başlık bilgisidir.Genelde null değeri dönecektir.
UserMessagestringMDefault alanlarımızdandır.User’a verilmesi istenen hata mesajıdır. Örneğin Message alanında “Cüzdan Bulunmadı” hatası geldiğinde user için göserilebilecek bu değer “İşleminiz şu anda gerçekleştirilemiyor. Lütfen daha sonra tekrar deneyiniz.” Şeklinde gelecektir.

Ö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"];
 
    $data_string = '{"Amount":1000,"AccountKey":"905998868296","MerchantCallBackUrl":"http:\/\/hepsipaysdk.entegrasyon.alttantire.local\/examples\/payment_result.php","BasketItems":[{"Product":"\u00c7ikolata","Price":500,"SubMerchantMemberId":null,"SubMerchantMemberPrice":null,"CategoryId":"3","ExternalId":"10"},{"Product":"\u00c7ikolata","Price":500,"SubMerchantMemberId":null,"SubMerchantMemberPrice":null,"CategoryId":"3","ExternalId":"10"}],"AllowedInstallments":[1,2,3],"FrameType":1,"MerchantOrderNumber":"1234-56797","BankOrderId":"ABC-123-4567","ExternalId":"EXT-ID-123-4567"}';
 
    $ch = @curl_init("https://merchantpfpayment-gateway-qa.hepsipay.com/v2/hepsipayframe/checkavailability");
 
    @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());
}