QRIS
QR MPM Generate
API Generate QR MPM (Merchant Presented Mode) adalah layanan API yang dapat digunakan oleh Merchant untuk mendapatkan sebuah kode QR, Kemudian merchant dapat menampilkan kode QR tersebut untuk dapat menerima pembayaran dari pelanggan menggunakan aplikasi penyelenggara dengan cara melakukan scan.
- Method:
POST
- Type:
application/json
- Path:
/qris/v1.0/qr/qr-mpm-generate
- Service Code:
47
Header QR MPM Generate
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
Content-Type | string | ✓ | string yang menunjukkan jenis media. | application/json |
X-TIMESTAMP | string | ✓ | ISO-8601 | 2022-09-16T13:00:00+07:00 |
X-SIGNATURE | string | ✓ | Lihat Doitpay SNAP API Documentation Authentication bagian symmetric signature | |
X-PARTNER-ID | string | ✓ | Merchant Ref dari dashboard Doitpay | 01JP4QP4R908GVK9X5KN7YCJEG |
X-EXTERNAL-ID | string(64) | ✓ | Request ID yang unik. | |
CHANNEL-ID | string | ✓ | Berikut list nilai yang bisa digunakan :NQ(Nobu) | SP |
Authorization | string | ✓ | Otentikasi dengan bearer token lihat disini pada bagian access token | Bearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0 |
Request body QR MPM Generate
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
partnerReferenceNo | String(64) | ✓ | Nomor transaksi dari merchant. | INV123456 |
validityPeriod | String(4) | ✓ | Waktu kadaluwarsa transaksi dalam ISO-8601. | 2022-09-16T13:00:00+07:00 |
additionalInfo | Object | ✗ | Lihat tabel additionalInfo dibawah ini. | |
amount | Object | ✓ | Lihat tabel amount dibawah ini. | |
merchantId | String | ✗ | Merchant identifier that is unique per each merchant (MPAN) | |
subMerchantId | String | ✗ | SubMerchantId Sub merchant id (MID) | |
storeId | String | ✗ | StoreId this should be defined merchant to PG (NMID) |
Amount object QR MPM Generate
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
value | String | ✓ | ISO4217 dengan 2 desimal. | 10000.00 |
currency | String(3) | ✓ | Kode mata uang, hanya menerima IDR . | IDR |
Contoh Request QR MPM Generate
{
"partnerReferenceNo": "1234567880",
"validityPeriod": "2022-09-16T13:00:00+07:00",
"additionalInfo": {
"deviceId": "12345679237",
"channel": "mobilephone"
},
"amount": {
"currency": "IDR",
"value": "10000.00"
},
"merchantId": "merchantId ",
"submerchantId": "submerchantId",
"storeId": "storeId"
}
Response Body QR MPM Generate
Parameter | Tipe | Keterangan |
---|---|---|
responseCode | string | Kode response, lihat bagian daftar Response Code di bawah |
responseMessage | string | Penjelasan terhadap response code yang diterima |
referenceNo | string | Nomor transaksi dari provider. |
partnerReferenceNo | string | Nomor transaksi dari merchant. |
qrContent | string | string kode QR. |
qrImage | string | base64 dari gambar kode QR |
qrUrl | string | URL untuk mengunduh gambar kode QR |
additionalInfo | string | |
merchantName | string | Nama merchant |
storeId | string | Nomor unik merchant (NMID) |
Response Code QR MPM Generate
Code | Message | Keterangan |
---|---|---|
2004700 | Success | Berhasil. |
4004700 | Service Not Implemented | Service tidak terdaftar pada request CHANNEL-ID . |
4004701 | Invalid Field Format | Nilai value yang tidak tepat untuk parameter tersebut. |
4004702 | Missing Mandatory Field, {PartnerReferenceNo} | Parameter PartnerReferenceNo tidak ada. |
4004702 | Missing Mandatory Field, {Amount} | Parameter Amount tidak ada. |
4004702 | Missing Mandatory Field, {AdditionalInfo.ReturnUrl} | Parameter ReturnUrl tidak ada. |
4014700 | Unauthorized Signature | Kekeliruan pada Signature. |
4014700 | Unauthorized stringToSign | Kekeliruan pada Signature. |
4014700 | Unauthorized Client | Kekeliruan pada PARTNER-ID. |
4014701 | Invalid Access Token | Access Token Kadaluarsa atau keliru. |
4044701 | Invalid Request | Nilai value yang tidak tepat untuk parameter. |
4044713 | Invalid Amount, Amount must be equal with total price item details | Kekeliruan pada value parameter amount dan price di item detail. |
4094700 | Conflict | Kekeliruan pada External ID. |
4094700 | The expired in field must be at least 30. | Untuk validityPeriod anda dapat mengaturnya minimal 30 menit |
QR MPM Query
API ini akan membantu Anda untuk pengecekan status dari transaksi yang telah dilakukan. Seperti yang Anda lihat pada urutan di atas. Anda mungkin perlu menanyakan kapan ada konfirmasi pembayaran dari pengguna. Atau sebagai pilihan keamanan, Anda mungkin menanyakan status setelah menerima Payment Notify. Ini membantu Anda memastikan status pembayaran asli.
- Method:
POST
- Type:
application/json
- Path:
/qris/v1.0/qr/qr-mpm-query
- Service Code:
51
Header QR MPM Query
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
Content-Type | string | ✓ | string yang menunjukkan jenis media. | application/json |
X-TIMESTAMP | string | ✓ | ISO-8601 | 2022-09-16T13:00:00+07:00 |
X-SIGNATURE | string | ✓ | Lihat Doitpay SNAP API Documentation Authentication bagian symmetric signature | |
X-PARTNER-ID | string | ✓ | Merchant Ref dari dashboard Doitpay | 01JP4QP4R908GVK9X5KN7YCJEG |
X-EXTERNAL-ID | string(64) | ✓ | Request ID yang unik. | |
CHANNEL-ID | string | ✓ | Berikut list nilai yang bisa digunakan :NQ(Nobu) | SP |
Authorization | string | ✓ | Otentikasi dengan bearer token lihat disini pada bagian access token | Bearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0 |
Request Body QR MPM Query
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
originalPartnerReferenceNo | string | ✓ | Nilai berasal dari parameter PartnerReferenceNo pada response debit payment. | INV123456 |
originalReferenceNo | string | ✓ | Nilai berasal dari parameter ReferenceNo pada response API mpm generate | D00XXXWIG5BV1WW8F3RMF |
serviceCode | string | ✓ | Indikator jenis transaksi (kode layanan permintaan transaksi). | SP |
Response Body QR MPM Query
Parameter | Tipe | Keterangan |
---|---|---|
responseCode | string | Kode response, lihat bagian daftar Response Code di bawah |
responseMessage | string | Penjelasan terhadap response code yang diterima |
originalReferenceNo | string | Nomor transaksi dari provider. |
serviceCode | string | Indikator jenis transaksi (kode layanan permintaan transaksi). |
latestTransactionStatus | string | status transaksi |
paidTime | string | waktu transaksi dengan format ISO-8601 |
amount | object | lihat amount object di bawah |
feeAmount | object | lihat amount object di bawah |
Amount object QR MPM Query
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
value | String | ✓ | ISO4217 dengan 2 desimal. | 10000.00 |
currency | String(3) | ✓ | Kode mata uang, hanya menerima IDR . | IDR |
Response Code QR MPM Query
Code | Message | Keterangan |
---|---|---|
2005100 | Success | Transaksi berhasil di proses. |
2005101 | Invalid Token:Anda Tidak Memiliki Akses | Kekeliruan pada Request credentialCode . |
4005101 | Invalid Field Format | Nilai value yang tidak tepat untuk parameter. |
4005102 | Missing Mandatory Field, {originalPartnerReferenceNo} | Parameter originalPartnerReferenceNo tidak ada. |
4005102 | Missing Mandatory Field, {originalReferenceNo} | Parameter originalReferenceNo tidak ada. |
4005102 | Missing Mandatory Field, {serviceCode} | Parameter serviceCode tidak ada. |
4005102 | Invalid Mandatory Header X-EXTERNAL-ID | Parameter X-EXTERNAL-ID tidak ada. |
4005102 | Invalid Mandatory Header CHANNEL-ID | Parameter CHANNEL-ID tidak ada. |
4015100 | Unauthorized Signature | Kekeliruan pada Signature. |
4015100 | Unauthorized stringToSign | Kekeliruan pada Signature. |
4015100 | Unauthorized Client | Kekeliruan pada PARTNER-ID. |
4015101 | Invalid Access Token | Access Token Kadaluarsa atau keliru. |
4045101 | Invalid Request | Kesalahan format pada saat request. |
5005101 | Internal Server Error | Error pada saat melakukan proses permohonan. |
Payment Notify (callback)
- Method:
POST
- Type:
application/json
- URL:
https://yourdomain.com/v1.0/qr/qr-mpm-notify
- Endpoint:
/v1.0/qr/qr-mpm-notify
- Service Code:
52
Symmetric Signature Payment Notification
Saat menerima notifikasi pembayaran, API anda perlu melakukan validasi signature untuk menjamin proses keamanan data. Berikut penjelasannya:
Formula :
stringToSign = HttpMethod + “:” + Endpoint + “:” + MerchantRef + “:” +
LowerCase(HexEncode(SHA-256(Minify(RequestBody)))) + “:” + Timestamp
hash = HMAC_SHA512(stringToSign, secretKey)
signature = Base64(hash)
Buatlah sebuah variabel stringToSign
.
-
HttpMethod
adalah string nama metode yang sedang digunakan. Bisa sajaPOST
,PUT
, atauDELETE
. -
Endpoint
adalah relative URL atau full path URL yang mana tanpa host atau domainnya. -
MerchantRef
adalah nilai token yang Anda dapatkan dari Merchant Reference. -
RequestBody
adalah payload yang ingin Anda kirim. -
Timestamp
menggunakan ISO-8601. -
secretKey
adalah Merchant Reference.
Hash stringToSign
menggunakan HMAC_SHA512
cryptographic dan secret key (nama lain saat ini adalah API key). Kemudian, encode dengan Base 64.
Masukkan nilainya ke X-SIGNATURE
.
Header Payment
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
X-TIMESTAMP | string | ✓ | ISO-8601 | 2022-09-16T13:00:00+07:00 |
X-SIGNATURE | string | ✓ | Lihat Symmetric Signature Payment Notification | |
X-PARTNER-ID | string | ✓ | Merchant Ref dari dashboard Doitpay | 01JP4QP4R908GVK9X5KN7YCJEG |
X-EXTERNAL-ID | string | ✓ | Request ID yang unik. | |
CHANNEL-ID | string | ✓ | Nilai yang digunakan harus sesuai dengan detail transaksi yang telah di generate sebelumnya. Berikut list Nilai yang digunakan NQ | NQ |
Request Body Payment
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
originalPartnerReferenceNo | string(64) | ✓ | Nilai berasal dari parameter PartnerReferenceNo pada response qris mpm generate | INV1708656785 |
originalReferenceNo | string(64) | ✓ | Nilai berasal dari parameter ReferenceNo pada response qris mpm generate | D00XXXWIG5BV1WW8F3RMF |
latestTransactionStatus | String(2) | ✓ | Kode dari status transaksi. | 00 |
amount | Object | ✓ | Lihat tabel di bawah ini. | |
additionalInfo | Object | ✓ | Lihat tabel di bawah ini. |
Amount object Payment
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
value | String | ✓ | ISO4217 dengan 2 desimal. | 10000.00 |
currency | String(3) | ✓ | Kode mata uang, hanya menerima IDR . | IDR |