Skip to main content

Modern Retail

SNAP API

Integrasi Modern Retail

Modern Retail adalah metode pembayaran tunai melalui gerai minimarket mitra (Indomaret, Alfamart, dan Fastpay) yang terintegrasi penuh melalui standar SNAP BI. Dukung kemudahan pembayaran tunai secara real-time via callback.

Jenis Transaksi Modern Retail

Layanan Modern Retail Winpay mendukung tipe transaksi berikut:

ONE OFF (c)

Kode pembayaran sekali pakai yang otomatis tidak aktif setelah satu kali pembayaran sukses dilakukan.

Metode Pembayaran Yang Didukung

Berikut adalah metode pembayaran ritel modern yang didukung:

Channel CodeInstitusiOne Off (c)Open Recurring (o)Close Recurring (r)
INDOMARETIndomaret
ALFAMARTAlfamart
FASTPAYFastpay

Transaksi Modern Retail

1. Create Payment Code

POST/v1.0/transfer-va/create-vaService Code: 27

Layanan ini digunakan untuk membuat kode pembayaran Modern Retail baru.

Payload Request

ParameterTipe DataWajibDeskripsi
customerNoStringCNomor Virtual Account (if applicable)
Wajib jika virtualAccountTrxType = o / r
Length: 3-14
Karakter yang Diizinkan: numeric
Jika virtualAccountTrxType = c dan nomor VA tidak tersedia, maka nomor VA akan di generate secara acak
virtualAccountNameStringYNama Pelanggan
Length: 5-24
Karakter yang Diizinkan: huruf (a-z, A-Z), angka (0-9), garis bawah (_), tanda hubung (-), dan spasi (\s)
trxIdStringYNomor transaksi
Length: 5-50
Karakter yang Diizinkan: huruf (a-z, A-Z), angka (0-9), garis bawah (_) dan tanda hubung (-)
totalAmountObjectCTotal nominal transaksi
Wajib jika virtualAccountTrxType = c / r
valueStringYNilai transaksi
Length: 1-14
Karakter yang Diizinkan: numeric
currencyStringYKode mata uang
Length: 3
Allowed Value: IDR
virtualAccountTrxTypeStringYJenis transaksi
Allowed Value: c (One Off)
expiredDateStringCTanggal expired transaksi
Format: YYYY-MM-DDTHH:mm:ss+07:00
Wajib jika virtualAccountTrxType = c / r
Harus lebih dari 1 menit dan maksimal 3 bulan dari waktu request
additionalInfoObjectYInformasi tambahan
channelStringYKode channel
Allowed Value: INDOMARET / ALFAMART / FASTPAY
{
"customerNo": "000003212",
"virtualAccountName": "Chus Pandi",
"trxId": "INV-000000023212x2221",
"totalAmount": {
"value": "25000.00",
"currency": "IDR"
},
"virtualAccountTrxType": "c",
"expiredDate": "2023-09-05T19:30:14+07:00",
"additionalInfo": {
"channel": "INDOMARET"
}
}

Response Payload

ParameterTipe DataDeskripsi
responseCodeStringKode response
responseMessageStringPesan response
virtualAccountDataObjectData pembayaran yang telah dibuat
partnerServiceIdStringKode BIN dari payment provider
customerNoStringNomor Customer
virtualAccountNoStringKode Pembayaran / Nomor VA
virtualAccountNameStringNama Pelanggan
trxIdStringNomor transaksi merchant
totalAmountObjectTotal nominal transaksi
valueStringNilai transaksi yang dibayar oleh customer
currencyStringKode mata uang
virtualAccountTrxTypeStringJenis transaksi
expiredDateStringTanggal expired transaksi
additionalInfoObjectInformasi tambahan
channelStringKode channel
contractIdStringReferensi transaksi yang dihasilkan oleh Winpay
{
"responseCode": "2002700",
"responseMessage": "Success",
"virtualAccountData": {
"partnerServiceId": " 22691",
"customerNo": "41693898987",
"virtualAccountNo": " 2269141693898987",
"virtualAccountName": "Chus Pandi",
"trxId": "INV-000000023212x2221",
"totalAmount": {
"value": "25000.00",
"currency": "IDR"
},
"virtualAccountTrxType": "c",
"expiredDate": "2023-09-05T19:30:14+07:00",
"additionalInfo": {
"channel": "INDOMARET",
"contractId": "cia80bff69-1073-4811-b1e1-13b738784d8b"
}
}
}

