Dokumen ini berisi informasi kepemilikan yang rahasia dari PT. Bimasakti Multi Sinergi.
Penyingkapan sebagian atau seluruh dokumen ini dapat menyebabkan kerugian materiil bagi PT.
Bimasakti Multi Sinergi. Ijin tertulis dari PT. Bimasakti Multi Sinergi wajib didapatkan sebelum
menyingkapkan dokumen ini kepada pihak ketiga.
This document contains proprietary information that is confidential to PT. Bimasakti Multi Sinergi.
Disclosure of this document in full or in part, may result in material damage to PT. Bimasakti Multi
Sinergi. Written permission must be obtained from PT. Bimasakti Multi Sinergi prior to the disclosure
of this document to third party.
Tanggal
Keterangan
3.0
Author
awicaksi
rdarmawan
rmaulidya
Pengantar
Dokumen ini berisi panduan integrasi webstore merchant ke server SpeedCash via API untuk dapat
memanfaatkan layanan pembayaran SpeedCash. Isi dokumen ditujukan bagi pemilik webstore yang
memiliki pengetahuan dan sumber daya untuk membangun kode di webstore-nya.
Terminologi
SpeedCash
SpeedCash API
Webstore
Merchant
Prasyarat Integrasi
Integrasi dapat dilakukan bila syarat-syarat berikut ini terpenuhi:
(1) Merchant memiliki ID SpeedCash yang aktif dan sudah mendapatkan fitur akses layanan
yang memadai sesuai ketentuan SpeedCash.
(2) Webstore sudah online di internet dan dapat diakses secara publik dengan nama domain
tertentu (bukan IP).
(3) Webstore dapat berkomunikasi dengan aplikasi SpeedCash melalui internet menggunakan
protokol HTTP/HTTPS.
(4) Webstore memiliki modul enkripsi yang diperlukan untuk pengamanan data yang akan
dikomunikasikan ke dan dari aplikasi SpeedCash. Teknik enkripsi harus sesuai standar yang
digunakan oleh API SpeedCash.
Persiapan Integrasi
Langkah persiapan integrasi yang perlu dilakukan oleh merchant:
(1) Mendaftarkan URL webstore ke aplikasi SpeedCash.
a) Silakan login ke www.speedcash.co.id menggunakan akun SpeedCash Anda.
e) Silakan mengisi field yang diperlukan, meliputi : ID Outlet, PIN dan Nama Domain
webstore yang akan digunakan. Selanjutnya, klik tombol Buat Private Key Untuk
Domain Saya.
Gambar 4. Halaman Integrasi via API(Private Key Domain) pada website SpeedCash.
f)
Private Key yang telah sukses digenerate akan ditampilkan di halaman Detail API
Saya.
(2) Mengambil dan mencatat private keys yang digenerate oleh SpeedCash (langkah 1f di atas).
Data tersebut (kedua buah data string) akan dicantumkan pada kode API client yang akan
dibuat dan digunakan sebagai pengenal setiap request (permintaan) dari webstore terhadap
SpeedCash.
Integrasi
Langkah integrasi adalah sebagai berikut:
(1) Membangun kode fungsi API client di dalam aplikasi webstore yang akan digunakan untuk
memanggil fungsi API SpeedCash.
(2) Menempelkan fungsi API client ke dalam aliran proses pembelian di webstore.
URL
https://www.speedcash.co.id/spi/token
Nama
Jenis
Keterangan
username
String(50), mandatory
password
String(50), mandatory
url domain
String(100), mandatory
Request Pembayaran
Proses ini digunakan untuk mengirim data transaksi ke server SpeedCash dan sekaligus melakukan
transaksi pembayarannya.
URL
https://www.speedcash.co.id/spi/toolbar
Parameter Request
Nama
Jenis
Keterangan
spi_item
Array2D
cms
spi_callback
spi_is_escrow
Integer
spi_request_key
spi_currency
spi_quantity
Integer, mandatory
spi_amount
Integer, mandatory
spi_merchant_transaction_reff
spi_token
spi_billingName
Nama Pembeli
spi_billingAddress
Alamat Pembeli
spi_billingCity
Kota Pembeli
spi_billingState
String (4)
spi_billingPostalCode
spi_billingCountry
spi_billingPhone
String (20)
No Telepon Pembeli
(diusahakan dengan no HP
agar suatu saat si pembeli
bisa mendapatkan sms dan
telepon)
spi_billingEmail
String (50)
Email Pembeli
spi_deliveryName
Nama Penerima
spi_deliveryAddress
Alamat Penerima
spi_deliveryCity
Kota Penerima
spi_deliveryState
String (3)
spi_deliveryPostalCode
spi_deliveryCountry
using_gui
String(5)
spi_paymentDate
Date
(yyyyMMddHHmmss)
url_listener
String (150)
custom_page
Integer, mandatory
custom_header
String(100), mandatory
(jika parameter
custom_page bernilai 1)
custom_logo
String(100), mandatory
(jika parameter
custom_page bernilai 1)
custom_name
String(100), mandatory
(jika parameter
custom_page bernilai 1)
spi_item_expedition
Integer
spi_item_weight
Integer
Jenis
Keterangan
name
String(20), mandatory
Nama produk.
nb : dapat berulang
unitPrice
sku
Jenis Produk.
nb : dapat berulang
ids
Model Produk.
nb : dapat berulang
qty
Jumlah Produk.
nb : dapat berulang
desc
Deskripsi Produk.
nb : dapat berulang
10
11
12
"spi_billingEmail": "email@mail.com",
"spi_deliveryName": "Name",
"spi_deliveryAddress": "Address",
"spi_deliveryCity": "City",
"spi_deliveryState": "State",
"spi_deliveryPostalCode": "60119",
"spi_deliveryCountry": "ID",
"spi_paymentDate": "20141230235905",
"url_listener":
"http:\/\/www.yourwebstore.com\/listener_notifikasi_payment.php",
"custom_page" => "1",
"custom_header" => "img/your_webstore",
"custom_logo" => "img/webstore",
"custom_name" => "www.yourwebstore.com",
"spi_item_expedition" => "0",
"spi_item_weight" => "0"
}
Metode enkripsi tersebut menggunakan library dari php yaitu php_mcrypt. Cara instalasinya
sangat mudah, langkahnya adalah sebagai berikut:
Linux (Ubuntu)
1. Periksa konfigurasi library mcrypt terlebih dahulu, apakah aktif / tidak aktif di php
Anda dengan cara membuat file ekstensi php(phpinfo.php) yang berisi script <?php
phpinfo(); ?> dan mengaksesnya lewat browser(mozilla firefox, google chrome, dll).
Contoh akses di browser : http://localhost/phpinfo.php.
13
2. Jika konfigurasi telah aktif maka di phpinfo anda akan tercantum library mcrypt
seperti gambar di bawah ini.
3. Jika konfigurasi mcrypt tidak terlihat di phpinfo Anda. maka instal library php_mcrypt
dengan cara ketikan apt-get install php5-mcrypt di command line (terminal).
4. Setelah instalasi library php_mcrypt sukses kemudian restart apache dengan cara
ketikan service apache2 restart di command line (terminal). lalu refresh browser
Anda. Konfigurasi library php_mcrypt akan terlihat di phpinfo Anda, dengan begitu
php anda sudah siap untuk melakukan enkripsi data.
Windows
1. Download windows binary package di http://php.net/downloads.php.
2. Extract / Unzip hasil download windows binary package tersebut.
3. Dalam folder hasil extract / unzip tersebut ada sebuah file yang bernama
"libmcrypt.dll", salin file ke folder ekstensi php Anda. Biasanya berada di direktori
file program Anda, misal "C:\Program Files\PHP\", jika Anda menggunakan versi non
Inggris Windows maka nama mungkin berbeda.
4. Dalam folder hasil extract / unzip juga terdapat folder lain yang disebut "ext", buka
dan copy file "php_mcrypt.dll" ke folder ekstensi php Anda.
5. Edit file php.ini dengan menambahkan extension=php_mcrypt.dll.
6. Restart web server, dengan begitu php anda sudah siap untuk melakukan enkripsi
data.
14
15
16
$redirect_url = "https://www.speedcash.co.id/spi/toolbar";
?>
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Set timeout (in milliseconds)
var t = setTimeout("document.myform.submit();", 1000);
</script>
</head>
<body>
<form name="myform" action="<?php echo $redirect_url; ?>"
method="POST">
<input type='hidden' name='orderdata' value='<?php echo
$messageEncrypted ?>'>
<input type="Submit" class="btn" value="wait for redirect
or follow this button" name="Submit" onMouseOver="this.style.cursor =
'hand'"/>
</form>
</body>
</html>
Data request (permintaan) yang telah dienkripsi inilah yang akan dikirim ke server SpeedCash.
Kemudian server SpeedCash akan melakukan proses validasi data request tersebut. Jika proses
validasi berhasil, maka server SpeedCash akan menampilkan beberapa pilhan pembayaran untuk
produk yang sesuai dengan data request, seperti gambar dibawah ini:
Silakan pilih cara pembayaran yang Anda inginkan dari berbagai pilihan yang diberikan oleh SPI
SpeedCash.
Contoh (menggunakan layanan Mandiri):
- Konfirmasi produk yang akan dibayar
17
18
Kemudian tekan tombol Kembali ke situs merchant, maka server SpeedCash akan mengirimkan
respon data konfirmasi pembayaran ke url yang telah diberikan pada saat permintaan (request), dari
parameter spi_callback : "http://www.yourwebstore.com/response_receiver.php".
Parameter response
Response yang diberikan akan berisi data berikut:
Nama
Jenis
Keterangan
reff_id
String (10)
order_id
String (16)
Sesuai variabel
spi_merchant_transaction_reff yang
anda kirim
request_key
String (20)
response_code
String (5)
response_desc
Text
additional_datas
JSON
spi_expedition_price
Integer,
spi_expedition_type
String(50)
spi_expedition_name
String (50)
spi_seller_zipcode
Integer(5)
api_version
String(5)
19
Anda dapat mengolah data respon tersebut sebagai konfirmasi pembayaran kepada pembeli
dengan cara menampilkan hasil olahan data ke url yang Anda berikan pada parameter
spi_callback : "http://www.yourwebstore.com/response_receiver.php" saat permintaan (request)
ke server Speedcash.
Contoh kode untuk mengolah data respon dari server SpeedCash
<?php
$messageReceived = file_get_contents("php://input");
parse_str($messageReceived);
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
"<br/>".$reff_id;
"<br/>".$response_code;
"<br/>".$response_desc;
"<br/>".$order_id;
"<br/>".$request_key;
"<br/>".decrypt($additional_datas, $order_id);
"<br/>".$spi_expedition_price;
"<br/>".$spi_expedition_type;
"<br/>".$spi_expedition_name;
"<br/>".$spi_seller_zipcode;
"<br/>".$api_version;
/**
/ Fungsi dekripsi
*/
function decrypt($text, $order_id) {
global $key;
20
$key = $order_id;
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,
$key, base64_decode($text), MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB), MCRYPT_RAND)));
}
?>
URL
https://www.speedcash.co.id/spi/toolbar/transaction_list
Parameter Request
Parameter disusun dalam format JSON, dienkrip, lalu disubmit dengan method POST.
21
Nama
Jenis
Keterangan
tanggal
private_key
private_key2
String(32), mandatory
22
23
Parameter Response
Response berisi data transaksi per hari sesuai tanggal permintaan (request), diberikan dalam format
JSON.
24
Nama
Jenis
Keterangan
id_transaksi
String(16)
reff_id
String(16)
time_request
date (yyyy-MM-dd
HH:mm:ss)
response_code
String(5)
keterangan
Text
api_version
String(5)
Catatan
Demi kelancaran dan ketersediaan akses bagi kustomer pada masing-masing aplikasi (webstore
dan SpeedCash), beberapa point penting integrasi berikut wajib diperhatikan oleh merchant:
(1) Merchant selalu menggunakan layanan API sesuai spesifikasi yang telah ditentukan
SpeedCash.
(2) Merchant tidak melakukan spamming maupun load test terhadap layanan API SpeedCash,
baik melalui webstore ataupun tool lain.
(3) Merchant bertanggung jawab dan mengusahakan keamanan data yang berada di dalam
ranah webstore-nya.
25