Pendahuluan
Aspire membuat proses integrasi semudah mungkin. Memungkinkan halaman pembayaran Aspire tampil di halaman web/aplikasi anda setelah checkout, dengan proses integrasi yang sangat mudah. Serahkan pembayaran anda pada Aspire Pop. Memberikan opsional pembayaran dan konfirmasi pembayaran yang di lakukan oleh customer pada halaman anda. Hanya dengan anda memunculkan Aspire pop di halaman anda.
Pratinjau
- Pelanggan melakukan checkout pembayaran.
- Server merchant melakukan request transaksi ke API Aspire untuk mendapatkan ASPIRE_REFERENCE.
- API Aspire merespon request dengan memberikan ASPIRE_REFERENCE.
- Server merchant menampilkan halaman pembayaran pada situs mereka untuk ditampilkan pada pelanggan.
- Pelanggan memverifikasi detail transaksi dan klik tombol pembayaran. Sistem merchant memanggil fungsi checkout.process(ASPIRE_REFERENCE, options).
- Sistem pembayaran Aspire memproses transaksi dan merespon status pembayaran. Aspire JS lalu melakukan callback yang telah disediakan di sisi merchant.
- Sistem pembayaran Aspire memberikan notifikasi status transaksi pada server merchant.
Langkah Integrasi
Untuk menghubungkan dengan API Aspire payment gateway, ada beberapa hal yang perlu diketahui sebagai berikut.
Kode Merchant
Kode merchant adalah kode proyek yang didapatkan dari halaman merchant Aspire payment gateway. Kode ini berguna sebagai pengenal proyek anda di setiap transaksinya nanti. Kode ini bisa anda dapatkan pada setiap proyek yang anda daftarkan di merchant portal. Langkah atau cara pembuatan proyek dapat anda lihat disini.
API Key (Merchant Key)
API merupakan singkatan dari Application Programming Interface. API key disini adalah kode otentikasi untuk dapat mengakses API Aspire. API key digunakan untuk mencegah penyalahgunaan atau pengguna berbahaya. Seperti kode merchant, API key bisa anda dapatkan pada setiap proyek yang anda daftarkan di merchant portal bersamaan dengan kode merchant.
Browser Yang Kompatibel
Platform | Browser | Versi |
---|---|---|
Web | Chrome | 26 dan terbaru |
Firefox | 29 dan terbaru | |
Internet Explorer | 10 dan terbaru | |
Safari | 6 dan terbaru | |
Mobile | Chrome | 32 dan terbaru |
Android | 4.4 dan terbaru | |
Safari | 8 dan terbaru |
Library
Anda dapat mengintegrasikan menggunakan Library Aspire untuk memulai transaksi menggunakan Aspire pada web atau aplikasi anda. Library akan membantu anda pada saat integrasi dengan Aspire. Untuk mengenal lebih lanjut anda dapat melihat Library Aspire pada package repository masing-masing library yang telah tersedia berikut ini.
Integrasi Backend atau Server
Tujuan dari Integrasi Backend adalah untuk mendapat ASPIRE_REFERENCE
dengan mengirimkan informasi pembayaran yang dibutuhkan. Kami menyediakan HTTP API untuk melakukannya.
Create Invoice
API Create Invoice digunakan untuk mendapatkan nomor referensi Aspire dengan mengirimkan parameter yang dibutuhkan ke API. Merchant akan mendapatkan nomor referensi Aspire, URL pembayaran, dan lainnya dari respon API Create Invoice.
Otentikasi Dasar
Otentikasi dasar yang digunakan Aspire adalah signature, timestamp, dan merchant code yang di kirim pada bagian header.
- Signature
Signature adalah kode identifikasi transaksi. Berisi parameter transaksi yang telah di hash menggunakan metode hashing SHA256. Parameter yang berisi hash adalah merchant code, timestamp, kemudian API key dan harus berurutan.
- Timestamp
Timestamp adalah timestamp UNIX dalam milidetik dalam zona waktu kami (Jakarta). Timestamp UNIX adalah cara untuk melacak waktu sebagai total detik yang berjalan.
- Merchant code
Merchant code adalah ID proyek yang telah dibuat dan didaftarkan di halaman merchant Aspire payment gateway.
Endpoint
- HTTP Method:
POST
- Production:
https://api-prod.gateway.aspireapp.com/api/merchant/createInvoice
- Sandbox:
https://api-sandbox.gateway.aspireapp.com/api/merchant/createInvoice
Request Headers
Untuk membuat HTTP request, merchant harus menyertakan header seperti berikut:
Accept: application/json
Content-Type: application/json
x-duitku-signature: FORMAT SHA256(<MERCHANT_CODE_ANDA> - <TIMESTAMP_JAKARTA> - <API_KEY_ANDA>)
x-duitku-timestamp: <TIMESTAMP_JAKARTA>(Milliseconds)
x-duitku-merchantcode: <YOUR_MERCHANT_CODE_HERE>
Request Parameter
{
"paymentAmount": 40000,
"partnerId":"XXXXXXXX",
"merchantOrderId": "1648542419",
"productDetails": "Test Pay with Aspire",
"additionalParam": "",
"merchantUserInfo": "",
"customerVaName": "John Doe",
"email": "[email protected]",
"phoneNumber": "08123456789",
"itemDetails": [{
"name": "Test Item 1",
"price": 10000,
"quantity": 1
}, {
"name": "Test Item 2",
"price": 30000,
"quantity": 3
}],
"customerDetail": {
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"phoneNumber": "08123456789",
"billingAddress": {
"firstName": "John",
"lastName": "Doe",
"address": "Jl. Kembangan Raya",
"city": "Jakarta",
"postalCode": "11530",
"phone": "08123456789",
"countryCode": "ID"
},
"shippingAddress": {
"firstName": "John",
"lastName": "Doe",
"address": "Jl. Kembangan Raya",
"city": "Jakarta",
"postalCode": "11530",
"phone": "08123456789",
"countryCode": "ID"
}
},
"callbackUrl": "https:\/\/example.com\/api-pop\/backend\/callback.php",
"returnUrl": "https:\/\/example.com\/api-pop\/backend\/redirect.php",
"expiryPeriod": 10
}
<?php
$merchantCode = 'DXXXX'; // dari Aspire payment gateway
$merchantKey = 'XXXXXXXCX17XXXX5XX5XXXXXX0X3XXAF'; // dari Aspire payment gateway
$partnerId = 'XXXXXXXX'; // From Aspire dashboard
$timestamp = round(microtime(true) * 1000); //in milisecond
$paymentAmount = 40000;
$merchantOrderId = time() . ''; // dari merchant, unique
$productDetails = 'Test Pay with Aspire';
$email = '[email protected]'; // email pelanggan merchant
$phoneNumber = '08123456789'; // nomor tlp pelanggan merchant (opsional)
$additionalParam = ''; // opsional
$merchantUserInfo = ''; // opsional
$customerVaName = 'John Doe'; // menampilkan nama pelanggan pada tampilan konfirmasi bank
$callbackUrl = 'http://example.com/api-pop/backend/callback.php'; // url untuk callback
$returnUrl = 'http://example.com/api-pop/backend/redirect.php';//'http://example.com/return'; // url untuk redirect
$expiryPeriod = 10; // untuk menentukan waktu kedaluarsa dalam menit
$signature = hash('sha256', $merchantCode.$timestamp.$merchantKey);
//$paymentMethod = 'VC'; //digunakan untuk direksional pembayaran
// Detail pelanggan
$firstName = "John";
$lastName = "Doe";
// Alamat
$alamat = "Jl. Kembangan Raya";
$city = "Jakarta";
$postalCode = "11530";
$countryCode = "ID";
$address = array(
'firstName' => $firstName,
'lastName' => $lastName,
'address' => $alamat,
'city' => $city,
'postalCode' => $postalCode,
'phone' => $phoneNumber,
'countryCode' => $countryCode
);
$customerDetail = array(
'firstName' => $firstName,
'lastName' => $lastName,
'email' => $email,
'phoneNumber' => $phoneNumber,
'billingAddress' => $address,
'shippingAddress' => $address
);
$item1 = array(
'name' => 'Test Item 1',
'price' => 10000,
'quantity' => 1);
$item2 = array(
'name' => 'Test Item 2',
'price' => 30000,
'quantity' => 3);
$itemDetails = array(
$item1, $item2
);
/*Khusus untuk metode pembayaran Kartu Kredit
$creditCardDetail = array (
'acquirer' => '014',
'binWhitelist' => array (
'014',
'400000'
)
);*/
$params = array(
'partnerId' => $partnerId,
'paymentAmount' => $paymentAmount,
'merchantOrderId' => $merchantOrderId,
'productDetails' => $productDetails,
'additionalParam' => $additionalParam,
'merchantUserInfo' => $merchantUserInfo,
'customerVaName' => $customerVaName,
'email' => $email,
'phoneNumber' => $phoneNumber,
'itemDetails' => $itemDetails,
'customerDetail' => $customerDetail,
//'creditCardDetail' => $creditCardDetail,
'callbackUrl' => $callbackUrl,
'returnUrl' => $returnUrl,
'expiryPeriod' => $expiryPeriod
//'paymentMethod' => $paymentMethod
);
$params_string = json_encode($params);
//echo $params_string;
$url = 'https://api-sandbox.gateway.aspireapp.com/api/merchant/createinvoice'; // Sandbox
// $url = 'https://api-prod.gateway.aspireapp.com/api/merchant/createinvoice'; // Production
//log transaksi untuk debug
// file_put_contents('log_createInvoice.txt', "* log *\r\n", FILE_APPEND | LOCK_EX);
// file_put_contents('log_createInvoice.txt', $params_string . "\r\n\r\n", FILE_APPEND | LOCK_EX);
// file_put_contents('log_createInvoice.txt', 'x-duitku-signature:' . $signature . "\r\n\r\n", FILE_APPEND | LOCK_EX);
// file_put_contents('log_createInvoice.txt', 'x-duitku-timestamp:' . $timestamp . "\r\n\r\n", FILE_APPEND | LOCK_EX);
// file_put_contents('log_createInvoice.txt', 'x-duitku-merchantcode:' . $merchantCode . "\r\n\r\n", FILE_APPEND | LOCK_EX);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $params_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($params_string),
'x-duitku-signature:' . $signature ,
'x-duitku-timestamp:' . $timestamp ,
'x-duitku-merchantcode:' . $merchantCode
)
);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//execute post
$request = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode == 200)
{
$result = json_decode($request, true);
//header('location: '. $result['paymentUrl']);
print_r($result, false);
// echo "paymentUrl :". $result['paymentUrl'] . "<br />";
// echo "reference :". $result['reference'] . "<br />";
// echo "statusCode :". $result['statusCode'] . "<br />";
// echo "statusMessage :". $result['statusMessage'] . "<br />";
}
else
{
// echo $httpCode . " " . $request ;
echo $request ;
}
?>
curl --location --request POST 'https://api-sandbox.gateway.aspireapp.com/api/merchant/createInvoice' \
--header 'x-duitku-signature: 506f88f1000dfb4a6541ff94d9b8d1e6' \
--header 'x-duitku-timestamp: 1629219840000' \
--header 'x-duitku-merchantcode: DXXXX' \
--header 'Content-Type: application/json' \
--data-raw
{
"partnerId":"XXXXXXXX",
"paymentAmount":40000,
"merchantOrderId":"1579838431",
"productDetails":"Test Pay with Aspire",
"additionalParam":"",
"merchantUserInfo":"",
"customerVaName":"John Doe",
"email":"[email protected]",
"phoneNumber":"08123456789",
"itemDetails":[
{
"name":"Test Item 1",
"price":10000,
"quantity":1
},
{
"name":"Test Item 2",
"price":30000,
"quantity":3
}
],
"customerDetail":{
"firstName":"John",
"lastName":"Doe",
"email":"[email protected]",
"phoneNumber":"08123456789",
"billingAddress":{
"firstName":"John",
"lastName":"Doe",
"address":"Jl. Kembangan Raya",
"city":"Jakarta",
"postalCode":"11530",
"phone":"08123456789",
"countryCode":"ID"
},
"shippingAddress":{
"firstName":"John",
"lastName":"Doe",
"address":"Jl. Kembangan Raya",
"city":"Jakarta",
"postalCode":"11530",
"phone":"08123456789",
"countryCode":"ID"
}
},
"callbackUrl":"http:\/\/example.com\/api-pop\/backend\/callback.php",
"returnUrl":"http:\/\/example.com\/api-pop\/backend\/redirect.php",
"expiryPeriod":10
}
Parameter | Tipe | Wajib | Deskripsi | Contoh |
---|---|---|---|---|
partnerId | string | ✗ |
Partner ID adalah pengenal untuk mitra Anda dalam fitur platform kami, dan Anda dapat memperoleh ID ini dari dashboard Aspire. Gunakan ID tersebut dalam permintaan jika Anda ingin melakukan penagihan atas nama mitra. | XXXXXXXX |
paymentAmount | integer | ✓ |
Nominal pembayaran. | 150000 |
merchantOrderId | string(50) | ✓ |
Order ID dari merchant. | abcde12345 |
productDetails | string(255) | ✓ |
Detail produk. | Pembayaran untuk Toko Contoh |
string(255) | ✓ |
Email pelanggan merchant. | [email protected] | |
additionalParam | string(255) | ✗ |
Parameter tambahan (opsional). | |
merchantUserInfo | string(255) | ✗ |
Username atau email pelanggan (opsional). | [email protected] |
customerVaName | string(20) | ✗ |
Nama yang akan muncul pada halaman konfirmasi pembayaran. | John Doe |
phoneNumber | string(50) | ✗ |
Nomor telepon pelanggan (opsional). | 08123456789 |
itemDetails | itemDetails | ✗ |
Informasi detail barang (opsional). | |
customerDetail | customerDetail | ✗ |
Informasi detail pelanggan (opsional). | |
callbackUrl | string(255) | ✓ |
URL untuk transaksi callback. | http://example.com/api-pop/backend/callback.php |
returnUrl | string(255) | ✓ |
URL untuk redirect apabila transaksi telah selesai atau dibatalkan. | http://example.com/api-pop/backend/redirect.php |
expiryPeriod | integer | ✗ |
Masa berlaku transaksi sebelum kedaluarsa. Untuk detail expiryPeriod bisa dilihat disini. | 5, 10 or 60 (dalam menit) |
paymentMethod | string | ✗ |
Payment Method adalah sebuah kode metode pembayaran. | VC |
creditCardDetail | creditCardDetail | ✗ |
Detail parameter untuk pembayaran kartu kredit (opsional). |
Aspire menggunakan merchantCode
dan apiKey
untuk memberi akses API. Anda dapat membuat merchantCode
pada Merchant Portal.
Respon Parameter
{
"merchantCode": "DXXXX",
"reference": "DXXXXS875LXXXX32IJZ7",
"paymentUrl": "https://app-sandbox.gateway.aspireapp.com/redirect_checkout?reference=DXXXXS875LXXXX32IJZ7",
"statusCode": "00",
"statusMessage": "SUCCESS"
}
Parameter | Tipe | Deskripsi | Contoh |
---|---|---|---|
merchantCode | string | Merchant code dari Aspire. | DXXXX |
reference | string | Referensi dari Aspire (perlu disimpan pada system). | DXXXXS875LXXXX32IJZ7 |
paymentUrl | string | URL pembayaran jika anda ingin menggunakan halaman pembayaran Aspire. | https://app-sandbox.gateway.aspireapp.com/redirect_checkout?reference=DXXXXS875LXXXX32IJZ7 |
statusCode | string | Respon kode status. | 00 |
statusMessage | string | Respon status. | Success |
Obyek JSON
Koleksi obyek JSON.
Item Details
"itemDetails": [{
"name": "Apel",
"quantity": 2,
"price": 50000
}]
Parameter | Tipe | Wajib | Deskripsi | Contoh |
---|---|---|---|---|
name | string(50) | ✓ |
Nama barang. | Apel |
quantity | integer | ✓ |
Banyaknya barang. | 2 |
price | integer | ✓ |
Harga barang. Catatan: Tidak diperkenankan menggunakan desimal. | 50000 |
Customer Detail
"customerDetail": {
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"phoneNumber": "081234567890",
"billingAddress": {
"firstName": "John",
"lastName": "Doe",
"address": "St Panjang",
"city": "Jakarta",
"postalCode": "41011",
"phone": "081234567890",
"countryCode": "ID"
},
"shippingAddress": {
"firstName": "John",
"lastName": "Doe",
"address": "St Panjang",
"city": "Jakarta",
"postalCode": "41011",
"phone": "081234567890",
"countryCode": "ID"
}
}
Parameter | Tipe | Wajib | Deskripsi | Contoh |
---|---|---|---|---|
firstName | string(50) | ✗ |
Nama depan pelanggan. | John |
lastName | string(50) | ✗ |
Nama belakang pelanggan. | Doe |
string(50) | ✗ |
Email pelanggan. | [email protected] | |
phoneNumber | string(50) | ✗ |
Nomor telepon pelanggan. | 081234567890 |
billingAddress | Address | ✗ |
Alamat tagihan pelanggan. | |
shippingAddress | Address | ✗ |
Alamat pengiriman pelanggan. |
Address
{
"firstName": "John",
"lastName": "Doe",
"address": "St Panjang",
"city": "Jakarta",
"postalCode": "41011",
"phone": "081234567890",
"countryCode": "ID"
}
Parameter | Tipe | Wajib | Deskripsi | Contoh |
---|---|---|---|---|
firstName | string(50) | ✗ |
Nama depan pelanggan. | John |
lastName | string(50) | ✗ |
Nama belakang pelanggan. | Doe |
address | string(50) | ✗ |
Alamat tagihan atau pengiriman. | St Panjang |
city | string(50) | ✗ |
Kota pada alamat. | Jakarta |
postalCode | string(50) | ✗ |
Kode pos alamat. | 41011 |
phone | string(50) | ✗ |
Nomor telepon untuk pengiriman atau tagihan. | 081234567890 |
countryCode | string(50) | ✗ |
ISO 3166-1 alpha-3. | ID |
Credit Card Detail
Berikut ini adalah parameter tambahan untuk request transaksi menggunakan channel kartu kredit bersifat opsional.
"creditCardDetail": {
"acquirer":"014",
"binWhitelist":["014","022", "400000"]
}
Parameter | Tipe | Wajib | Keterangan | Contoh |
---|---|---|---|---|
acquirer | string(3) | ✗ |
Anda dapat menentukan acquirer bank yang akan digunakan pada transaksi yang akan dilakukan. • 014 untuk BCA. • 022 untuk CIMB. |
014 |
binWhitelist | array string(6) | ✗ |
Parameter untuk membatasi kartu kredit yang diizinkan pada transaksi. Menggunakan kode bank(3 digit) atau nomor bin kartu kredit(6 digit). Maksimal 25 list bin. | 014, 022, 400000 |
Callback
<?php
$apiKey = 'XXXXXXXCX17XXXX5XX5XXXXXX0X3XXAF'; // API key anda
$merchantCode = isset($_POST['merchantCode']) ? $_POST['merchantCode'] : null;
$amount = isset($_POST['amount']) ? $_POST['amount'] : null;
$merchantOrderId = isset($_POST['merchantOrderId']) ? $_POST['merchantOrderId'] : null;
$productDetail = isset($_POST['productDetail']) ? $_POST['productDetail'] : null;
$additionalParam = isset($_POST['additionalParam']) ? $_POST['additionalParam'] : null;
$paymentCode = isset($_POST['paymentCode']) ? $_POST['paymentCode'] : null;
$resultCode = isset($_POST['resultCode']) ? $_POST['resultCode'] : null;
$merchantUserId = isset($_POST['merchantUserId']) ? $_POST['merchantUserId'] : null;
$reference = isset($_POST['reference']) ? $_POST['reference'] : null;
$signature = isset($_POST['signature']) ? $_POST['signature'] : null;
$publisherOrderId = isset($_POST['publisherOrderId']) ? $_POST['publisherOrderId'] : null;
$spUserHash = isset($_POST['spUserHash']) ? $_POST['spUserHash'] : null;
$settlementDate = isset($_POST['settlementDate']) ? $_POST['settlementDate'] : null;
$issuerCode = isset($_POST['issuerCode']) ? $_POST['issuerCode'] : null;
//log callback untuk debug
// file_put_contents('callback.txt', "* Callback *\r\n", FILE_APPEND | LOCK_EX);
if(!empty($merchantCode) && !empty($amount) && !empty($merchantOrderId) && !empty($signature))
{
$params = $merchantCode . $amount . $merchantOrderId . $apiKey;
$calcSignature = md5($params);
if($signature == $calcSignature)
{
//Callback tervalidasi
//Silahkan rubah status transaksi anda disini
// file_put_contents('callback.txt', "* Berhasil *\r\n\r\n", FILE_APPEND | LOCK_EX);
}
else
{
// file_put_contents('callback.txt', "* Bad Signature *\r\n\r\n", FILE_APPEND | LOCK_EX);
throw new Exception('Bad Signature');
}
}
else
{
// file_put_contents('callback.txt', "* Bad Parameter *\r\n\r\n", FILE_APPEND | LOCK_EX);
throw new Exception('Bad Parameter');
}
?>
curl --location --request POST 'http://example.com/api-pop/backend/callback.php' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'merchantOrderId=abcde12345' \
--data-urlencode 'amount=150000' \
--data-urlencode 'merchantCode=DXXXX' \
--data-urlencode 'productDetails=Pembayaran untuk Toko Contoh' \
--data-urlencode 'additionalParam=contoh param' \
--data-urlencode 'paymentCode=VA' \
--data-urlencode 'resultCode=00' \
--data-urlencode '[email protected]' \
--data-urlencode 'reference=DXXXXCX80TXXX5Q70QCI' \
--data-urlencode 'signature=506f88f1000dfb4a6541ff94d9b8d1e6'\
--data-urlencode 'publisherOrderId=MGUHWKJX3M1KMSQN5'\
--data-urlencode 'spUserHash=xxxyyyzzz'\
--data-urlencode 'settlementDate=2023-07-25'\
--data-urlencode 'issuerCode=93600523'
Pada saat pelanggan melakukan pembayaran. Aspire akan mengirimkan HTTP POST yang menyertakan hasil pembayaran suatu tagihan dari pelanggan. Merchant perlu menyediakan halaman untuk menerima callback tersebut. Supaya dapat memproses hasil transaksi yang telah dilakukan oleh pelanggan.
Parameter
Parameter | Deskripsi | Contoh |
---|---|---|
merchantCode | merchant code dari Aspire. | D0010 |
paymentAmount | Nominal pembayaran. | 150000 |
merchantOrderId | Order ID dari merchant. | abcde12345 |
productDetail | Detail produk. | Pembayaran untuk Toko Contoh |
additionalParam | Parameter tambahan (opsional). | |
paymentCode | Metode pembayaran. | VC |
resultCode | Status pembayaran. | 00 - Success 01 - Failed |
merchantUserId | User ID dari merchant. | [email protected] |
reference | Nomor referensi dari Aspire, harap disimpan untuk melakukan pengecekan transaksi. | DXXXXS875LXXXX32IJZ7 |
signature | Signature. | Formula: MD5(merchantcode + amount + merchantOrderId + merchantKey) |
publisherOrderId | Nomor unik pembayaran transaksi dari Aspire. Mohon disimpan untuk keperluan pencatatan atau pelacakan transaksi. | MGUHWKJX3M1KMSQN5 |
spUserHash | Akan dikirimkan melalui callback jika metode pembayaran menggunakan ShopeePay(QRIS, App, and Account Link). Jika, nilai parameter berikut ini mengandung alphabet dan numeric. Maka, kemungkinan telah dibayarkan menggunakan Shopee. | xxxyyyzzz |
settlementDate | Informasi waktu estimasi penyelesaian. Format: YYYY-MM-DD |
2023-07-25 |
issuerCode | Informasi kode issuer dari QRIS.lihat daftar issuer disini. *terkecuali untuk metode QRIS Link Aja | 93600523 |
Integrasi Frontend atau View
Tinjauan Umum
Tujuan dari Integrasi Frontend adalah untuk menampilkan halaman pembayaran Aspire di dalam situs merchant.
Sertakan aspire_pg.js
pada halaman situs anda, sehingga modul checkout
Aspire dapat digunakan.
Merchant dapat memulai proses pembayaran dengan memanggil fungsi checkout.process
menggunakan ASPIRE_REFERENCE
yang didapat dari integrasi backend sebagai parameter.
Lokasi Modul Aspire JS
Anda dapat menambahkan tag berikut pada bagian head HTML anda.
- Production:
<script src="https://app-prod.gateway.aspireapp.com/lib/js/aspire_pg.js"></script>
- Sandbox:
<script src="https://app-sandbox.gateway.aspireapp.com/lib/js/aspire_pg.js"></script>
Aspire JS
Setelah anda menambahkan library Aspire pada HTML anda. Anda dapat menggunakan obyek checkout.process
seperti berikut.
process(aspireReference, options)
checkout.process("DXXXXS875LXXXX32IJZ7", {
defaultLanguage: "id", //opsional pengaturan bahasa
successEvent: function(result){
// tambahkan fungsi sesuai kebutuhan anda
console.log('success');
console.log(result);
alert('Payment Success');
},
pendingEvent: function(result){
// tambahkan fungsi sesuai kebutuhan anda
console.log('pending');
console.log(result);
alert('Payment Pending');
},
errorEvent: function(result){
// tambahkan fungsi sesuai kebutuhan anda
console.log('error');
console.log(result);
alert('Payment Error');
},
closeEvent: function(result){
// tambahkan fungsi sesuai kebutuhan anda
console.log('customer closed the popup without finishing the payment');
console.log(result);
alert('customer closed the popup without finishing the payment');
}
});
Mulai halaman pembayaran Aspire.
Parameter:
Nama | Tipe | Deskripsi |
---|---|---|
aspireReference | string | Nomor referensi Aspire didapat pada integrasi backend. |
options.defaultLanguage | string (opsional) | Pengaturan bahasa dengan code. en - inggris. id - indonesia. |
options.successEvent | function (opsional) | Callback pembayaran sukses (00). |
options.pendingEvent | function (opsional) | Callback pembayaran pending (01). |
options.errorEvent | function (opsional) | Callback pembayaran error. |
options.closeEvent | function (opsional) | Digunakan ketika pelanggan menutup popup pembayaran tanpa menyelesaikan pembayaran (02). |
JS Callback
Respon Transaksi
{
"resultCode": "00",
"merchantOrderId": "abcde12345",
"reference": "qwerty12345"
}
Obyek yang mewakili respon transaksi dari callback Aspire.
Name | Tipe | Deskripsi |
---|---|---|
resultCode | string | Result code dari Aspire. |
merchantOrderId | string | Order ID dari merchant. |
reference | string | Reference dari Aspire. |
Window Redirection
Aspire menyediakan alternatif lain untuk menampilkan halaman transaksi selain menggunakan aspire_pg.js
, yaitu window redirection. Merchant dapat menggunakan response value paymentUrl
dari API CreateInvoice
. Merchant tidak perlu menyertakan aspire_pg.js pada halaman situs, sehingga pelanggan langsung diarahkan pada halaman pembayaran di situs Aspire. Untuk konfigurasi bahasa anda dapat menambahkan &lang=id
query pada paymentUrl
sebagai berikut.
https://app-sandbox.gateway.aspireapp.com/redirect_checkout?reference=DXXXXS875LXXXX32IJZ7&lang=id
- id - Bahasa Indonesia
- en - Bahasa Inggris
Selain dari pengaturan bahasa Aspire memiliki pengaturan dalam konversi mata uang. Anda dapat menambahkan ¤cy=USD
query. Aspire mendukung 2 konversi yaitu :
- USD - (dolar amerika)
- EUR - (Euro)
*Konversi berikut hanya bersifat estimasi. Rate dapat berubah sewaktu waktu.
Dengan menggunakan metode ini, merchant dapat langsung menampilkan halaman pembayaran secara penuh seperti berikut ini:
Redirect
Setelah request transaksi dan tagihan terbentuk, dari halaman pembayaran Aspire(Window Redirection) akan redirect ke alamat yang diberikan di parameter Create Invoice(returnUrl
) pada saat setelah pembayaran atau melalui tombol kembali.
Dan pada saat redirect tersebut Aspire akan menyertakan beberapa parameter tagihan yang bersangkutan.
Anda harus membuat halaman landing di alamat return URL ini.
Contoh
GET: http://www.merchantweb.com/redirect.php?merchantOrderId=abcde12345&resultCode=00&reference=DXXXXS875LXXXX32IJZ7
Parameter
Parameter | Deskripsi | Contoh |
---|---|---|
merchantOrderId | Order ID dari merchant. | abcde12345 |
reference | Nomor referensi dari Aspire. | DXXXXS875LXXXX32IJZ7 |
resultCode | Kode informasi hasil proses. | 00 |
Payment Method
Berikut ini payment method yang tersedia di Aspire payment gateway dan dapat anda gunakan. Anda dapat memasukan payment method(paymentMethod
) pada parameter create invoice, sebagai langkah pembayaran langsung ke satu pembayaran tertentu.
Pelanggan akan langsung di arahkan pada pembayaran yang dituju tanpa memilih.
Jenis Pembayaran | Kode Pembayaran | Keterangan |
---|---|---|
Credit Card | VC |
(Visa / Master Card / JCB) |
Virtual Account | BC |
BCA Virtual Account |
M2 |
Mandiri Virtual Account | |
VA |
Maybank Virtual Account | |
I1 |
BNI Virtual Account | |
B1 |
CIMB Niaga Virtual Account | |
BT |
Permata Bank Virtual Account | |
A1 |
ATM Bersama | |
AG |
Bank Artha Graha | |
NC |
Bank Neo Commerce/BNC | |
BR |
BRIVA | |
Ritel | FT |
Pegadaian/ALFA/Pos |
IR |
Indomaret | |
E-Wallet | OV |
OVO (Support Void) |
SA |
ShopeePay Apps (Support Void) | |
LF |
LinkAja Apps (Fixed Fee) | |
LA |
LinkAja Apps (Percentage Fee) | |
DA |
DANA | |
SL |
ShopeePay Account Link | |
OL |
OVO Account Link | |
QRIS | SP |
ShopeePay |
LQ |
LinkAja | |
NQ |
Nobu | |
DQ |
Dana | |
GQ |
Gudang Voucher | |
Credit | DN |
Indodana Paylater |
AT |
ATOME |
Daftar Issuer (QRIS)
Kode | Issuer |
---|---|
93600999 | AHDI |
93600947 | Aladin Syariah |
93600567 | Allo Bank Indonesia |
93600531 | Amar |
93600822 | Astrapay |
93600116 | Bank Aceh Syariah |
93600037 | Bank Artha Graha Internasional |
93600133 | Bank BPD Bengkulu |
93600124 | Bank BPD Kalimantan Timur dan Kalimantan Utara |
93600161 | Bank Ganesha |
93600513 | Bank Ina Perdana |
93600113 | Bank Jateng |
93600123 | Bank Kalbar |
93600122 | Bank Kalsel |
93600441 | Bank KB Bukopin |
93600121 | Bank Lampung |
93600157 | Bank Maspion |
93600553 | Bank Mayora |
93600548 | Bank Multiarta Sentosa |
93600490 | Bank Neo Commerce |
93600128 | Bank NTB Syariah |
93600019 | Bank Panin |
93600132 | Bank Papua |
93600115 | Bank Pembangunan Daerah Jambi |
93600494 | Bank Raya |
93600119 | Bank Riau Kepri |
93600523 | Bank Sahabat Sampoerna |
93600152 | Bank Shinhan |
93600126 | Bank Sulsel |
93600120 | Bank Sumselbabel |
93600023 | Bank UOB Indonesia |
93600808 | Bayarind |
93600014 | BCA |
93600536 | BCA Syariah |
93600501 | BCAD |
93600815 | Bimasakti Multi Sinergi |
93600110 | BJB |
93600425 | BJB Syariah |
93600919 | BluePay |
93600009 | BNI |
93600129 | BPD Bali |
93600112 | BPD DIY |
93600130 | BPD NTT |
93600114 | BPD-JATIM |
93600002 | BRI |
93600422 | BRIS Pay |
93600200 | BTN |
93600076 | Bumi Arta |
93600031 | Citibank |
93600950 | Commonwealth |
93600915 | Dana |
93600011 | Danamon |
93600046 | DBS MAX QRIS |
93600111 | DKI |
93600899 | Doku |
93600998 | DSP |
93600827 | Fello |
93600777 | Finpay |
93600813 | GAJA |
93600914 | Go-Pay |
93600916 | Gudang Voucher |
93600484 | Hana bank |
93600789 | IMkas |
93600920 | Isaku |
93600542 | JAGO |
93600213 | Jenius |
93600812 | Kaspro |
93600911 | LinkAja |
93600008 | Mandiri Pay |
93600016 | Maybank |
93600426 | Mega |
93600821 | Midazpay |
93600485 | Motion Banking |
93600147 | Muamalat |
93600118 | Nagari |
93600814 | Netzme |
93600022 | Niaga |
93600503 | Nobu |
93600028 | OCBC |
93600811 | OTTOCASH |
93600912 | OVO |
93600820 | PAC Cash |
93600818 | Paydia |
93600917 | Paytrend |
93600013 | Permata |
93608161 | POS Indonesia |
93600167 | QNB Indonesia |
93600921 | Saldomu |
93600535 | Seabank |
93600918 | ShopeePay |
93600153 | Sinarmas |
93600816 | SPIN |
93600451 | Syariah Indonesia |
93600898 | T-Money |
93600828 | TrueMoney |
93600835 | Virgo |
93600830 | YODU |
93600817 | Yukk |
93600825 | Zipay |
Errors
Respon HTTP
Kode Error | Nama Error | Keterangan |
---|---|---|
400 | Bad Request | Ada kesalahan pada saat mengirimkan permohonan pada API. |
400 | Amount is different please try again later. | Error berikut ini terjadi karena anda mencoba untuk mengirim request ulang atau membuat ulang invoice di satu waktu yang sama dan dengan order ID yang sama namun nominal yang berbeda. |
401 | Unauthorized | Akses di tolak batasan kewenangan. |
404 | Not Found | Halaman atau API yang di request tidak di temukan. |
409 | The transaction is still in progress. | Error berikut ini terjadi karena anda mencoba untuk mengirim request ulang atau membuat ulang invoice di satu waktu yang sama dan dengan order ID yang sama. (Disaat request pertama masih dalam proses). |
500 | Internal Server Error | Error pada saat melakukan proses permohonan. |
Respon API
Callback
Kode | Nama | Keterangan |
---|---|---|
00 | Success | Transaksi telah sukses terbayarkan. |
02 | Failed | Transaksi gagal terbayarkan. |
Redirect
Kode | Nama | Keterangan |
---|---|---|
00 | Success | Transaksi telah terbayar. |
01 | Process | Transaksi belum terbayar. |
02 | Canceled/Failed | Transaksi dibatalkan atau tidak terbayar. |
Uji Coba
Berikut adalah daftar kredensial transaksi dummy yang dapat digunakan untuk melakukan transaksi di sandbox.
Kartu Kredit
3D Secure Transaction
Tipe Kartu | Nomor Kartu Kredit | Masa Berlaku | CVV |
---|---|---|---|
VISA | 4000 0000 0000 0044 | 03/33 | 123 |
MASTERCARD | 5500 0000 0000 0004 | 03/33 | 123 |
Virtual Akun
Demo transaction virtual account sandbox klik-disini.
E-Money
Shopee
Untuk pengetesan transaksi shopee dapat mengunduh shopeeapp staging apk disini.
QRIS
Untuk Shopee QRIS gunakan Shopeeapp seperti shopee e-money. Untuk Gudang Voucher dapat menggunakan demo sukses virtual account.
Paylater
Indodana
Nomor Telepon | PIN |
---|---|
081282325566 | 000000 |
Atome
Transaksi Berhasil
Country Code | Nomor Telepon | OTP |
---|---|---|
ID | +62811000122 | 7524 |
Transaksi Gagal
Country Code | Nomor Telepon | OTP |
---|---|---|
ID | +62810000001500 | 1111 |
Pop API Demo
Pop API Demo klik-disini.
Contoh Proyek
Untuk contoh proyek, anda dapat mengakses tautan Github disini.