QR Payment





Introduction

Pembayaran kode QR adalah metode pembayaran tanpa kontak di mana pembayaran dilakukan dengan memindai kode QR dari aplikasi seluler. Gambar diatas merupakan Flow / Alur yang menggambarkan proses pembayaran menggunakan kode QR dengan ESPAY sebagai Payment Gateway.

Pembayaran via mobile sedang meranah ke Indonesia

ESPAY memanfaatkan teknologi tersebut untuk dapat meningkatkan berbagai pembayaran via mobile baik melalui QR maupun PUSH, serta menjadi yang terdepan di kelasnya. Berbagai penyedia layanan dompet elektronik memiliki kerumitan tersendiri dalam proses integrasinya dimana, ESPAY hadir untuk mempermudah itu semua serta membuat proses integrasi terhadap Merchant menjadi sangat sederhana. Selain itu, ESPAY juga memberikan solusi kepada Merchant untuk mendapatkan berbagai macam solusi pembayaran via mobile yang memungkinkan Merchant untuk dapat menerima pembayaran dari segala jenis penyedia layanan dompet elektronik yang ada sehingga pelanggan anda hanya perlu memindai untuk melakukan pembayaran dan penjualan anda akan meningkat!

How It Works?

qrflow

Dengan kemudahan yang diberikan dalam pembayaran menjadikan aktivitas transaksi semakin menyenangkan. Memberikan pengguna sebuah pengalaman bertransaksi yang jauh lebih baik dari sebelumnya.

“Metode pembayaran yang akan MENGUBAH pengalaman bertransaksi”

qrflow

Authentication

Setiap request harus akan diverifikasi dengan cara basic auth, jadi pada setiap request yang dikirim harus menyertai header Authorization dengan value Basic diikuti dengan username dan password dengan format username:password yang telah di encode dengan Base64 Encoding

Contoh :

Username: Aladdin

Password: Jasmine

Format sebelum di encode :

Aladdin:Jasmine

Hasil Base64 encoding :

QWxhZGRpbjpKYXNtaW5l

Header yang dikirim :

Authorization : Basic

QWxhZGRpbjpKYXNtaW5l

Setiap Authentication yang gagal akan menerima header http 401

Parameter Request & Parameter Response

Web Service untuk melakukan Push to Pay ke Aplikasi Pembayaran

Alur Pesan

Merchant → Espay

Metode

HTTP Post

API URL

Endpoint Development: https://sandbox-api.espay.id/rest/digitalpay/pushtopay
Endpoint Production: https://api.espay.id/rest/digitalpay/pushtopay


Parameter Request:
Nama Field Attribute Mandatory Keterangan
rq_uuid 64 Ya Pengidentifikasi request. ID unik untuk mengidentifikasi pesan-pesan tersebut dengan pesan yang lain
rq_datetime 19 Ya Tanggal dan waktu di server aplikasi Espay ketika pesan dikirim
comm_code 32 Ya Kode penjual yang terdaftar di aplikasi Espay
order_id 20 Ya Nomor transaksi / ID faktur / ID unik yang mengidentifikasi pesanan / tagihan / faktur
product_code 10 Ya Kode Produk yang diinginkan.
Push to Pay :
  1. OVO
  2. JENIUS
QR :
  1. QRIS
amount 13 Ya Jumlah tagihan yang harus dibayarkan
customer_id 64 Ya Data customer
  1. OVO = Nomor Handphone
  2. JENIUS = Cashtag ($cashtag)
promo_code 64 Tidak Promo Code
is_sync 1 Tidak 1 = Sync / 0 = Async Default Async
branch_id 64 Optional Branch ID
pos_id 64 Optional POS ID Machine
description 20 Ya Order description
signature 64 Ya Signature diperlukan untuk validasi oleh penjual