List Response Codes

Response CodeResponse MessageDescription
2002700Success
4002700Bad RequestKegagalan request umum, termasuk kegagalan saat memproses pesan
4002701Invalid field format { field name }
4002702Invalid mandatory field {field name}
4012700Invalid signatureX-Signature salah
4042716Partner not foundX-Partner-ID tidak terdaftar
4092700Cannot use same X-EXTERNAL-ID in same dayX-External-ID sudah pernah digunakan di hari yang sama
4092701Duplicate trxIdtrxId sudah pernah digunakan
5002700General ErrorKesalahan umum
5002701Internal Server ErrorKegagalan internal server yang tidak dikenal. Silakan coba prosesnya kembali

2. Inquiry Status

POST/v1.0/transfer-va/statusService Code: 26

Layanan ini digunakan untuk memeriksa status transaksi pembayaran dari gerai retail modern.

Payload Request

ParameterTipe DataWajibDeskripsi
virtualAccountNoStringYKode Pembayaran / Nomor VA
trxIdStringYId Transaksi
Length: 5-50
Karakter yang Diizinkan: huruf (a-z, A-Z), angka (0-9), garis bawah (_) dan tanda hubung (-)
additionalInfoObjectYInformasi tambahan
contractIdstringYcontractId dari create payment
{
"virtualAccountNo": " 2269141708949044",
"additionalInfo": {
"contractId": "ciaf1b982a-9d06-4e27-ba39-a6aefd9e813d",
"channel": "INDOMARET",
"trxId": "xxxxxxxxxxx13"
}
}

Response Payload

ParameterTipe DataDeskripsi
responseCodeStringKode Respon
responseMessageStringPesan Respon
virtualAccountDataObjectData pembayaran
virtualAccountNoStringKode Pembayaran / Nomor VA
virtualAccountNameStringNama Pelanggan
paymentFlagStatusStringStatus Transaksi (00 - paid, 01 - unpaid, 02 - check)
transactionDateStringTanggal Transaksi
referenceNoStringNomor referensi pembayaran
totalAmountObjectTotal jumlah transaksi
valueStringNilai transaksi yang dibayarkan oleh pelanggan
currencyStringKode mata uang
additionalInfoObjectInformasi tambahan
channelStringKode Channel
contractIdStringReferensi transaksi yang dihasilkan oleh Winpay
trxIdStringNomor transaksi merchant
{
"responseCode": "2002600",
"responseMessage": "Successful",
"virtualAccountData": {
"virtualAccountNo": "2269141708949044",
"virtualAccountName": "Valid 14",
"paymentFlagStatus": "00",
"transactionDate": "2024-02-26T19:04:51+00:00",
"referenceNo": "50966",
"totalAmount": {
"value": "15000.00",
"currency": "IDR"
}
},
"additionalInfo": {
"contractId": "ciaf1b982a-9d06-4e27-ba39-a6aefd9e813d",
"channel": "INDOMARET",
"trxId": "xxxxxxxxxxx13"
}
}

List Response Codes

Response CodeResponse MessageDescription
2002600Success
4002600Bad RequestKegagalan request umum, termasuk kegagalan saat memproses pesan
4002601Invalid field format { field name }
4002602Invalid mandatory field {field name}
4012600Invalid signatureX-Signature salah
4042601Transaction not foundtrxId dan contractId tidak ditemukan
4042616Partner not foundX-Partner-ID tidak terdaftar
4092600Cannot use same X-EXTERNAL-ID in same dayX-External-ID sudah pernah digunakan di hari yang sama
4092601Duplicate trxIdtrxId sudah pernah digunakan
5002600General ErrorKesalahan umum
5002601Internal Server ErrorKegagalan internal server yang tidak dikenal. Silakan coba prosesnya kembali
5002602reqbill not foundcontractId tidak ditemukan

3. Delete Payment Code

DELETE/v1.0/transfer-va/delete-vaService Code: 31

Layanan ini digunakan untuk membatalkan kode pembayaran dengan status unpaid.

Payload Request

