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
  • 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##

  • Langkah 2
  • 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);

  • Langkah 3
  • 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
  • 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##

  • Langkah 2
  • Hasil huruf besar dari Langkah 1:
    ##ZWVQHKQQO4GVFWWK##2020-08-
    13T04:20:43+0700##BDBF207EFA0F59E83E31BC3F5E2872FE##MERCHANTINFO##

  • Langkah 3
  • 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.