Tagih.id

Hash-Based 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

Payment Notification

Request

Signature Key + rq_datetime + trx_id + collector + total_amount + PAYMENTREPORT
Send Multiple Invoice

Request

rq_uuid + rq_datetime + comm_code + signature key + SENDINVOICEMULTI
Komponen Signature
Komponen Keterangan
collector
Identitas kolektor.
comm_code
Kode wilayah member.
rq_datetime
Tanggal dan waktu request transaksi.

Contoh:
2024-01-01 14:39:11
rq_uuid
Request identifier. ID unik yang digunakan untuk mengidentifikasi pesan.
Signature Key
Signature key yang diberikan oleh tim Espay.

Contoh:
s8qndd0ghZdrl04r
total_amount
Total tagihan yang sudah dibayar.

Format:
250000
trx_id
ID transaksi dari Espay.

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 Multiple Invoice
Format kombinasi
##rq_uuid##rq_datetime##comm_code##signature key##SENDINVOICEMULTI##
##4445a53b-4bac-4159-ac69-f02149f53302##2021-06-2313:29:49##SGWYESSISHOP##zwvqhkqqo4gvfwwk##SENDINVOICEMULTI##
  1. Ubah kombinasi yang sudah disatukan pada langkah 1, menjadi Uppercase.
  • Contoh Layanan Send Multiple Invoice
Format sebelum uppercase
##4445a53b-4bac-4159-ac69-f02149f53302##2021-06-2313:29:49##SGWYESSISHOP##zwvqhkqqo4gvfwwk##SENDINVOICEMULTI##
Format setelah uppercase
##4445A53B-4BAC-4159-AC69-F02149F53302##2021-06-2313:29:49##SGWYESSISHOP##ZWVQHKQQO4GVFWWK##SENDINVOICEMULTI##
  1. Ubah format menggunakan hash dengan algoritma SHA-256.
  • Contoh Layanan Send Multiple Invoice
Format sebelum hash SHA-256
##4445A53B-4BAC-4159-AC69-F02149F53302##2021-06-2313:29:49##SGWYESSISHOP##ZWVQHKQQO4GVFWWK##SENDINVOICEMULTI##
Format setelah hash SHA-256
adceabc20f3d11ba1c0e9ea3c2fd58c59406823a5644222ca5cfabd56194f157


PHP

$data = strtoupper('##4445a53b-4bac-4159-ac69-f02149f53302##2021-06-2313:29:49##SGWYESSISHOP##zwvqhkqqo4gvfwwk##SENDINVOICEMULTI##');
$signature = hash('sha256', $data);
      
            


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 ="##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());
    }
}
          



Scroll to Top