I-Frame kullanmadan doğrudan NoneSecure otorizasyon almak için kullanılan servistir. Bu serviste istekte bulunabilmek için token bilgilerinin Header içerisinde gönderilmesi gerekmektedir. Üye İş yeri doğrulama token bilgilerine bu link üzerinden erişebilirsiniz Üye İş Yeri Doğrulama.
Komisyon Sorgulama hizmeti ile ödeme talebi öncesinde komisyon tanımı ve bu tanımın oranı ile hesaplanan komisyon tutarı öğrenilebilir. Ayrıca CampaignInquiry hizmeti ile kampanya tanımı ve bu tanımın oranı ile hesaplanan indirim tutarı öğrenilebilir.
Parametre ismi | Tip | Uzunluk | Zorunluluk | Örnek Değer | Açıklama |
---|---|---|---|---|---|
memberId | long | 16 | Evet | 1 | Her zaman 1 |
merchantId | long | 16 | Evet | ? | Sizin için yaratılan Merchant ID |
customerId | String | 100 | Hayır | 1234 | Üye işyeri tarafında kayıtlı olan kullanıcının tekil bilgisidir. İster bir id ister bir email olabilir.Kayıtlı kartla işlem yapılıyorsa doldurulmalı |
cardNumber | string | 16 | Hayır | 5101385101385104 | Kart PAN bilgisi.Kayıtlı kartla işlem yapılıyorsa doldurulmalı |
expiryDateMonth | string | 2 | Evet | 12 | Kart son kullanma ayı |
expiryDateYear | string | 2 | Evet | 22 | Kart son kullanma yılı son iki hanesi. Örn: 2025 ise 25 olarak giriniz. |
cvv | string | 3 | Hayır | 000 | Kart Güvenlik Kodu |
userCode | string | 40 | Evet | test | Kullanıcı kodu. Kullanıcı bilgileri mailinde size iletilecektir. Prod ortam bilgisi farklıdır. |
txnType | string | 20 | Evet | Auth | İşlem Tipi. Gönderilebilecek parametreler aşağıdadır: Auth --> Satış, PreAuth --> Ön Provizyon, PostAuth --> Provizyon kapama, Inquiry --> Ödeme sorgulama, QrAuth --> QR kod ile ödeme, PointAuth --> Puanlı Ödeme |
installmentCount | string | 2 | Evet | 1 | Taksit sayısını ifade eder. Taksit bilgisini provizyon işlemini göndermeden önce Taksit Tanımı Sorgula servisinden kontrol edip dönüş bilgisine göre doldurmalısınız |
currency | string | 3 | Evet | 949 | Kur bilgisi. (TL:949) |
orderId | string | 36 | Evet | order1:/... | Üye işyeri tarafından üretilen işleme özgü bir numaradır. |
totalAmount | string | 19 | Evet | 9950 | İşlem tutarı 9950 99 TL 50 kuruş demektir, virgül veya noktalama içermez küsürat için 2 hanedir. 1 TL için 100 gönderilmelidir. |
pointAmount | string | 19 | Hayır | 9950 | Puanlı satış yapılacaksa txnType: "PointAuth" gönderilmelidir ve pointAmount ile totalAmount değerlerinin aynı olması gerekir. Kartın puanını sorgulamak için Puan Sorgulama servisini kullanabilirsiniz. |
rnd | string | 40 | Evet | abcd | Hash hesaplamasında kullanılan random numaradır. |
hash | string | 2048 | Evet | abcdefgh | İşlemin güvenliği için oluşturulan hash bilgisidir. Sayfanın alt kısmında bulunan "HASH Hesaplama" başlığı altında detayına ulaşabilirsiniz. |
description | string | 100 | Hayır | - | İşlem açıklama bilgisi. |
requestIp | string | 15 | Hayır | 198.00.00.00 | İşlem istek IP bilgisi |
cardHolderName | string | 16 | Hayır | Ad Soyad | Kart hamili ismi |
cardAlias | string | 16 | Hayır | VISA Card | Kayıtlı karta verilen isim. Kayıtlı kart ile işlem yapılacaksa cardAlias veya secureDataId bilgisinin gönderilmesi gerekir. Kayıtlı kartların listesini ve secureDataId bilgisini GetCustomerCards servisinden temin edebilirsiniz. |
secureDataId | integer | 16 | Hayır | 0 | Saklanan kart ID bilgisi . Kayıtlı kart ile işlem yapılacaksa cardAlias veya secureDataId bilgisinin gönderilmesi gerekir. Kayıtlı kartların listesini ve secureDataId bilgisini GetCustomerCards servisinden temin edebilirsiniz. |
orderProductList | List | Hayır(*) | (*)Pazaryeri modeli için bu alanın doldurulması zorunludur. | ||
merchantId | long | 64 | Evet | 0001 | (*)Satıcı ID bilgisi. (Submerchant) |
productId | String | 64 | Evet | 000032 | ()()Tekil (unique) ürün ID bilgisi. İstek mesajında sepette bulunan her ürün için ayrı ayrı gönderilmesi gerekmektedir. |
amount | String | 64 | Evet | 9950 | (*)Sipariş tutarı 9950, 99 TL 50 kuruş demektir, virgül veya noktalama içermez küsürat için 2 hanedir. 1 TL için 100 gönderilmelidir. |
productName | String | 64 | Evet | Bilgisayar | (*)Sepetteki ürün ismi |
commissionRate | String | 5 | Evet | 10.00 | (*)Ana işyerinin alt işyerinden tahsil edeceği komisyon tutarının hesaplanmasında kullanılan yüzdelik orandır. Örneğin, %10 komisyon alınacaksa, 10.00 olarak gönderilmelidir. |
description | String | 4000 | Hayır | Açıklama | (*)Ürün Açıklaması |
deliveryInfo | list | Hayır | Teslimat bilgileri | ||
taxNo | String | 15 | Hayır | Customer Name | Vergi numarası |
taxOffice | String | 64 | Hayır | Customer Name | Vergi dairesi |
firmName | String | 64 | Hayır | Customer Name | Firma adı |
identityNumber | String | 11 | Hayır | Customer Name | Kimlik numarası |
fullName | String | 64 | Hayır | Customer Name | Müşteri ad soyad bilgisi |
String | 100 | Hayır | customer-mail@mail.com | Müşteri eposta bilgisi | |
address | String | 1024 | Hayır | Mecidiyeköy - İstanbul | Müşteri adres bilgisi |
phone | String | 16 | Hayır | 5320123456 | Müşteri telefon bilgisi |
city | String | 48 | Hayır | İstanbul | Müşteri il bilgisi |
town | String | 48 | Hayır | Mecidiyeköy | Müşteri ilçe bilgisi |
zipCode | String | 16 | Hayır | 34000 | Müşteri posta kodu bilgisi |
billingInfo | list | Hayır | Fatura bilgileri | ||
taxNo | String | 15 | Hayır | Customer Name | Vergi numarası |
taxOffice | String | 64 | Hayır | Customer Name | Vergi dairesi |
firmName | String | 64 | Hayır | Customer Name | Firma adı |
identityNumber | String | 11 | Hayır | Customer Name | Kimlik numarası |
fullName | String | 64 | Hayır | Customer Name | Müşteri ad soyad bilgisi |
String | 100 | Hayır | customer-mail@mail.com | Müşteri eposta bilgisi | |
address | String | 1024 | Hayır | Mecidiyeköy - İstanbul | Müşteri adres bilgisi |
phone | String | 16 | Hayır | 5320123456 | Müşteri telefon bilgisi |
city | String | 48 | Hayır | İstanbul | Müşteri il bilgisi |
town | String | 48 | Hayır | Mecidiyeköy | Müşteri ilçe bilgisi |
zipCode | String | 16 | Hayır | 34000 | Müşteri posta kodu bilgisi |
Dönen mesajın yapısı şu şekildedir. responseCode": "00" ise işlem başarılı gerçekleşmiştir.
Parametre ismi | Tip | Uzunluk | Açıklama |
---|---|---|---|
authCode | string | 6 | Otorizasyon kodu |
hostReference | string | 24 | Banka referans numarası |
responseCode | string | 4 | Cevap kodu. 00 --> Başarılı , Diğerleri başarısız |
responseMessage | string | 2048 | Banka cevap açıklaması |
orderId | string | 36 | Sipariş numaranız |
bankOrderNo | string | 20 | Banka tarafındaki sipariş numarası |
txnType | string | 20 | İstek mesajındaki txnType bilgisi |
txnStatus | string | 1 | İşlem durumu. 'Y' --> 'Başarılı', 'E' --> 'Başarısız', 'P' --> 'Beklemede', 'V' --> 'İptal Edildi', 'R' --> 'İade Edildi', 'A' --> 'Satışa Çevrildi', 'K' --> 'Kısmi İade Edildi' |
totalAmount | string | 19 | Tahsil edilen tutar bilgisi |
vposId | string | 64 | Banka Sanal POS numarası |
vposName | string | 64 | Banka Sanal POS adı |
HTTP Method: POST
Content-Type: application/json
TEST URL: https://ppgpayment-test.birlesikodeme.com:20000/api/ppg/Payment/NoneSecurePayment
PROD URL: https://{baseUrl}/api/ppg/Payment/NoneSecurePayment
*Prod için baseUrl adresi,size entegrasyon mailinde "paymentBaseUrl" alanında iletilecektir.
{
"memberId": 0,
"merchantId": 0,
"customerId": "string",
"cardNumber": "string",
"expiryDateMonth": "string",
"expiryDateYear": "string",
"cvv": "string",
"secureDataId": 0,
"cardAlias": "string",
"userCode": "string",
"txnType": "string",
"installmentCount": "string",
"currency": "string",
"orderId": "string",
"totalAmount": "string",
"pointAmount": "string",
"rnd": "string",
"hash": "string",
"description": "string",
"cardHolderName": "string",
"requestIp": "string",
"billingInfo": {
"taxNo": "string",
"taxOffice": "string",
"firmName": "string",
"identityNumber": "string",
"fullName": "string",
"email": "string",
"phone": "string",
"address": "string",
"city": "string",
"town": "string",
"zipCode": "string"
},
"deliveryInfo": {
"taxNo": "string",
"taxOffice": "string",
"firmName": "string",
"identityNumber": "string",
"fullName": "string",
"email": "string",
"phone": "string",
"address": "string",
"city": "string",
"town": "string",
"zipCode": "string"
},
"orderProductList": [
{
"merchantId": 0,
"productId": "string",
"amount": "string",
"productName": "string",
"commissionRate": "string"
}
]
}
Dönen mesahın yapısı şu şekildedir. responseCode": "00" ise işlem başarılı gerçekleşmiştir.
{
"fail": false,
"statusCode": 200,
"result": {
"responseCode": "00",
"responseMessage": "",
"orderId": "Abc04037b238f4123",
"txnType": null,
"txnStatus": "Y",
"vposId": 8,
"vposName": "T.C. Ziraat Bankası A.Ş.",
"authCode": "951073",
"hostReference": null,
"totalAmount": "2500"
}
}
public static string CreateHash(VposRequest request)
{
var apiKey =""; // Bu bilgi size özel olup kayıtlı kullanıcınıza mail olarak gönderilmiştir.
var hashString = $"{apiKey}{request.UserCode}{request.Rnd}{request.TxnType}{request.TotalAmount}
{request.CustomerId}{request.OrderId}";
System.Security.Cryptography.SHA512 s512 = System.Security.Cryptography.SHA512.Create();
System.Text.UnicodeEncoding ByteConverter = new System.Text.UnicodeEncoding();
byte[] bytes = s512.ComputeHash(ByteConverter.GetBytes(hashString));
var hash = System.BitConverter.ToString(bytes).Replace("-","");
return hash;
}
var crypto = require('crypto');
var param = "{hashPassword}+{request.UserCode}+{request.Rnd}+{request.TxnType}+{request.TotalAmount}+
{request.CustomerId}+{request.OrderId}";
var hash = crypto.createHash('sha512');
data = hash.update(param, 'utf-16le');
hash = data.digest('hex');
console.log("hash : " + hash);
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public static String getSecureData(String dataToHash ){
String generatedHash = null;
try {
MessageDigest md = MessageDigest.getInstance("SHA-512");
byte[] bytes = md.digest(dataToHash.getBytes(StandardCharsets.UTF_16LE));
StringBuilder sb = new StringBuilder();
for(int i=0; i< bytes.length ;i++){
sb.append(Integer.toString((bytes & 0xff) + 0x100,16).substring(1));
}
generatedHash = sb.toString().toUpperCase();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return generatedHash
}
$hash = $hashkey.$userCode.$rnd.$txnType.$totalAmount.$customerId.$order_id;
$hash = mb_convert_encoding($hash, "UTF-16LE");
$hashString = hash("sha512", $hash);