Signature

Signature adalah kode unik yang digunakan untuk menjaga keamanan dan keaslian data saat terjadi transaksi. Signature dibuat menggunakan algoritma kriptografi seperti RSA dan SHA-256. Setiap menerima request, Espay akan melakukan validasi terhadap signature yang diterimanya, untuk memastikan data transaksi berasal dari Anda dan tidak diubah saat proses transmissi.

Setiap layanan Espay memiliki format parameter yang berbeda-beda dalam pembuatan signature-nya. Berikut ini format kombinasi parameter beserta layanannya:

Layanan Pesan Kombinasi
Send Invoice
Request
Signature Key + rq_uuid + rq_datetime + order_id + amount + ccy + comm_code + SENDINVOICE
Inquiry Transaction
Request
Signature Key + rq_datetime + order_id + INQUIRY
Response
Signature Key + rq_uuid + rs_datetime + order_id + error_code + INQUIRY-RS
Payment Notification
Request
Signature Key + rq_datetime + order_id + PAYMENTREPORT
Response
Signature Key + rq_uuid + rs_datetime + error_code + PAYMENTREPORT-RS
Check Payment Status
Request
Signature Key + rq_datetime + order_id + CHECKSTATUS
Expire Transaction

Request

Signature Key + rq_datetime + order_id + EXPIRETRANSACTION
Credit Card - Tokenization
Request
Signature Key + comm_code + trx_id + amount
Credit Card - Capture
Request
Signature Key + comm_code + trx_id + amount
Credit Card - Void
Request
Signature Key + comm_code + trx_id
Credit Card - Refund
Request
Signature Key + comm_code + trx_id + amount
Push To Pay / QRIS / Linkage
Request
rq_uuid + comm_code + product_code + order_id + amount + signature key + PUSHTOPAY
Settlement Notification
Request
rq_uuid + rq_datetime + sender_id + receiver_id
Payment Link
Request
comm_code + orderid + amount + key + datetime + password
Komponen Signature
Komponen Keterangan
amount
Total pembayaran.
ccy
Kode mata uang transaksi.

Value:
  • Rupiah: IDR
comm_code
Merchant code yang diberikan oleh tim Espay.

Contoh:
SGWDIGALLERY
error_code
Kode error.

Contoh:
0000
Key
API Key yang diberikan oleh tim Espay.
order_id / orderid
Kode unik untuk mengidentifikasi pesanan / penagihan / faktur.

Contoh:
Nomor transaksi, invoice id, dll.
rq_uuid
Request identifier. ID unik yang digunakan untuk mengidentifikasi pesan.
rq_datetime / datetime
Tanggal dan waktu request transaksi.

Contoh:
2024-01-01 14:39:11
rs_datetime
Tanggal dan waktu response transaksi.

Contoh:
2024-01-01 14:39:11
SignatureKey
Signature key yang diberikan oleh tim Espay.

Contoh:
s8qndd0ghZdrl04r

Berikut ini langkah-langkah untuk membuat signature berdasarkan kebutuhan layanan yang digunakan:

  1. Gabungkan kombinasi signature yang sudah ditentukan oleh Espay menggunakan "##".
  • Contoh Layanan Send Invoice
Format kombinasi
##SignatureKey##rq_uuid##rq_datetime##order_id##amount##ccy##comm_code##SENDINVOICE##
##cc256d3a2d7687e6f4e1f4217c534bc6b18f66e3552aa9d312f5f4808130504##rfbd39734-ed32-490d-98c4-e91bcd91037a##2024-01-01 14:39:11##ORDER001##100000##IDR##SGWDIGALLERY##SENDINVOICE##
  • Contoh Layanan Payment Link
Format kombinasi
##comm_code##orderid##amount##key##datetime##password##
##ESPAYCOMMCODE##ORDER001-JKT-2020##200000.00## rwjfiwhrwrwhugdsdfyfyd##2020-08-08 09:17:45##P@ssw0rd!##
  1. Ubah kombinasi yang sudah disatukan pada langkah 1, menjadi Uppercase.
  • Contoh Layanan Send Invoice
Format sebelum uppercase
##cc256d3a2d7687e6f4e1f4217c534bc6b18f66e3552aa9d312f5f4808130504##rfbd39734-ed32-490d-98c4-e91bcd91037a##2024-01-01 14:39:11##ORDER001##100000##IDR##SGWDIGALLERY##SENDINVOICE##
Format setelah uppercase
##CC256D3A2D7687E6F4E1F4217C534BC6B18F66E3552AA9D312F5F4808130504##RFBD39734-ED32-490D-98C4-E91BCD91037A##2024-01-01 14:39:11##ORDER001##100000##IDR##SGWDIGALLERY##SENDINVOICE##
  • Contoh Layanan Payment Link
Khusus layanan Payment Link, format tidak diubah menjadi uppercase.
##ESPAYCOMMCODE##ORDER001-JKT-2020##200000.00## rwjfiwhrwrwhugdsdfyfyd##2020-08-08 09:17:45##P@ssw0rd!##
  1. Ubah format menggunakan hash dengan algoritma SHA-256.
  • Contoh Layanan Send Invoice
Format sebelum hash SHA-256
##CC256D3A2D7687E6F4E1F4217C534BC6B18F66E3552AA9D312F5F4808130504##RFBD39734-ED32-490D-98C4-E91BCD91037A##2024-01-01 14:39:11##ORDER001##100000##IDR##SGWDIGALLERY##SENDINVOICE##
Format setelah hash SHA-256
b474188c95439412262f5808473caa8c12676acf4381842ff43b1b4a22493808
  • Contoh Layanan Payment Link
Format sebelum hash SHA-256
##ESPAYCOMMCODE##ORDER001-JKT-2020##200000.00## rwjfiwhrwrwhugdsdfyfyd##2020-08-08 09:17:45##P@ssw0rd!##
Format setelah hash SHA-256
b958d232cb4b5aad3ee37f44ebc89f149083cdd5f8ae100fa0d96776bcae718d

Try It!

Anda bisa coba masukkan data sesuai dengan input yang telah disediakan. Setelah itu Anda submit dan lihat hasilnya!

Request

Value

Response



PHP - Non Payment Link

$data = strtoupper('##S8QNDDOGHZDRLO4RR##2024-04-30 17:48:24##145000065##SENDINVOICE##');
$signature = hash('sha256', $data);
      
            



JAVA - Non Payment Link


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 ="##S8QNDDOGHZDRLO4RR##2024-04-30 17:48:24##145000065##SENDINVOICE##";
        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());
    }
}
          



PHP - Payment Link


$data = '##SGWMAGENTO##PAYLINK0312242##20000.00##7bc074f97c3131d2e290a4707a54a623##2024-12-03 23:30:45##TEST##';
$signature = hash('sha256', $data);
      
            



Scroll to Top