Parameter Response:
Nama Field Attribute Mandatory Keterangan
error_code 4 Ya Jika error_code sama dengan 0000 = Sukses
Jika error_code tidak sama dengan 0000 = Gagal call request ke Aplikasi Pembayaran
error_message 32 Ya Jika error_code sama dengan 0000 = Sukses
Jika error_code tidak sama dengan 0000 = Gagal call request ke Aplikasi Pembayaran
trx_id 32 Ya Transaksi ID dari Espay
QRLink 64 Ya URL QR https://api.espay.id/gojek/QR/uafu-134fd-erdf-353--erdf-353-/
QRCode BLOB Ya data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGB
gcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UxwcKDcpLDAxNDQ0Hyc5PTgyP…..
order_id 20 Optional Nomor transaksi / ID faktur / ID unik yang mengidentifikasikan pesanan / tagihan / faktur
customer_id 32 Optional Data customer
  1. OVO = Nomor Handphone
  2. JENIUS = Cashtag ($cashtag)
  3. GOPAY = Nomor Handphone
  4. LINKAJA = Nomor Handphone
trx_status 2 Optional Status transaksi
amount 13 Optional Jumlah tagihan
approval_code 64 Optional Approval code, reference dari Bank
product_code 10 Optional Kode product

Signature

Setiap request harus dilengkapi signature untuk divalidasi. Client akan diberikan Secret Key di dokumentasi terpisah dari document ini. Key tersebut akan diolah untuk menjadi signature dengan langkah-langkah sebagai berikut :

Step 1 :
Gabungkan parameter-parameter yang digunakan dengan urutan sebagai berikut :

##rq_uuid##comm_code##product_code##order_id##amount##mode##key##

Contoh :

rq_uuid : 123ABC-DEF456
comm_code : MYCOMMCODE
product_code : OVO
order_id : ORDER001
amount : 10000
key : S3cr317kEY
mode : PUSHTOPAY

Sehingga akan menjadi rangkaian string sebagai berikut :

Result = ##123ABC-DEF456##MYCOMMCODE##OVO##ORDER001##10000##PUSHTOPAY##S3cr317kEY##

Step 2 :
Hasil dari Step 1 di uppercase menjadi seperti ini:

##123ABC-DEF456##MYCOMMCODE##OVO##ORDER001##10000##PUSHTOPAY##S3CR317KEY##

Step 3 :
Hash hasil dari Step 2 dengan menggunakan sha256 :

$sha256 = hash(sha256, '##123ABC-DEF456##MYCOMMCODE##OVO##ORDER001##10000##PUSHTOPAY##S3CR317KEY##')

Result = aa19e37e1bf6d5cfb23d59988d397f9ba6e79cf6853606e45a6809e0ca9a7b5d

Hasil dari Step 3 inilah yang akan digunakan sebagai value dari parameter signature.

IP Whitelist Registration

ESPAY server juga akan memfilter alamat IP yang akan mengakses server ESPAY. Untuk itu silahkan kontak Tim ESPAY untuk mendaftarkan IP anda.

Table Error

