Digital Signature
Untuk memastikan permintaan pembayaran berasal dari pedagang ESPAY terdaftar, pedagang akan menandatangani payload menggunakan RSA dengan algoritma SHA256 kemudian ESPAY akan memverifikasi tanda tangan menggunakan kunci publik dari pedagang.
Signature Elements:
Element | Value |
Private Key | Dibuat oleh Pedagang |
Fields Combination | uuid + kode pedagang + id pembayaran + kode bank + produk bank + Salt String |
Steps:
Contoh untuk menghasilkan tanda tangan digital untuk Redirect Forward (dalam PHP):
Contoh data:
uuid : d1cc2fde-4f62-8a50-c0920e9c83de
kode pedagang : b9fa9537ea53ae6209a06d6e9ae204f0
ID pembayaran : ESPTRX21183111
kode bank : 014
produk bank : KLIKPAYBCA
Salt String : REDIRECTF
- Langkah 1
- Langkah 2
- Langkah 3
Gabungkan parameter data yang digunakan secara berurutan, dipisahkan dengan tanda angka ganda "##"
## uuid ## kode pedagang ## id pembayaran ## kode bank ## produk bank ## garam ##
Hasilnya adalah:
##d1cc2fde-4f62-8a50-c0920e9c83de##b9fa9537ea53ae6209a06d6e9ae204f0##ESPTRX21183111##014##KLIKPAYBCA##REDIRECTF##
Hitung tsignature menggunakan RSA dengan algoritma SHA256
$data = ##d1cc2fde-4f62-8a50-
c0920e9c83de##b9fa9537ea53ae6209a06d6e9ae204f0##ESPTRX21183111##014##KLIKPAYBCA##REDIRECTF##
$privateKey = openssl_pkey_get_private("file://path/to/key/private.pem");
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
Hasil enkode dari Langkah 2 ke base64:
$signature = base64_encode($signature)
Gunakan hasil dari Langkah 3 sebagai nilai bidang tanda tangan pada formulir Pengalihan Pengalihan ESPAY.
API Signature
Signature Elements
API | Message | Combination |
Inquiry Transaction | Request | Signature Key + rq_datetime + order_id + INQUIRY |
Response | Signature Key + rq_uuid + rs_datetime + order_id + error_code + INQUIRY-RS | |
Payment Report / 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 |
Langkah:
Berikut adalah contoh untuk membuat tanda tangan untuk Enquiry Merchant Info API:
Contoh data:
Signature Key : zwvqhkqqo4gvfwwk
tanggal waktu : 2020-08-13T04:20:43+0700
Kunci (Kode Pedagang) : bdbf207efa0f59e83e31bc3f5e2872fe
Salt string : MERCHANTINFO
- Langkah 1
- Langkah 2
- Langkah 3
Gabungkan semua parameter yang digunakan secara berurutan, dipisahkan dengan tanda angka ganda "##"
## Kunci Tanda Tangan ## rq_datetime ## Kode Pedagang ## MERCHANTINFO ##
Jadi, hasilnya adalah:
##zwvqhkqqo4gvfwwk##2020-08-
13T04:20:43+0700##bdbf207efa0f59e83e31bc3f5e2872fe##MERCHANTINFO##
Hasil huruf besar dari Langkah 1:
##ZWVQHKQQO4GVFWWK##2020-08-
13T04:20:43+0700##BDBF207EFA0F59E83E31BC3F5E2872FE##MERCHANTINFO##
Hasil hash dari Langkah 2 menggunakan metode sha256:
hash = hash(“sha256”, ##ZWVQHKQQO4GVFWWK##2020-08-
13T04:20:43+0700##BDBF207EFA0F59E83E31BC3F5E2872FE##MERCHANTINFO##)
Hasil: 1c2acc38d8d5c15b3bb04fb05ebf47281dbe7c48714f9bc5362cd12ab8d57bcd
Gunakan hasil dari Langkah 3 sebagai value signature.