ParameterTipe DataWajibDeskripsi
virtualAccountNoStringYKode Pembayaran / Nomor VA
trxIdStringYId Transaksi
Length: 5-50
Karakter yang Diizinkan: huruf (a-z, A-Z), angka (0-9), garis bawah (_) dan tanda hubung (-)
additionalInfoObjectYInformasi tambahan
contractIdstringYcontractId dari create payment
channelStringKode channel
{
"virtualAccountNo": " 2269131710748503",
"trxId": "XINV-000000170104",
"additionalInfo": {
"contractId": "ci067a0336-4ddf-4001-9cef-3eb107c331f4",
"channel": "INDOMARET"
}
}

Response Payload

ParameterTipe DataDeskripsi
responseCodeStringKode Respon
responseMessageStringPesan Respon
virtualAccountDataObjectData transaksi
trxIdStringNomor transaksi merchant
additionalInfoObjectInformasi tambahan
contractIdStringReferensi transaksi yang dihasilkan oleh Winpay
channelStringKode Channel
{
"responseCode": "2003100",
"responseMessage": "Success",
"virtualAccountData": {
"trxId": "xxxxxxxxxxx20"
},
"additionalInfo": {
"contractId": "si4390d6cb-5e9f-41fb-bfa3-51f6e7c9e4b4",
"channel": "INDOMARET"
}
}

List Response Codes

Response CodeResponse MessageDescription
2003100Success
4003100Bad RequestKegagalan request umum, termasuk kegagalan saat memproses pesan
4003101Invalid field format { field name }
4003102Invalid mandatory field {field name}
4013100Invalid signatureX-Signature salah
4043101Transaction not foundtrxId dan contractId tidak ditemukan
4043116Partner not foundX-Partner-ID tidak terdaftar
4093100Cannot use same X-EXTERNAL-ID in same dayX-External-ID sudah pernah digunakan di hari yang sama
4093101Duplicate trxIdtrxId sudah pernah digunakan
5003100General ErrorKesalahan umum
5003101Internal Server ErrorKegagalan internal server yang tidak dikenal. Silakan coba prosesnya kembali
5003102reqbill not foundcontractId tidak ditemukan

Handle Payment Callback

Setelah customer melakukan pembayaran di gerai retail modern, Winpay akan mengirimkan callback ke merchant untuk memberitahukan status pembayaran. Merchant harus mengimplementasikan service untuk menerima callback dari Winpay.

Kebijakan Retries

Kami akan mengirimkan callback ke merchant 3x sampai merchant meresponse dengan response yang diharapkan. Namun ketika percobaan callback pertama sudah sesuai maka kami tidak akan mengirimkan callback lagi.

Callback Info

POST{yoururl}/v1.0/transfer-va/paymentService Code: 25

Layanan callback pembayaran yang di-request oleh sistem Winpay ke server Merchant.

Struktur Header

HeaderValueDeskripsi
Content-Typeapplication/json
X-Timestamp2023-08-24T17:07:05+07:00ISO8601 String
X-Partner-ID{partnerId}
X-Signature{signature}
X-External-ID{externalId}
Channel-ID{channelId}

Callback Payload

ParameterTipe DataDeskripsi
partnerServiceIdStringKode BIN dari payment provider
customerNoStringNomor Customer
virtualAccountNoStringKode Pembayaran / Nomor VA
virtualAccountNameStringNama Pelanggan
trxIdStringNomor transaksi merchant
paymentRequestIdStringNomor transaksi pembayaran
PaidAmountObjectTotal nominal transaksi
valueStringNilai transaksi yang dibayar oleh customer
currencyStringKode mata uang
trxDateTimeStringTanggal transaksi
referenceNoStringNomor referensi pembayaran
additionalInfoObjectInformasi tambahan
channelStringKode channel (INDOMARET / ALFAMART / FASTPAY)
contractIdStringReferensi transaksi yang dihasilkan oleh Winpay
{
"partnerServiceId": " 22691",
"customerNo": "41693903614",
"virtualAccountNo": " 2269141693903614",
"virtualAccountName": "Bayar 2269141693903614",
"trxId": "INV-000000023212x2224",
"paymentRequestId": "88889123",
"paidAmount": {
"value": "10000",
"currency": "IDR"
},
"trxDateTime": "2023-09-05T22:47:00+07:00",
"referenceNo": 36238,
"additionalInfo": {
"channel": "INDOMARET",
"contractId": "ci71a51730-2373-455f-b538-3f9912fefb73"
}
}

Expected Response

{
"responseCode": "2002500",
"responseMessage": "Successful"
}