Ön Provizyon Kapama
Ön Provizyon
Ön provizyon oluşturmak için 3D secure ile ödeme servisine transaction_type parametresini PreAuth
olarak istek göndererek ön provizyon işlemini oluşturabilirsiniz. bkz: 3D Secure ile Ödeme Alma
Ön Provizyon & 3D Secure
3D Secure ile ön provizyon işlemi, normal 3D Secure akışları için de geçerlidir. Son kullanıcı kendisine gelen OTP kodu ile doğruladığında 3D Secure olarak Pre Auth tamamlanmış olacaktır. 3D Secure Pre Auth bir işlem, önce 3D Complete servisine gelerek tamamlanmalı ve sonrasında provizyon kapama servisi kullanılmalıdır.
Ön Provizyon Kapama
Başarılı bir şekilde ön provizyon oluşturulmuş bir ödeme için confirmPayment
servisi ile ödemeyi tamamlayabilirsiniz.
Http metotu, Enpoint, Headers(Başlıklar) ve Request(İstek) bilgileri aşağıda verilmiştir.
Method |
API Uç Noktası (Endpoint) |
İçerik-Türü |
POST |
/api/confirmPayment |
application/json |
Parametre |
Şart |
İçerik-Türü |
Authorization |
Zorunlu |
Bearer |
Accept |
Zorunlu |
application/json |
Parametre |
Veri Türü |
Şart |
Açıklama |
invoice_id |
string |
Zorunlu |
Ödemeyi başlattığınız benzersiz fatura numarası. |
merchant_key |
string |
Zorunlu |
PayBull üzerinden almış olduğunuz benzersiz Üye İşyeri Anahtarı |
status |
integer |
Zorunlu |
Onaylamak için 1 iptal etmek için 2 gönderilir. |
hash_key |
string |
Zorunlu |
bkz.Hash Key Oluşturma |
total |
double |
Opsiyonel |
Provizyon işleminde onaylanacak tutar. ürün fiyatından küçük veya ona eşit olmalıdır. |
HASH KEY OLUŞTURMA
function generateConfrimPaymentHashKey($merchant_key, $invoice_id, $status, $app_secret)
{
$data = $merchant_key . '|' . $invoice_id . '|' . $status;
$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 merchant_key, string invoice_id, string status,
string app_secret){
var data = merchant_key + '|'+invoice_id+'|'+status;
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(merchant_key, invoice_id, status, app_secret) {
var data = merchant_key + "|" + invoice_id + "|" + status;
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
{
"merchant_key": "$2y$10$w/ODdbTmfubcbUCUq/ia3OoJFMUmkM1UVNBiIQIuLfUlPmaLUT1he",
"invoice_id": "9a197ed9-cfaf-4456-b0fc-da74a95f461c",
"status": 1,
"hash_key": "36a50210c8b2f19e:11629:eHBA0moN...",
"total": 100.44
}
{
"status_code": 100,
"status_description": "An order has been taken place for this invoice id: 33491162435928",
"transaction_status": "Completed",
"order_id": "162435932934307",
"invoice_id": "9a197ed9-cfaf-4456-b0fc-da74a95f461c"
}
{
"status_code": 105,
"status_description": " The transaction is not Approved",
"transaction_status": "Pending",
"order_id": "162435924998223",
"invoice_id": "9a197ed9-cfaf-4456-b0fc-da74a95f461c"
}