HepsipayFrameInit
Üye iş yerinin Hepsipay ile ödeme akışını başlatma noktası olup Hepsipay ile Ödeme ekranını Hosted veya Redirected (Common Payment Page) olarak çağırmak için tetiklenen servistir. Üye iş yeri ödeme akışını başlatabilmek için gerekli ön bilgileri bu servis üzerinden gönderir.
Üye işyerinin Hepsipay ile ödeme akışını başlatma noktasıdır.
Endpoint |
|
Method Type |
|
Request Example |
|
İşyeri ödeme için akışı başlatmak için gerekli ön bilgileri bu servise gönderir.
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. Bu url ile gönderilecek hepsipay tarafından
gönderilecek payload şu şekilde olmalı :
payload: | ||||||||||||||||||||||||||||
BasketItems | List | M | Sepet içerisindeki ürün bilgileri(Sepet içerisindeki toplam değer price amount a eşit olmalıdır).
| ||||||||||||||||||||||||||||
IsGuestUser | bool | O | Kullanıcı misafir(üye işyeri sistemine giriş yapmamış) ise bu alan true gönderilmelidir. IsGuestUser “T” olarak gönderildiğinde hep tek seferlik session token üretiriz ve kullanıcı/müşteri her geldiğinde sms otp doğrulaması Hepsipay tarafından yapılır. Hepsipay tarafında ilk kez registered olarak gelen(IsGuestUser : True) ve ilk kez SMS OTP ile doğrulama yapıldıktan sonra Hepsipay tarafında tutulan “AccountAlreadyLinked” değeri True olarak setlenir ve bu bilgi CheckAvailability servisinde de response’ta dönülür. ) Ancak IsGuestUser : | ||||||||||||||||||||||||||||
Force3ds | bool | O | Üye işyeri ödeme adımının 3d ile gerçekleşmesini istiyorsa bu alan true gönderilmelidir. | ||||||||||||||||||||||||||||
AllowedInstallments | List | O | Üye işyerinin izin vermiş olduğu taksit sayıları. | ||||||||||||||||||||||||||||
MerchantOrderNumber | string | O | Üye işyerine ait sipariş numarası. | ||||||||||||||||||||||||||||
FrameType | int | O | Frame tipidir. Default değeri frameType:1 (hosted)'dır. FrameType: 1 (hosted - Merchant checkout ekranın içine render olacak şekilde stiller uygulanır.) FrameType: 2 (redirected (Common Payment Page) - Merchant checkout ekranında render olmaz harici sayfada ödeme alınır.) | ||||||||||||||||||||||||||||
CheckoutMerchantUrl | string | O | Merchant'ın ödeme sayfasının adres bilgisidir. FrameType : 2 (redirected) olduğunda gönderimi zorunludur. | ||||||||||||||||||||||||||||
BankOrderId | string | O | Merchant’ın bankaya iletilmesini istediği unique bilgidir. Şipariş numarası gibi bilgiler bu alanda gönderilebilir. | ||||||||||||||||||||||||||||
PosAlias | string | O | Her bir işlemi istediği postan geçirebilmek üzere bu alan kullanılmalıdır. Buraya geçilecek bilgi ile servis providerda tanımlı POS Alias bilgilerinin uyuşuyor olmasına dikkat edilmelidir. | ||||||||||||||||||||||||||||
ExternalId | string | O | İşyeri tarafından belirlenebilecek external bir değerdir. Genellikle poliçe/teklif numarası gibi bilgilere sahip olan işyerleri tarafından kullanılabilecek bir değerdir. Eğer bu değer girilmiş ve servise provider Craftgate ise Craftgate’deki external id’ye karşılık gelir. Alan doldurulursa, bu değer Craftgate üye işyeri panelinden “externalid” alanından izlenebilir. Kullanılmazsa Craftgate’de Hepsipay tarafından oluşturulmuş HP referans numarası izlenebilir. |
Description |
|
OutputName | Type | Description |
---|---|---|
FrameUrl | string | Yüklenecek frame linki |
Token | string | Sorgulamalarda kullanabilecek işlem tokenidir. |
Ö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/init");
@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());
}
iFrame olarak Kullanım
Eğer işyeri mevcut checkout ekranlarında Hepsipay ile Ödemeyi alternatif bir ödeme yöntemi olarak sunmak istiyor ise o halde HepsipayFrameInit servisini çağırırken FrameType : 1 olarak geçmelidir. Bu değer geçilmese de default olarak “1” değeriyle frame init olur. İşyerinin kendi checkout sayfasında embedded şekilde Hepsipay Frame’inin yerleştirilmesi sağlanmalıdır. Bu seçenekle ilerlendiğinde UI/UX organizasyonu işyeri tarafından yapılmalıdır.
(UI/UX entegrasyonu konusunda daha detaylı bilgi için dokümandaki “Hepsipay Frontend / UI Entegrasyonu – WEB SDK” ve “Hepsipay Frontend / UI Entegrasyonu – Embed Iframe with JS Events” başlıklarını inceleyebilirsiniz.)
Common Payment Page (Redirected) olarak Kullanım
Eğer işyerinin bir checkout sayfası yok ve hepsipay frame’i ana ödeme sayfası olarak görüntülemek istiyorsa (yani alternatif bir ödeme seçeneği değil ana ödeme yapısı olarak Hepsipay’in ekranlarının açılması isteniyorsa) o halde işyeri, ödemenin alınacağı sayfada önce “Checkavailability” servisi çağrılır ve bu servis sonucunda “true” değer alınmışsa sonrasında HepsipayFrameInit servisini çağırmalıdır. HepsipayFrameInit servisini çağırırken FrameType : 2 olarak geçilmelidir.
Bu şekilde FrameType : 2 olarak çağrılan HepsipayFrameInit servis sonucunda gelen URL direkt olarak redirect edilerek yeni bir pencerede açılacaktır. Bu yöntem (Common Payment Page) sadece Web Browser üzerinden kullanılabilmektedir, native mobil uygulama üzerinde kullanılamayacaktır (mobilde browser üzerinden açılan web uygulaması değilse).
Common Payment Page yöntemiyle açılan Hepsipay ödeme sayfasında kullanıcının ödemeyi
sonlandırması (başarılı/başarısız) sonucunda, Hepsipay ödeme sayfası kapatılır ve
“CheckoutMerchantUrl”
parametresi ile belirtilen adrese (sipariş özeti sayfası vb.) yönlendirilir.
Yine bu yöntemle ilerlendiğinde işyerinin backend’ine ödeme sonuç bildirimi senkron olarak
“MerchantCallbackURL”
input parametresinde işyerinin geçtiği endpoint üzerinden yapılmaktadır.