QRIS MPM (Acquirer)
Ringkasan
Layanan ini digunakan untuk memungkinkan pedagang menerima pembayaran QRIS MPM dengan integrasi API ke Paydia sebagai pihak penerima. Dalam layanan ini, terdapat 4 API. Informasi rinci akan dijelaskan pada bagian selanjutnya.
Spesifikasi API Paydia akan mencakup 4 titik utama sebagai berikut:
| No | Nama API | Deskripsi |
|---|---|---|
| 1 | Buat QR MPM | API ini digunakan untuk membuat QRIS dari pedagang ke Paydia sebagai pihak penerima |
| 2 | Pertanyaan Status Transaksi | API ini digunakan untuk menanyakan status pembayaran dan informasi dari pedagang ke Paydia |
| 3 | Pengembalian Pembayaran | API ini digunakan untuk mengembalikan pembayaran dari platform pedagang ke Paydia |
| 4 | Pemberitahuan Pembayaran | API ini digunakan untuk memberi tahu status pembayaran dan informasi dari Paydia kepada pedagang |
Pembuatan dan Validasi Signature
Berikut akan dijelaskan tentang Pembuatan dan validasi Signature.
Simetris dengan Token Akses B2B (HMAC_SHA512)
Langkah-langkah berikut akan menjelaskan tentang Simetris dengan Token Akses B2B (HMAC_SHA512).
Pembuatan Signature Digital
Terapkan Signature Token B2B
- Compose string yang akan ditandatangani:
- String Signature dihasilkan dari string yang akan ditandatangani di atas dengan menerapkan SHA-256 dengan enkripsi RSA-2048 menggunakan kunci pribadi pkcs8, dan kemudian kodekan hasilnya ke base64.
- Letakkan string Signature ke header HTTP “X-SIGNATURE“ saat memanggil API untuk menerapkan token akses B2B.
| X-CLIENT-KEY + "|" + X-TIMESTAMP |
Signature Transaksi
- Compose string yang akan ditandatangani:
- String Signature dihasilkan dari string yang akan ditandatangani di atas dengan menerapkan HMAC_SHA512 hashing menggunakan kunci rahasia yang diberikan oleh Paydia, dan kemudian kodekan hasilnya ke base64.
- Letakkan string Signature ke header HTTP “X-SIGNATURE“ saat memanggil API Paydia.
| HTTP METHOD + ”:” + RELATIVE PATH URL + “:“ + B2B ACCESS TOKEN + “:“ + LowerCase(HexEncode(SHA-256(Minify(HTTP BODY)))) + “:“ + X-TIMESTAMP |
Validasi Signature Digital
Terapkan Signature Token B2B
Langkah-langkah berikut adalah Pembuatan Signature digital:
- Ambil Signature dari header HTTP “X-SIGNATURE“.
- Deskripsi Signature menggunakan kunci publik yang sesuai dengan kunci pribadi yang digunakan untuk menghasilkan Signature.
- Verifikasi kebenaran Signature berdasarkan SHA-256 dengan enkripsi Signature RSA-2048 terhadap string yang akan ditandatangani.
- Jika verifikasi benar, maka konsumsi pesan tersebut.
Signature Transaksi
- Compose string yang akan ditandatangani:
- Hasilkan Signature dari string yang akan ditandatangani di atas dengan menerapkan penggabungan HMAC_SHA512 menggunakan kunci rahasia yang diberikan oleh Paydia, dan kemudian kodekan hasilnya ke base64.
- Ambil Signature dari header HTTP “X-SIGNATURE“.
- Bandingkan nilai antara X-SIGNATURE dan Signature yang dihasilkan, jika nilai-nilai tersebut sama, maka konsumsi pesan tersebut.
| HTTP METHOD + ”:” + RELATIVE PATH URL + “:“ + B2B ACCESS TOKEN + “:“ + LowerCase(HexEncode(SHA-256(Minify(HTTP BODY)))) + “:“ + X-TIMESTAMP |
Asimetris tanpa Token Akses (SHA256withRSA)
Langkah-langkah berikut akan menjelaskan tentang Asimetris tanpa Token Akses (SHA256withRSA).
Pembuatan Kunci Asimetris
Berikut akan dijelaskan tentang Pembuatan kunci asimetris:
- Buat Kunci Pribadi
- Ekspor Kunci Publik
- Kodekan Kunci Pribadi ke PKCS#8
| openssl genrsa -out rsa_private_key.pem 2048 |
| openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout |
| openssl pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt |
Mittra harus menghasilkan Signature dengan pkcs8_rsa_private_key.pem dan Paydia akan menggunakan rsa_public_key.pem untuk memvalidasi Signature dan sebaliknya.
Pembuatan Signature Digital
Berikut adalah langkah-langkah Pembuatan Signature digital:
- Compose string yang akan ditandatangani:
- Terapkan token:
- Transaksional:
- String Signature dihasilkan dari string yang akan ditandatangani di atas dengan menerapkan SHA-256 dengan enkripsi RSA-2048 menggunakan kunci pribadi pkcs8, dan kemudian kodekan hasilnya ke base64.
- Letakkan string Signature ke header HTTP “X-SIGNATURE“.
| X-CLIENT-KEY + "|" + X-TIMESTAMP |
| HTTP METHOD + ":" + RELATIVE PATH URL + ":" + LowerCase(HexEncode(SHA-256(Minify(HTTP BODY))) + ":" + X-TIMESTAMP |
Contoh:
| X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5 |
Validasi Signature Digital
Berikut adalah langkah-langkah validasi Signature digital:
- Ambil Signature dari header HTTP “X-SIGNATURE“.
- Dekripsi Signature menggunakan kunci publik yang sesuai dengan kunci pribadi yang digunakan untuk menghasilkan Signature.
- Verifikasi kebenaran Signature berdasarkan SHA-256 dengan enkripsi Signature RSA-2048 terhadap string yang akan ditandatangani.
- Jika verifikasi benar, maka konsumsi pesan tersebut.
Versi Dokumen
Tabel berikut digunakan untuk menunjukkan versi dokumen ini:
| No | Tanggal | Versi | Catatan | Halaman |
|---|---|---|---|---|
| 1 | 10 Mei 2023 | 1.2.2 |
| |
| 2 | 20 Oktober 2022 | 1.0.0 | Rilis Awal | Semua halaman SNAP |