Ödeme Sorgulama

Ödeme sorgulamak için kullanılan servistir. Bu serviste istek yapabilmesi için token bilgisinin Header'da gönderilmesi gerekmektedir. Bu linkten Üye İşyeri Doğrulama token bilgilerine ulaşabilirsiniz

Servise gönderilmesi gereken parametreler şu şekildedir:
Parametre ismi Tip Uzunluk Zorunluluk Örnek Değer Açıklama
memberId long 16 Evet 1 Her zaman 1
merchantId long 16 Evet 2 Sizin için oluşturulan Üye işyeri ID'si
rnd string 64 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.
orderNo string 64 Evet 123456 İşlem sipariş numarası
totalAmount string 16 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.
customerId string 100 Hayır test@test.com Üye işyeri tarafında kayıtlı olan kullanıcının tekil bilgisidir. İster bir id ister bir email olabilir
txnType String 20 Hayır Auth Provizyon isteğinde göndermiş olduğunuz işlem tipini giriniz. 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
Servisten dönen parametreler şu şekildedir:
Parametre ismi Tip Uzunluk Açıklama
orderId string 64 Sipariş ID bilgisi
cardNo string 16 Kart numarası
amount decimal 16 İşlem tutar bilgisi
rnd string 16 İşlem rnd bilgisi
hostReferenceNumber string 16 İşlem referans numarası bilgisi
installmentCount string 16 İşlem taksit bilgisi
totalAmount string 16 İşlem toplam tutar bilgisi
responseHash string 16 Cevap hash bilgisi
vposId string 16 İşlem sanal pos ID bilgisi
vposName string 64 İşlem sanal pos banka bilgisi
authCode string 16 Otorizasyon kodu
tranDate date 16 İşlem tarihi bilgisi
txnType String 20 İşlem Tipi. Gönderilebilecek parametreler aşağıdadır: Auth --> Satış, PreAuth --> Ön Provizyon, PostAuth --> Provizyon kapama, Void --> İptal, Refund --> İade, Inquiry --> Ödeme sorgulama, QrAuth --> QR kod ile ödeme, PointAuth --> Puanlı Ödeme
txnStatus string 16 İş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'
currencyCode string 3 İşlem para birimi
responseCode string 16 İşlem cevap kodu
responseMessage string 64 İşlem cevap mesajı
extraData string 64 İşlem detay verisi
transId string 16 İşlem ID kodu
customerId string 64 İşleme ait müşteri ID'si
merchantId string 64 İşleme ait üye işyeri ID'si
description string 2000 İşleme açıklaması
maturityPeriod string 4 Vade Dönemi
paymentFrequency string 4 Vade Ödeme Sıklığı
cardHolderName string 100 Kart Sahibi Adı Soyadı
Örnek JSON formatında istek ve cevaplar aşağıdadır:

HTTP Method: POST

Content-Type: application/json

TEST URL: https://ppgpayment-test.birlesikodeme.com:20000/api/ppg/Payment/PaymentInquiry

PROD URL: https://{baseUrl}/api/ppg/Payment/PaymentInquiry

*Prod için baseUrl adresi, size entegrasyon mailinde "paymentBaseUrl" alanında iletilecektir.

Request
{
  "memberId": 0,
  "merchantId": 0,
  "customerId": "string",
  "hash": "string",
  "txnType": "string",
  "rnd": "string",
  "orderNo": "string",
  "totalAmount": "string"
}
Response
{
  "orderId": "string",
  "cardNumber": "string",
  "amount": "string",
  "rnd": "string",
  "hostReferenceNumber": "string",
  "installmentCount": "string",
  "totalAmount": "string",
  "responseHash": "string",
  "vposId": "string",
  "vposName": "string",
  "authCode": "string",
  "tranDate": "string",
  "txnType": "string",
  "txnStatus": "string",
  "currencyCode": "string",
  "responseCode": "string",
  "responseMessage": "string",
  "extraData": "string",
  "transId": 0,
  "customerId": "string",
  "merchantId": 0
}

HASH Hesaplama



public static string CreateHash(VposRequest request)

{

var hashPassword =""; // Bu bilgi size özel olup kayıtlı kullanıcınıza mail olarak gönderilmiştir.

var hashString = $"{hashPassword}{request.Rnd}{request.OrderNo}{request.TotalAmount}";

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.Rnd}+{request.OrderNo}+{request.TotalAmount}";

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.$rnd.$OrderNo.$totalAmount;

$hash = mb_convert_encoding($hash, "UTF-16LE");

$hashString = hash("sha512", $hash);