İptal Ve İade Servisi

Başarılı bir işlemin iptal veya iadesini yapmak 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
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
userCode String 40 Evet test Kullanıcı kodu. Test olarak girilebilir.
txnType String 20 Evet Auth İşlem Tipi. Gönderilebilecek parametreler aşağıdadır: Void --> İptal, Refund --> İade
okUrl String 2048 Hayır https:/.... İşlem başarılı olduğunda üye işyerine dönülecek url bilgisi.
failUrl String 2048 Hayır https:/.... İşlem başarısız olduğunda üye işyerine dönülecek url bilgisi.
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.
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.
description String 100 Hayır - İşlem açıklama bilgisi.
requestIp String 15 Hayır 198.00.00.00 İşlem istek IP bilgisi
extraData String 500 Hayır - Ek veri
orderProductList List Hayır(*) (*)Pazaryeri modeli için bu alanın doldurulması zorunludur.
merchantId long 64 Evet 0001 Satıcı ID bilgisi.
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 64 Evet 1050 Alt üye işyerine ödenecek tutar. 1050, 10 TL 50 kuruş demektir, virgül veya noktalama içermez küsürat için 2 hanedir. 1 TL için 100 gönderilmelidir.
Servisten dönen parametreler şu şekildedir:
Parametre ismi Tip Uzunluk Açıklama
url string 2048 url
responseCode string 4 Cevap kodu. 0000 --> Başarılı , Diğerleri başarısız
responseMessage string 2048 Cevap açıklaması
orderId string 16 Sipariş ID değeri
txnType string 16 İşlem Tipi. 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 statüsü
vposId string 16 Banka Sanal POS ID bilgisi
vposName string 64 Banka Sanal POS adı
Örnek JSON formatında istek ve cevaplar aşağıdadır:

HTTP Method: POST

Content-Type: application/json

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

*Test ortam için bu adresi kullanabilirsiniz. Prod ortam için size URL bilgisi entegrasyon sürecinde iletilecektir.

Request
{
  "memberId": 0,
  "merchantId": 0,
  "customerId": "string",
  "userCode": "string",
  "txnType": "string",
  "okUrl": "string",
  "failUrl": "string",
  "orderId": "string",
  "totalAmount": "string",
  "rnd": "string",
  "hash": "string",
  "description": "string",
  "requestIp": "string",
  "extraData": "string",
  "orderProductList": [
    {
      "merchantId": 0,
      "productId": "string",
      "amount": "string",
      "productName": "string",
      "commissionRate": "string"
    }
  ]
}
Response
{
  "url": "string",
  "responseCode": "string",
  "responseMessage": "string",
  "orderId": "string",
  "txnType": "string",
  "txnStatus": "string",
  "vposId": 0,
  "vposName": "string"
}

HASH Hesaplama


String CustomerId="123456789"; //müşteri tarafından gönderilecek bilgi
String UserCode="test@test.com"; //API kullanıcısı mail adresi
String HashPassword="7FAD0B3E8E8691C36B26D5BC9D6227A5";
String TxnType="Auth";
String InstallmentCount="0";
String Currency="949";
String OkUrl="http://localhost:61111/ppg/PaycoreResult.aspx";
String FailUrl="http://localhost:61111/ppg/PaycoreResult.aspx";
String OrderId="";
String TotalAmount="125";
String Rnd = DateTime.Now.Ticks.ToString();
String hashString = HashPassword + UserCode +Rnd+ TxnType+ TotalAmount +
CustomerId + OrderId + OkUrl + FailUrl ;
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));
String Hash = System.BitConverter.ToString(bytes).Replace("-", "");
C# ile Hesaplama Metodu

public static string CreateHash(VposRequest request)
 {
 var hashString = $"{hashPassword}{request.UserCode}{request.Rnd}{request.TxnType}{request.TotalAmount}{request.CustomerId}{request.OrderId}{request.OkUrl}{request.FailUrl}";
 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;
 }
Java ile Hesaplama Metodu

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[i] & 0xff) + 0x100,
16).substring(1));
 }
 generatedHash = sb.toString().toUpperCase();

 } catch (NoSuchAlgorithmException e) {
 e.printStackTrace();
 }
 return generatedHash;
}
PHP ile Hesaplama Metodu

$hash = $hashkey . $userCode . $rnd . $txnType . $totalAmount . $customerId . $order_id . $okUrl . $failUrl;
$hash= mb_convert_encoding($hash, "UTF-16LE");
$hashString = hash("sha512", $hash);