Signature Payment Gateway

Semua request dari server Espay akan membutuhkan paramater signature, semua merchant harus validasi parameter ini untuk memastikan request hanya datang dari server espay.

Signature transaksi dihasilkan dengan cara menyatukan parameter dengan ##, uppercase paramater string tersebut lalu hash menggunakanan algoritma SHA256, berikut penjelasan dan contoh signature service Espay:


Send Invoice

untuk signature send invoice, parameter sesuai urutan sebagai berikut:

  1. Signature Key(Key)
  2. Key yang akan digunakan untuk generate signature (diberikan oleh team Espay).

  3. rq_uuid
  4. Request uuid yang dikirim dalam web service.

  5. rq_datetime
  6. Request datetime yang dikirim dalam web service.

  7. order_id
  8. Merchant order id.

  9. Amount
  10. Nominal transaksi.

  11. Ccy
  12. Nilai mata uang.

  13. comm_code
  14. Comm_code.

  15. Mode
  16. Value yang digunakan adalah SENDINVOICE

Contoh

##7bc074f97c3131d2e290a4as##UUID001##2016-07-25
11:05:49##145000065##10000##IDR##SGWTES##SENDINVOICE##

Closed Invoice

untuk signature closed invoice, parameter sesuai urutan sebagai berikut:

  1. Signature Key(Key)
  2. Key yang akan digunakan untuk generate signature (diberikan oleh team Espay).

  3. rq_uuid
  4. Request uuid yang dikirim dalam web service.

  5. rq_datetime
  6. Request datetime yang dikirim dalam web service.

  7. order_id
  8. Merchant order id.

  9. Comm_code.
  10. Comm Code

  11. Mode
  12. value yang digunakan adalah CLOSEDINVOICE

Contoh

##7bc074f97c3131d2e290a4707a54a623##UUID001##2016-07-25
11:05:49##145000065##SGWTES##CLOSEDINVOiCE##

Transaction Inquiry, Payment notification, Check Payment Status & Update Expire Transaction memiliki urutan parameter yang sama yaitu :

##KEY##rq_datetime##order_id##mode##

berikut penjelasannya :

  1. Signature Key(Key)
  2. Key digunakan untuk menghasilkan signature, yang diberikan oleh Tim Integrasi Espay

  3. rq_datetime
  4. Parameter request datetime yang tersedia disetiap request

  5. order_id
  6. Order dari merchant atau id transaksi

  7. Mode
  8. paramater ini untuk membedakan signature dari setiap request. Mode ini terdiri dari

    • INQUIRY
    • if request is Transaction Inquiry
    • PAYMENTREPORT
    • if request is Payment notification
    • CHECKSTATUS
    • if request is Check Payment Status
    • EXPIRETRANSACTION
    • if request is Update Expire Transaction

Contoh

##7bc074f97c3131d2e290a4707a54a623##2016-07-25 11:05:49##145000065##INQUIRY##
          
##7BC074F97C3131D2E290A4707A54A623##2016-07-25 11:05:49##145000065##PAYMENTREPORT##

Berikut merupakan langkah-langkah untuk melakukan proses generate signature:

  1. Satukan Parameter dengan ##
  2. Contoh signature yang telah dimasukan

    ##7bc074f97c3131d2e290a4707a54a623##2016-07-25 11:05:49##145000065##INQUIRY##
          
  3. Uppercase string yang telah disatukan
  4. Contoh String Signature Setelah Uppercase

    ##7BC074F97C3131D2E290A4707A54A623##2016-07-25 11:05:49##145000065##INQUIRY##
          
  5. Hash dengan sha256
  6. contoh string signature setelah proses sha256

    67747e2e6b219879563655eb012f77646b9792736f5693f2e44693fec5a67d26
          
    

Contoh untuk menghasilkan kode signature menggunakan PHP:

$uppercase = strtoupper('##7bc074f97c3131d2e290a4707a54a623##2016-07-25 11:05:49##145000065##INQUIRY##'); $signature = hash('sha256', '$uppercase');
    

Contoh untuk menghasilkan kode signature menggunakan JAVA:

import java.io.FileInputStream; import java.security.MessageDigest; /** * * @author root */ public class SHACheckSumExample { /** * @param args the command line arguments */ public static void main(String[] args) throws Exception{ // TODO code application logic here String password ="##7bc074f97c3131d2e290a4707a54a623##2016-07-25 11:05:49##145000065##INQUIRY##"; Confidential © Espay Page 23 of 27 PT.Square Gate One String data = password.toUpperCase(); System.err.println(data); MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(data.getBytes()); byte byteData[] = md.digest(); //convert the byte to hex format method 1 StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString((byteData[i] & 0xff) + 0x100,16).substring(1)); } System.out.println("Hex format : " + sb.toString()); } }