Dokumentasi API

Symmetric Signature

Symmetric Signature digunakan untuk melakukan verifikasi permintaan layanan SNAP Anda. Signature ini dihasilkan menggunakan client secret dengan algoritma SHA-512 HMAC, kemudian encode hasilnya dalam format Base64 untuk memastikan keamanan dan integritas data.

Pembuatan Signature

  1. Siapkan data yang diperlukan untuk membuat signature.
  2. Minify request body

    HTTP body before minify:
    {
       "partnerServiceId": "   12334",
       "customerNo" : "318574181222",
       "virtualAccountName" : "Setya Wardana",
       "trxId": "2MkdEnmf434udFGuk1hE9sFL49Myv2q4xTQP",
       "virtualAccountTrxType": "C",
       "totalAmount": {
           "value": "10000.00",
           "currency": "IDR"
       },
       "additionalInfo": {
           "callbackUrl": "http://partner-domain/callback",
           "bankCode": "008"
       }
    } HTTP body after minify: {"partnerServiceId":"12334","customerNo":"318574181222","virtualAccountName":"SetyaWardana","trxId":"2MkdEnmf434udFGuk1hE9sFL49Myv2q4xTQP","virtualAccountTrxType":"C","totalAmount":{"value":"10000.00","currency":"IDR"},"additionalInfo":{"callbackUrl":"http://127.0.0.1:10007/callback/partner","bankCode":"008"}}
  3. Lowercase(HexEncode(SHA-256(RequestBody))).
    Mengubah request body menjadi hash menggunakan SHA-256, kemudian konversi hasil hash tersebut ke dalam format Hexadecimal, dan terakhir mengubah seluruh hasilnya menjadi huruf kecil. 080fd80881349db059d87cc2a93af2ec9c00c74dac5e97faca0b544732c8de18
  4. Compose string untuk proses sign.
    Membuat sebuah string gabungan yang akan digunakan untuk menghasilkan signature digital. String ini biasanya terdiri dari beberapa elemen penting, yaitu sebagai berikut:
    <HTTP METHOD> + ":" + <RELATIVE PATH URL> + ":" + <ACCESS TOKEN B2B> + ":" + LowerCase(HexEncode(SHA-256(Minify(<HTTP BODY>)))) + ":" + <X-TIMESTAMP>
    Contoh:
    POST:/snap/v1.0/transfer-va/create-va:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg:080fd80881349db059d87cc2a93af2ec9c00c74dac5e97faca0b544732c8de18:2025-01-30T12:38:12+07:00
  5. Enkripsi String signature dari proses sebelumnya ke SHA-512 HMAC menggunakan Client Secret, kemudian ubah menjadi format Base64. Berikut contoh nilai yang dihasilkan:
    HFplT7auM0pHh9tOBl8gTpsQ4kDERjgi6SNAG+WEyA+ThpuquMknqV8EpLMS0lzi9DVOrseXjqdh+fl5XLN39A==
  6. Tempatkan string signature pada header HTTP dengan nama “X-SIGNATURE” untuk memastikan keamanan dan validitas permintaan.
    X-SIGNATURE:
    HFplT7auM0pHh9tOBl8gTpsQ4kDERjgi6SNAG+WEyA+ThpuquMknqV8EpLMS0lzi9DVOrseXjqdh+fl5XLN39A==