Non-Secure / 2D Ödeme
Ödeme API'si, sipariş ve kredi kartı ayrıntı bilgilerini paybull ödeme entegrasyon sistemine göndermek için kullanılır. Üye işyeri web sitesi, ödeme sayfasını yüklemeden hemen ödeme durumunu almalıdır. API başarı durumuna göre, alışveriş sepeti ve sipariş durumu buna göre değiştirilmelidir.
Token API dönüşü (is_3d) 1 ise, üye iş yeri web sitesinin kullanıcının 2D veya 3D'yi seçmesi için bir onay kutusu görüntülemesi gerekir.
Method |
API Uç Noktası (Endpoint) |
İçerik-Türü |
POST |
/api/paySmart2D |
application/json |
Parametre |
Şart |
İçerik-Türü |
Authorization |
Zorunlu |
Bearer |
Parametre |
Veri Türü |
Şart |
Açıklama |
cc_holder_name |
string |
Zorunlu |
Kart Üzerindeki Ad Soyad. |
cc_no |
string |
Zorunlu |
Kart numarası. |
expiry_month |
string |
Zorunlu |
Kart son kullanma ayı. |
expiry_year |
string |
Zorunlu |
Kart son kullanma yılı. 2030 |
cvv |
string |
Zorunlu |
3 haneli güvenlik kodu, yabancı kartlarda 4 hanelidir. |
currency_code |
string |
Zorunlu |
Para birimi kodu. USD , TRY , EUR |
installments_number |
number |
Zorunlu |
Taksit Sayısı. |
invoice_id |
string |
Zorunlu |
Benzersiz fatura numarası. |
invoice_description |
string |
Zorunlu |
Sepet açıklaması. |
name |
string |
Zorunlu |
Ürünü satın alan kişinin adı. |
surname |
string |
Zorunlu |
Ürünü satın alan kişinin soyadı. |
total |
double |
Zorunlu |
Ödeme yapılacak tutar. 1000.58 |
merchant_key |
string |
Zorunlu |
PayBull üzerinden almış olduğunuz benzersiz Üye İşyeri Anahtarı |
items |
string |
Zorunlu |
Sepetteki ürünler |
cancel_url |
string |
Opsiyonel |
Başarısız ödeme URL'i. |
return_url |
string |
Opsiyonel |
Başarılı ödeme URL'i. |
is_commission_from_user |
string |
Opsiyonel |
commission_by parametresinin aktif olması için '1' iletilmesi gerekmektedir. |
commission_by |
string |
Opsiyonel |
Komisyonu son kullanıcı karşılayacak ise user , üye işyeri karşılayacak ise merchant (default) |
response_method |
string |
Opsiyonel |
POST / GET parametreleri iletilir. |
hash_key |
string |
Zorunlu |
Benzersiz anahtar. İşlemin bankaya ulaşmadan, kullanıcının ödemeyle ilgili değişiklikler yapamamasını ve ödemenin güvenli olarak tamamlanmasını sağlanır. bkz.Hash Key Oluşturma |
bill_address1 |
string |
Opsiyonel |
Ürünü satın alan kişinin 1. Adres Satırı. |
bill_address2 |
string |
Opsiyonel |
Ürünü satın alan kişinin 2. Adres Satırı . |
bill_city |
string |
Opsiyonel |
Ürünü satın alan kişinin Şehir. |
bill_postcode |
string |
Opsiyonel |
Ürünü satın alan kişinin Posta kodu. |
bill_state |
string |
Opsiyonel |
Ürünü satın alan kişinin İlçe. |
bill_country |
string |
Opsiyonel |
Ürünü satın alan kişinin Ülke. |
bill_email |
string |
Opsiyonel |
Ürünü satın alan kişinin email adresi. |
bill_phone |
string |
Opsiyonel |
Ürünü satın alan kişinin telefon numarası. |
card_program |
string |
Opsiyonel |
WORLD , BONUS , MAXIMUM , BANKKART_COMBO , PARAF , AXESS , ADVANT , CARD_FNS değerlerinin biri gönderilir. |
ip |
string |
Opsiyonel |
Ürünü satın alan kişinin ip adresini temsil eder. |
transaction_type |
string |
Opsiyonel |
PreAuth / Auth parametresi iletilir, ödemenin 20 gün içinde tamamlanması veya iptal edilmesi gerekir, aksi takdirde otomatik olarak iptal edilir. |
sale_webhook_key |
string |
Opsiyonel |
Bir satın alma talebi tamamlandığında, Paybull bir gönderi talebi gönderir. Paybull Üye İş Yeri Panelinde Satış web kancası URL'ni atamalıdır. |
HASH KEY OLUŞTURMA
function generateHashKey($total, $installment, $currency_code, $merchant_key, $invoice_id, $app_secret)
{
$data = $total . '|' . $installment . '|' . $currency_code . '|' . $merchant_key . '|' . $invoice_id;
$iv = substr(sha1(mt_rand()), 0, 16);
$password = sha1($app_secret);
$salt = substr(sha1(mt_rand()), 0, 4);
$saltWithPassword = hash('sha256', $password . $salt);
$encrypted = openssl_encrypt("$data", 'aes-256-cbc', "$saltWithPassword", null, $iv);
$msg_encrypted_bundle = "$iv:$salt:$encrypted";
$msg_encrypted_bundle = str_replace('/', '__', $msg_encrypted_bundle);
return $msg_encrypted_bundle;
}
public static string GenerateHashKey(string total,string installment,string currency_code,string merchant_key,string invoice_id,string app_secret){
var data = total + '|'+installment+'|'+currency_code+'|'+merchant_key+'|'+invoice_id;
var sha1 = new SHA1Managed();
Random rnd = new Random();
var iv = sha1.ComputeHash(Encoding.UTF8.GetBytes(rnd.ToString()));
var password = sha1.ComputeHash(Encoding.UTF8.GetBytes(app_secret)).ToString();
rnd = new Random();
var shaSalt = sha1.ComputeHash(Encoding.UTF8.GetBytes(rnd.ToString())).ToString();
var salt = shaSalt.Substring(0, 4);
var sha256 = new SHA256Managed();
var saltWithPassword = sha256.ComputeHash(Encoding.UTF8.GetBytes(password+salt));
//var encrypted = EncryptString(data,saltWithPassword,iv);
var encrypted = "asdasdasd";
var msg_encrypted_bundle = iv + ":" + salt + ":" + encrypted;
msg_encrypted_bundle = msg_encrypted_bundle.Replace("/","__");
return msg_encrypted_bundle;
}
public static string EncryptString(string plainText, byte[] key, byte[] iv){
Aes encryptor = Aes.Create();
encryptor.Mode = CipherMode.CBC;
encryptor.Key = key;
encryptor.IV = iv;
MemoryStream memoryStream = new MemoryStream();
ICryptoTransform aesEncryptor = encryptor.CreateEncryptor();
CryptoStream cryptoStream = new CryptoStream(memoryStream, aesEncryptor, CryptoStreamMode.Write);
byte[] plainBytes = Encoding.ASCII.GetBytes(plainText);
cryptoStream.Write(plainBytes, 0, plainBytes.Length);
cryptoStream.FlushFinalBlock();
byte[] cipherBytes = memoryStream.ToArray();
memoryStream.Close();
cryptoStream.Close();
string cipherText = Convert.ToBase64String(cipherBytes, 0, cipherBytes.Length);
return cipherText;
}
function generateHashKey(total , installment , currency_code , merchant_key , invoice_id , app_secret) {
var data = total + "|" + installment + "|" + currency_code + "|" + merchant_key + "|" + invoice_id;
var randNumIv = Math.floor(Math.random() * (99999999999999999 - 10000000000000000) + 10000000000000000);
var hashNumIv = sha1(randNumIv);
hashNumIv = hashNumIv.create();
var iv = hashNumIv.slice(0,16);
var hashPass = sha1(app_secret);
hashPass = hashPass.create();
var password = hashPass.hex();
var randNumSalt = Math.floor(Math.random() * (99999999999999999 - 10000000000000000) + 10000000000000000);
var hashNumSalt = sha1(randNumIv);
hashNumSalt = hashNumSalt.create();
var salt = hashNumSalt.hex();
var strPassSalt = password + salt;
var hashStr = sha1(strPassSalt);
strPassSalt.create();
var saltWithPassword = strPassSalt.hex();
var encrypted = "";
var msg_encrypted_bundle = iv + ":" + salt + ":" + encrypted;
msg_encrypted_bundle = msg_encrypted_bundle.replaceAll("/" , "_");
return msg_encrypted_bundle;
}
ÖRNEK KODLAR
payment_status = 1 Tamamlandı ,payment_status = 0 Başarısız
{
"cc_holder_name":"John Dao",
"cc_no":"5406675406675403",
"expiry_month":"12",
"expiry_year":"26",
"cvv":"000",
"currency_code":"TRY",
"installments_number": 1,
"invoice_id":"1693558087",
"invoice_description":" INVOICE TEST DESCRIPTION",
"total":10,
"merchant_key":"$2y$10$w/ODdbTmfubcbUCUq/ia3OoJFMUmkM1UVNBiIQIuLfUlPmaLUT1he",
"items":[{"name":"Item3","price":10.00,"quantity":1,"description":"item3 description"}],
"name" : "John",
"surname" : "Dao",
"hash_key" : "b8101ce330960fa7:8a81:YI9VbGOhKoFeEJ37Jha2XjXMs6Gq3750YoNlhze530mLhtbRZKjf3T__Ww0yD3PhAHv90PtyNG3RWXy__AIZyBzLqX8BBVAf4idqc1tPn98mAP5rcVPwqenMtSrDL8QE6t",
"cancel_url" : "cancel_url",
"return_url" : "return_url"
}
Array
(
"order_no": "169355826789055",
"order_id": "169355826789055",
"invoice_id": "1693558087",
"credit_card_no": "540667****5403",
"transaction_type": "Auth",
"payment_status": 1,
"payment_method": 1,
"error_code": 100,
"error": "Onaylandı",
"auth_code": "848287",
"merchant_commission": 1,
"user_commission": 0,
"merchant_commission_percentage": 1,
"merchant_commission_fixed": 0,
"installment": 1,
"amount": 10,
"currency_exchange_rate": "0.0000",
"currency_exchange_from": "",
"currency_exchange_to": "",
"hash_key": "37de7caae8c19c9b:d24d:fE8rEeGT2ff88AbJL8IC6nznJu5Cb3xgCDjrB6zGln4XkvJDDgni8__E30HnGWCYn",
"original_bank_error_code": "",
"original_bank_error_description": ""
)