Response Code Description
0000 COMPLETED SUCCESFULLY
9999 SUSPECT / TIMEOUT
802 MAX/MIN PAYMENT AMOUNT EXCEEDED
801 TRANSACTION ERROR, INQUIRY DATA NOT FOUND
800 INSUFFICIENT FUNDS
614 UNABLE TO PROCESS TRANSACTION AT CERTAIN HOURS
612 UNABLE TO PROCESS TRANSACTION, PLEASE TRY AGAIN LATER
611 TRANSACTION DECLINE, PLEASE CONTACT YOUR ADMINISTRATOR
610 YOU CAN PERFORM THE SAME TRANSACTION IN 5 MINUTES
601 IP ADDRESS REJECTED / UNREGISTERED
406 INQUIRY DATA IS INVALID
405 PRODUCT DENIED
404 PRODUCT NOT AVAILABLE
403 AMOUNT IS NOT SET
300 INQUIRY NOT AVAILABLE
210 DUPLICATE UUID
205 INVALID REQUEST
040 BILLER SYSTEM MALFUNCTION
09 REQUEST IN PROGRESS
13 TXN AMT IS DIFFER WITH TOTAL BILL AMT
14 PAYMENT NBR NOT FOUND
15 NO SUCH ISSUER
17 SERVICE UNAVAILABLE (MAINTENANCE)
18 DISPUTE
22 SUSPECTED MALFUNCTION
34 SUSPECTED FRAUD
36 RESTRICTED
60 CARD ACCEPTOR CONTACT ACQUIRER
61 TRANSACTION EXCEEDS APPROVAL AMOUNT LIMIT
64 ORIGINAL AMOUNT INCORRECT
65 EXCEED FREQUENCY LIMIT
66 CARD ACCEPTOR, CALL ACQUIRER SECURITY
67 HOT CARD RETAIN CARD
68 LATE RESPONSE FROM BILLER
72 VOUCHER / DENOM NOT AVAILABLE

Contoh Request

POST /rest/digitalpay/pushtopay HTTP/1.1 Content-Length: 282 Content-Type: application/x-www-form-urlencoded Accept: */* Host: sandbox-api.espay.id Authorization: Basic U0dXUEFJREJBUTAyOkhOUlFLSENI rq_uuid=PAIDBAQ721659 &rq_datetime=2019-11-02 01:29:10 &comm_code=SGWPAIDBAQ02 &product_code=OVO &order_id=ESP.0043330 &amount=105000 &key=27hsdfv6ukmepgrv &description=Customer PaidbaQ &customer_id=081223213625 &signature=89c1ac1cdbb30185bcab457f209ba90ef43486216823abfe7ed013b24ee49733

Contoh Response

{ "rq_uuid": "E253B30C410911EB86A634BE08A20EFB", "rs_datetime": "2020-12-18 15:22:48", "error_code": "0000", "error_message": "Success", "trx_id": "ESP1608279768GQUZ", "QRLink": "https://sandbox-api.espay.id/rest/digitalnotify/qr/?trx_id=ESP1608279768GQUZ", "QRCode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJMAAACTAQMAAACwK7lWAAAABlBMVEX///8AAABVwtN+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB+0lEQVRIieWWsa30IBCE1yIgww0g0QYZLdkNcHYDdktktGGJBuzMAfL+w/NJ7w/Z+CF0uvtOstjZ2cFEf22NzFvglSlqhy+PhBlSe+L15o3U4vFTwkLZtLpS24/HP1JGkWz0NMnZynXk2k4hZaQ2cqd3V6r0W1sXa/r58t3/adrDsIbs1uROXc7f1nWxMfHi7efmi92m3SNhAx9zVlto+s25iBg0uzIvZMmrHa6RsTqn+kmKs+NEk4SN7fh2vI/hdsCnhA23Nb4s4RhZMb8972XGu0WXKzUB1vuto5vpGuHTYCftlvD2rZdBthXHCage8h8iNqTaqk/V6MP4GkXshkNphtcCPK4eCTMeHwWRsGnI956lm2mHIFk8r1mh50bCSKN09Lys6YgBppOwgPjBY9ye7OSPKGGQLVIz2kZ1ZhmDfmdAzzFefNK3b50MvQK+Ms2MIFGLiIWykIN+m3c72yhhQ7KwjKG2YyARw2Dt8ClVCgdy9BSxgDzAPYMTlTWXRcIouEfzdaNvdUhv/nUz5FC2GM3PXT9sjYSNCTEAk7rmU+ZTwugbJ7AMxJMx3DMIsE9CQRV5YCSs3W9N/jbTkd6rppuFNtA/2dn2JGQtwzR8Wh5fScjg061djBaX1SNi7f3lGHKdMJ3fvvUy6Ldnd6Hh7fXnPUsv+1vrH6ThjE2DVkpUAAAAAElFTkSuQmCC" }