Skip to main content

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

ParameterTipeMandatoriKeteranganContoh
Content-Typestringstring yang menunjukkan jenis media.application/json
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat Doitpay SNAP API Documentation Authentication bagian symmetric signature
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)Request ID yang unik.
CHANNEL-IDstringBerikut list nilai yang bisa digunakan :NQ(Nobu)SP
AuthorizationstringOtentikasi dengan bearer token lihat disini pada bagian access tokenBearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0

Request body QR MPM Generate

ParameterTipeMandatoriKeteranganContoh
partnerReferenceNoString(64)Nomor transaksi dari merchant.INV123456
validityPeriodString(4)Waktu kadaluwarsa transaksi dalam ISO-8601.2022-09-16T13:00:00+07:00
additionalInfoObjectLihat tabel additionalInfo dibawah ini.
amountObjectLihat tabel amount dibawah ini.
merchantIdStringMerchant identifier that is unique per each merchant (MPAN)
subMerchantIdStringSubMerchantId Sub merchant id (MID)
storeIdStringStoreId this should be defined merchant to PG (NMID)

Amount object QR MPM Generate

ParameterTipeMandatoriKeteranganContoh
valueStringISO4217 dengan 2 desimal.10000.00
currencyString(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

ParameterTipeKeterangan
responseCodestringKode response, lihat bagian daftar Response Code di bawah
responseMessagestringPenjelasan terhadap response code yang diterima
referenceNostringNomor transaksi dari provider.
partnerReferenceNostringNomor transaksi dari merchant.
qrContentstringstring kode QR.
qrImagestringbase64 dari gambar kode QR
qrUrlstringURL untuk mengunduh gambar kode QR
additionalInfostring
merchantNamestringNama merchant
storeIdstringNomor unik merchant (NMID)

Response Code QR MPM Generate

CodeMessageKeterangan
2004700SuccessBerhasil.
4004700Service Not ImplementedService tidak terdaftar pada request CHANNEL-ID.
4004701Invalid Field FormatNilai value yang tidak tepat untuk parameter tersebut.
4004702Missing Mandatory Field, {PartnerReferenceNo}Parameter PartnerReferenceNo tidak ada.
4004702Missing Mandatory Field, {Amount}Parameter Amount tidak ada.
4004702Missing Mandatory Field, {AdditionalInfo.ReturnUrl}Parameter ReturnUrl tidak ada.
4014700Unauthorized SignatureKekeliruan pada Signature.
4014700Unauthorized stringToSignKekeliruan pada Signature.
4014700Unauthorized ClientKekeliruan pada PARTNER-ID.
4014701Invalid Access TokenAccess Token Kadaluarsa atau keliru.
4044701Invalid RequestNilai value yang tidak tepat untuk parameter.
4044713Invalid Amount, Amount must be equal with total price item detailsKekeliruan pada value parameter amount dan price di item detail.
4094700ConflictKekeliruan pada External ID.
4094700The 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

ParameterTipeMandatoriKeteranganContoh
Content-Typestringstring yang menunjukkan jenis media.application/json
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat Doitpay SNAP API Documentation Authentication bagian symmetric signature
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)Request ID yang unik.
CHANNEL-IDstringBerikut list nilai yang bisa digunakan :NQ(Nobu)SP
AuthorizationstringOtentikasi dengan bearer token lihat disini pada bagian access tokenBearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0

Request Body QR MPM Query

ParameterTipeMandatoriKeteranganContoh
originalPartnerReferenceNostringNilai berasal dari parameter PartnerReferenceNo pada response debit payment.INV123456
originalReferenceNostringNilai berasal dari parameter ReferenceNo pada response API mpm generateD00XXXWIG5BV1WW8F3RMF
serviceCodestringIndikator jenis transaksi (kode layanan permintaan transaksi).SP

Response Body QR MPM Query

ParameterTipeKeterangan
responseCodestringKode response, lihat bagian daftar Response Code di bawah
responseMessagestringPenjelasan terhadap response code yang diterima
originalReferenceNostringNomor transaksi dari provider.
serviceCodestringIndikator jenis transaksi (kode layanan permintaan transaksi).
latestTransactionStatusstringstatus transaksi
paidTimestringwaktu transaksi dengan format ISO-8601
amountobjectlihat amount object di bawah
feeAmountobjectlihat amount object di bawah

Amount object QR MPM Query

ParameterTipeMandatoriKeteranganContoh
valueStringISO4217 dengan 2 desimal.10000.00
currencyString(3)Kode mata uang, hanya menerima IDR.IDR

Response Code QR MPM Query

CodeMessageKeterangan
2005100SuccessTransaksi berhasil di proses.
2005101Invalid Token:Anda Tidak Memiliki AksesKekeliruan pada Request credentialCode.
4005101Invalid Field FormatNilai value yang tidak tepat untuk parameter.
4005102Missing Mandatory Field, {originalPartnerReferenceNo}Parameter originalPartnerReferenceNo tidak ada.
4005102Missing Mandatory Field, {originalReferenceNo}Parameter originalReferenceNo tidak ada.
4005102Missing Mandatory Field, {serviceCode}Parameter serviceCode tidak ada.
4005102Invalid Mandatory Header X-EXTERNAL-IDParameter X-EXTERNAL-ID tidak ada.
4005102Invalid Mandatory Header CHANNEL-IDParameter CHANNEL-ID tidak ada.
4015100Unauthorized SignatureKekeliruan pada Signature.
4015100Unauthorized stringToSignKekeliruan pada Signature.
4015100Unauthorized ClientKekeliruan pada PARTNER-ID.
4015101Invalid Access TokenAccess Token Kadaluarsa atau keliru.
4045101Invalid RequestKesalahan format pada saat request.
5005101Internal Server ErrorError 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.

  1. HttpMethod adalah string nama metode yang sedang digunakan. Bisa saja POST, PUT, atau DELETE.

  2. Endpoint adalah relative URL atau full path URL yang mana tanpa host atau domainnya.

  3. MerchantRef adalah nilai token yang Anda dapatkan dari Merchant Reference.

  4. RequestBody adalah payload yang ingin Anda kirim.

  5. Timestamp menggunakan ISO-8601.

  6. 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

ParameterTipeMandatoriKeteranganContoh
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat Symmetric Signature Payment Notification
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstringRequest ID yang unik.
CHANNEL-IDstringNilai yang digunakan harus sesuai dengan detail transaksi yang telah di generate sebelumnya. Berikut list Nilai yang digunakan NQNQ

Request Body Payment

ParameterTipeMandatoriKeteranganContoh
originalPartnerReferenceNostring(64)Nilai berasal dari parameter PartnerReferenceNo pada response qris mpm generateINV1708656785
originalReferenceNostring(64)Nilai berasal dari parameter ReferenceNo pada response qris mpm generateD00XXXWIG5BV1WW8F3RMF
latestTransactionStatusString(2)Kode dari status transaksi.00
amountObjectLihat tabel di bawah ini.
additionalInfoObjectLihat tabel di bawah ini.

Amount object Payment

ParameterTipeMandatoriKeteranganContoh
valueStringISO4217 dengan 2 desimal.10000.00
currencyString(3)Kode mata uang, hanya menerima IDR.IDR