Dokumen API SpeedCash(v.3.0)
description
Transcript of Dokumen API SpeedCash(v.3.0)
-
0
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan Integrasi Webstore ke SpeedCash via API
(V.3.0)
PT. Bimasakti Multi Sinergi Head Office: GRAHA BIMASAKTI Jl. Delta Raya Utara Kav. 49 - 51 Deltasari Baru, Sidoarjo, Jawa Timur, Indonesia 61256 Operation and Service Center: Jalan Kolonel Sugiyono No. 104C, Yogyakarta, Indonesia 55153 Phone : +62-274-4580333, Mobile : +62-82226657999, Fax : +62-274-4580183, Website: http://www.speedcash.co.id/
-
1
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Pendahuluan
Panduan Integrasi Webstore ke SpeedCash via API
Panduan Integrasi Webstore ke SpeedCash via API (Panduan dan Spesifikasi Teknis)
v3.0
Disiapkan oleh Divisi Ecommerce Solution
PT. Bimasakti Multi Sinergi, Indonesia
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.
-
2
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Pendahuluan
Panduan Integrasi Webstore ke SpeedCash via API
Kontrol Perubahan Dokumen
Author Keterangan Tanggal Versi
awicaksi
rdarmawan
rmaulidya
Penulisan ulang dari Panduan Integrasi API
SpeedCash (v2.0.2.08.10.14), dan
penambahan field expiry dan callback.
Update spesifikasi parameter dan contoh kode.
Update screenshots dan contoh aliran proses.
22 Oktober 2014 3.0
-
3
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
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 : sistem layanan mediasi pembayaran online.
SpeedCash API : antarmuka siap pakai yang tersedia di SpeedCash untuk diakses oleh aplikasi
lain secara programatik.
Webstore : toko online berbasis web.
Merchant : member SpeedCash, yang akunnya akan digunakan dalam integrasi ini.
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.
Gambar 1. Halaman home pada website SpeedCash.
b) PIlih menu Penjualan dan Merchant - Integrasi via API.
c) Klik tombol Private Key di halaman Integrasi SpeedCash via API.
-
4
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
Gambar 2. Halaman Integrasi via API(Private Key) pada website SpeedCash.
d) Pilih tab Daftarkan Domain.
Gambar 3. Halaman Integrasi via API(Daftarkan Domain) pada website SpeedCash.
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.
-
5
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
f) Private Key yang telah sukses digenerate akan ditampilkan di halaman Detail API
Saya.
Gambar 5. Halaman Integrasi via API(Data API) pada website SpeedCash.
(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.
-
6
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
Fungsi API SpeedCash
Get Token
Mengambil token yang akan digunakan sebagai data otentikasi dalam setiap permintaan (request)
layanan API lainnya.
URL https://www.speedcash.co.id/spi/token
Keterangan Jenis Nama
Berisi private_key1 yang diperoleh dari hasil proses pendaftaran webstore merchant
String(50), mandatory username
Berisi private_key2 yang diperoleh dari hasil proses pendaftaran webstore merchant
String(50), mandatory password
Berisi URL lengkap dari webstore yang didaftarkan oleh merchant
String(100), mandatory url domain
Contoh Kode API Client (PHP)
-
7
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
$username = "0bd110fe579789dac348709f47187b45"; // berisi private_key1 yg
diperoleh dari hasil proses pendaftaran webstore merchant
$password = "e63b3b8596a42e194130488e016c1d0e"; // berisi private_key2 yg
diperoleh dari hasil proses pendaftaran webstore merchant
$token = get_token($username, $password); // berisi token authentikasi yg akan
digunakan untuk rekues pembayaran.
?>
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
Keterangan Jenis Nama
Detail produk. Berisi [name,unitPrice,sku,ids,qty,desc] (dapat dilihat di tabel Deskripsi variabel spi_item)
Array2D spi_item
Harus diisi dengan API String (20), mandatory cms
URL Call Back Website Merchant String (150), mandatory spi_callback
Flag Rekening Bersama SpeedCash: 0 = kustomer tidak boleh menggunakan RekBer, atau 1 = kustomer diperbolehkan menggunakan Rekber
Integer spi_is_escrow
Kode generate id transaksi penjualan yang dihasilkan dari merchant (custom merchant) harus unique atau beda dengan id transaksi lain
String (20), mandatory spi_request_key
Nilai Mata Uang hanya support (IDR,USD)
String (3), mandatory spi_currency
Jumlah Total Barang Yang Dibeli(hasil penjumlahan dari parameter spi_item[qty])
Integer, mandatory spi_quantity
Jumlah Total Harga Barang Yang Dibeli(hasil penjumlahan dari parameter spi_item[unitPrice])
Integer, mandatory spi_amount
-
8
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
Order ID / id transaksi Penjualan Merchant (harus unique / beda dengan id transaksi lain)
String (30), mandatory spi_merchant_transaction_reff
Gabungan antara private_key1 dan private_key2 (digabung dalam satu string)
String (100), mandatory spi_token
Nama Pembeli String (30), mandatory spi_billingName
Alamat Pembeli String (100), mandatory spi_billingAddress
Kota Pembeli String (50), mandatory spi_billingCity
Inisial Kota Pembeli LA:LAMONGAN format bebas maksimal 3 karakter
String (4) spi_billingState
Kode Pos Pembeli(kode pos bisa dilihat di http://kodepos.posindonesia.co.id/)
String (6), mandatory spi_billingPostalCode
Kode Negara Pembeli (ID:Indonesia) , kode format bisa dilihat di wesbsite http://www.web- l.com/country-codes/
String (3), mandatory spi_billingCountry
No Telepon Pembeli (diusahakan dengan no HP agar suatu saat si pembeli bisa mendapatkan sms dan telepon)
String (20) spi_billingPhone
Email Pembeli String (50) spi_billingEmail
Nama Penerima String (30), mandatory spi_deliveryName
Alamat Penerima String (100), mandatory spi_deliveryAddress
Kota Penerima String (50), mandatory spi_deliveryCity
Inisial Kota Penerima LA: LAMONGAN format bebas maksimal 3 karakter
String (3) spi_deliveryState
Kode Pos Penerima (kode pos bisa dilihat di http://kodepos.posindonesia.co.id/)
String (6), mandatory spi_deliveryPostalCode
Kode Negara Penerima (ID:Indonesia) , kode format bisa dilihat di wesbsite http://www.web- l.com/country-codes/
String (3), mandatory spi_deliveryCountry
-
9
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
yes : menggunakan user interface, no : tidak menggunakan user interface
String(5) using_gui
Batas tanggal dan waktu kadaluarsa pembayaran, dihitung berdasarkan waktu server SpeedCash (GMT+7).
Date (yyyyMMddHHmmss)
spi_paymentDate
URL listener pada Webstore Merchant (SpeedCash akan mengirinkan notifikasi pembayaran ke URL tersebut untuk jenis pembayaran yang asinkron: ATM BCA, BRI MOCASH, MANDIRI, TCASH, ATM 137 Bank Online)
String (150) url_listener
Parameter ini digunakan jika merchant ingin merubah tampilan (Header dan Footer pada gambar 8 dan 9) sesuai dengan nama webstore merchant. 0 = Tidak merubah tampilan 1 = Merubah tampilan
Integer, mandatory custom_page
Gambar yang ingin ditampilkan pada bagian atas(Gambar 8 dan 9). NB : Gambar harus diberikan pada pihak SpeedCash terlebih dahulu.
String(100), mandatory (jika parameter custom_page bernilai 1)
custom_header
Logo webstore merchant yang ingin ditampilkan.
String(100), mandatory (jika parameter custom_page bernilai 1)
custom_logo
Nama webstore merchant yang ingin ditampilkan.
String(100), mandatory (jika parameter custom_page bernilai 1)
custom_name
Parameter ini digunakan jika merchant ingin menggunakan fasilitas pengiriman (Pos, dll). 0 = Tidak menggunakan pengiriman 1 = Menggunakan pengiriman
Integer spi_item_expedition
Berat barang / produk. Integer spi_item_weight
Deskripsi struktur variabel spi_item
Keterangan Jenis Nama
Nama produk. nb : dapat berulang
String(20), mandatory name
Harga Satuan Produk, contoh: 45000 atau 45000.00 (tanpa separator
String (12), mandatory unitPrice
-
10
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
ribuan, hanya separator pecahan) nb : dapat berulang
Jenis Produk. nb : dapat berulang
String (30), mandatory sku
Model Produk. nb : dapat berulang
String (30), mandatory ids
Jumlah Produk. nb : dapat berulang
String (5), mandatory qty
Deskripsi Produk. nb : dapat berulang
String (30), mandatory desc
Contoh kode API client (PHP)
-
11
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
"sku"=>"Jenis Kaos 2",
"ids"=>"Jenis Kaos 2",
"qty"=>"1",
"desc"=>"Kaos 2"
),
),
"cms" => "API",
"spi_callback" =>
utf8_encode("http://www.yourwebstore.com/response_receiver.php"),
"spi_is_escrow" => 0,
"spi_request_key" => "EGHGHGH1212",
"spi_currency" => "IDR",
"spi_quantity" => "2",
"spi_amount" => 30000,
"spi_merchant_transaction_reff" => "ASJ1231231233",
"spi_token" => $username . $password,
"spi_billingName" => "Name",
"spi_billingAddress" => "Address",
"spi_billingCity" => "City",
"spi_billingState" => "State",
"spi_billingPostalCode" => "64393",
"spi_billingCountry" => "ID",
"spi_billingPhone" => "081232646622",
"spi_billingEmail" => "[email protected]",
"spi_deliveryName" => "Name",
"spi_deliveryAddress" => "Address",
"spi_deliveryCity" => "City",
"spi_deliveryState" => "State",
"spi_deliveryPostalCode" => "60119",
"spi_deliveryCountry" => "ID",
"using_gui" => "no",
"spi_paymentDate" => "20141230235905",
"url_listener" =>
utf8_encode("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"
);
$message = json_encode($data);
$token = get_token($username, $password);
$messageEncrypted = encrypt($message, $token);
// Compose pesan untuk dikirim ke URL
$messageEncrypted = substr($messageEncrypted, 0, 10)
. $token
. substr($messageEncrypted, 10);
$redirect_url = "https://www.speedcash.co.id/spi/toolbar";
?>
-
12
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
// Set timeout (in milliseconds)
var t = setTimeout("document.myform.submit();", 1000);
-
13
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
"spi_billingEmail": "[email protected]",
"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"
}
Contoh data request setelah dienkripsi
Z8JWteu6fIf1825810b2c5b10c47aeb1790b7255f5krQQZ9V4fVmGscPFepl6YBHYKAIuZ8paD
vGWfkzKEzkdaPWi0QVw5la8JW1BHQGEMKIxN2XIAyX72RwTB7FbxCd5LhBAEavBUiMELFEUqPAecgbMHQ
46GwV0+E8qLtuBnEkA/rzkZ86SS2fQeL3Kg4ArFjlFneFAPQ4hYw9V0n1J74YNOo6uHqviS6eiy/umnx/
zLRGc4fhdLOtfKtsVM/hcPH9z54uFNKgPNwV8Ek3PgeDS1+5AbVgE7H2j9dH3SjfImXL0/J9/vFsYcMGZ
u3SMMu8Rd3++ZZfEfsQaVs+JiG9lLWeIuveu+I9djEuSIDXVqBQkKki6rK20KgfJVMFTdpZkDpNgpoDSG
aMu0iUPT8rbExHP9lVWNmd4S0C5AHlArrdR73/+KYwoyNfkHB4c/oiWfYAY8JSVNTuCPMZobgyrOBVX54
JqmivOC9pvlAqN9wG068k6bPzkL/RyNjn2icFAGfS/Y69SQbNIJJmsyC6ASUGELRuqivMX0s6vQC9KLsl
O1VUNfinKNeH4Vez/77MQFYxaXiTw6m/GvhOHLkfR46k9F4wSq2l74zZbux01IW+8Qdkbr0I0+XrA8BGU
/HTyCBbPLSSx9/IkT0RBC7LSvYpe6BEVjpeCGFvzV5FMagbXi74NvfiQLf2uT+qetSIdCU1906xNJ39y8
5UsQuDGjfJhFN0WOWJ5krk79NRb5msqHvYvfQ+vk7R+/shdP6BxwuogP3N3jmdNjXGpbisBdTTDmNYQMy
LlVEsA8BtBuJNtSNsH++idI0PJ/55w7uO9+hgtY5NEeNqdjjl+eCxz0s8CFVJOJrE2JdO1GCzdYmy24hT
trGdTwpoSYYg3+dgyAUCkHmYS5MKgTS191MGnklOtaV0LatItTA3ntlSXuOCooWIvQ4S8VQjiuT3kZvQU
Y4WIWEWpmPmbUrzwHvIkBjSSEMi7B+ZKCAO9zvWL7ejBvBNDGnmG1IBsdZN2BDuTKXsElnybu/YI8ic5T
Q6j4iv0Q5DdhlzH7KXcZKeC3GnVUzcLb09w+5cjfMtyL/vtKYQVx6ZlbfK2sqeJLeAhRzFL3y3qNfTPbq
mf5XgwunpEFiFHQQ40AY+qGYf1vQ4ioC2pZzI8pQSA5dY7bk9Pb6f2z4t0+pz26m9sCknD/jkxEiy/w5n
p8aVMfI6z/kOEgIDXNABPCOKN9i8spEL30PQ6jGs7yvYMvCB4UoVVmttQh/snt6FVxodKKCQggcGbzX6C
gcvabI4q/aEHNKa/sALmx8DJqMlHOR0Y9wAUHhTMizz7MFPBk4cgfF05PWKjAePQGEwFjpPfLinthtNcz
dvSME/xQ8YB2w/JLB/YeGXLoyO3vhaZ1KObrAZpbWoXbW9bmFrKVtUlTcqGY3lUcNuTHyx6bQW24TLsqd
09jv/9ri6pGskEQtbNERpwobSy7Btqh/3M+wLWqvlfOWEMV3lVsd8JVfrjYufuXWAVw1tot4Y48VnW50b
DPrkNo9hTaxBPw1DWZNZkeSdyml62vaWmCIlP8tDrna30YtypWQY1ERdi9kv2vvw61n7egovB3KZO0/Bi
ELMXAa913BWcLfvFk1P7D1wb36QNcc/fldpO6cJlMwxkKR1qDWxIt2qDUXJrePUHh5i9va942m0h1WGGN
4Nbc8K7wPLgxQ8lxj4CSxU1gHp90p+//lUo5d24C809bkZwgJFEhB98FGA89Zk38Ahk0PLbAtO6n5+QH8
xCP06XGURVco9FQxBut2LS0xkdTx9Td2TLZ0HAT2MK8klVOY6aiOuyiOYKvUyNlLxOLXpDaS+pBQNAVTJ
TVGXEAgUhWwSVsXPe/Won8nQn5NhI0qQNZmb/ZW8Im2SpY9wJIXmQ==
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 dan mengaksesnya lewat browser(mozilla firefox, google chrome, dll).
Contoh akses di browser : http://localhost/phpinfo.php.
-
14
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
2. Jika konfigurasi telah aktif maka di phpinfo anda akan tercantum library mcrypt
seperti gambar di bawah ini.
Gambar 6. Konfigurasi library php (PHP_Mcrypt).
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.
Alternatif library enkripsi, PHPCrypt
Selain menggunakan library php_mcrypt, Anda juga bisa memanfaatkan fungsi dari PHPCrypt
yang bisa Anda dapatkan di http://www.gilfether.com/phpcrypt/. Cara penggunaannya juga sangat
mudah, contohnya seperti di bawah ini.
Linux / Windows (Cara penggunaannya sama)
-
15
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
function get_token($username, $password) {
$URL = "https://www.speedcash.co.id/spi/token"; //URL SPI Speedcash
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 120); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "www.yourwebstore.com"); // berisi
url / domain yang didaftarkan oleh merchant pada waktu mendaftarkan private
key, 1 private key hanya bisa digunakan untuk 1 URL
$headers = array(
'Content-Type:application/json',
'Authorization: Basic ' . base64_encode($username . ":" . $password)
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
$result = curl_exec($ch);
return $result;
}
/* fungsi enkripsi menggunakan PHPCrypt */
function encrypt_phpCrypt($text,$token){
$crypt = new PHP_Crypt($token, PHP_Crypt::CIPHER_RIJNDAEL_256,
PHP_Crypt::MODE_ECB);
return base64_encode($crypt->encrypt($text));
}
/* contoh kode untuk proses enkripsi data */
// Set username, diambil dari nilai private_key1
// yang diperoleh dari hasil proses pendaftaran webstore merchant
$username = "0bd110fe579789dac348709f47187b45";
// Set username, diambil dari nilai private_key2
// yang diperoleh dari hasil proses pendaftaran webstore merchant
$password = "e63b3b8596a42e194130488e016c1d0e";
$data = array(
"spi_item" => array(
array(
"name"=>"Kaos oblong",
"unitPrice"=>"20000",
"sku"=>"Jenis Kaos 1",
"ids"=>"Jenis Kaos 1",
"qty"=>"1",
"desc"=>"Kaos 1"
),
array(
"name"=>"Kaos tidak oblong",
"unitPrice"=>"10000",
-
16
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
"sku"=>"Jenis Kaos 2",
"ids"=>"Jenis Kaos 2",
"qty"=>"1",
"desc"=>"Kaos 2"
),
),
"cms" => "API",
"spi_callback" =>
utf8_encode("http://www.yourwebstore.com/response_receiver.php"),
"spi_is_escrow" => 0,
"spi_request_key" => "EGHGHGH1212",
"spi_currency" => "IDR",
"spi_quantity" => "2",
"spi_amount" => 30000,
"spi_merchant_transaction_reff" => str_pad("1014", 16,
"0",STR_PAD_LEFT), // untuk enkripsi menggunakan PHP_Crypt order id harus
16 digit",
"spi_token" => $username . $password,
"spi_billingName" => "Name",
"spi_billingAddress" => "Address",
"spi_billingCity" => "City",
"spi_billingState" => "State",
"spi_billingPostalCode" => "64393",
"spi_billingCountry" => "ID",
"spi_billingPhone" => "081232646622",
"spi_billingEmail" => "[email protected]",
"spi_deliveryName" => "Name",
"spi_deliveryAddress" => "Address",
"spi_deliveryCity" => "City",
"spi_deliveryState" => "State",
"spi_deliveryPostalCode" => "60119",
"spi_deliveryCountry" => "ID",
"using_gui" => "no",
"spi_paymentDate" => "20141230235905",
"url_listener" =>
utf8_encode("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_expedition_price" => "23560",
"spi_expedition_type" => "Express Barang Nasional",
"spi_expedition_name" => "PT. POS",
"spi_seller_zipcode" => "61252",
"spi_item_weight" => "0"
);
$message = json_encode($data);
$token = get_token($username, $password);
$messageEncrypted = encrypt_phpCrypt($message, $token);
// Compose pesan untuk dikirim ke URL
$messageEncrypted = substr($messageEncrypted, 0, 10)
. $token
. substr($messageEncrypted, 10);
-
17
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
$redirect_url = "https://www.speedcash.co.id/spi/toolbar";
?>
// Set timeout (in milliseconds)
var t = setTimeout("document.myform.submit();", 1000);
-
18
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
Gambar 8. Halaman Speedcash Payment Interface konfirmasi produk.
- Konfirmasi bahwa pembayaran sedang diproses
-
19
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
Gambar 9. Halaman Speedcash Payment Interface proses pembayaran.
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:
Keterangan Jenis Nama
Id referensi yang di peroleh dari server Speedcash
String (10) reff_id
Sesuai variabel spi_merchant_transaction_reff yang anda kirim
String (16) order_id
Sesuai dengan varaibel spi_request_key yang anda kirim
String (20) request_key
Kode respon hasil transaksi pembayaran. 00 : Transaksi Sukses 80 : Salah Currency 33 : Database Trouble 31 : Gagal Catat Transaksi
String (5) response_code
Keterangan / deskripsi dari variabel response_code. 00 : Transaksi Sukses 80 : Salah Currency 33 : Database Trouble 31 : Gagal Catat Transaksi
Text response_desc
Berisi enkripsi dari data detail produk yang di-request oleh webstore merchant ke server Speedcash. Lakukan dekripsi terlebih dahulu untuk memperoleh datanya.(contoh cara pengolahan data dapat dilihat di Contoh kode untuk mengolah data respon dari SpeedCash)
JSON additional_datas
Harga pengiriman barang / produk. Integer, spi_expedition_price
Tipe pengiriman barang / produk. String(50) spi_expedition_type
Nama pengiriman barang / produk String (50) spi_expedition_name
Kode pos penjual. Integer(5) spi_seller_zipcode
Versi api SPI SpeedCash String(5) api_version
-
20
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
Contoh data respon
reff_id=3138687&response_code=00&response_desc=Transaksi+Anda+Berhasil&order_id=A
SJ1231231233&request_key=EGHGHGH1212&additional_datas=9hO1ufY8rbIsTvUgNjZreAMAEpE
0rP1io5jf2CG4Hx7IhG9G29ACAiBNQ7NxBhuuS3%2B4YgKLViVk0UGZBUjv8FFlrraRnaMIDLw6JFsk%2
F6zdQFPgOWL08UJjzaQDIOSFjupdmW7NQ%2Fk8FXSPlLJZjrmWxT7ML5xQSzfMJcGpW7RYx%2Bu1H5DKT
NS8GcZi3LuKbtBi8jy8nxb5SED%2Fjej96okbGUzjs%2FG2l7e2rDZheMN%2FquZebusDCHq6vbaYpGsd
Y6ge%2BmftZAztUN%2BZYjnCKK9MF%2BQovbIzFUfAGWhfqdAmcsZpyVzcZgZHBJDZRUVmWMoZJfTOtuH
IzTuVhCOJZHjlOq69iPuojQaeyIxz4Ieujrpz9nsBEXvBnFGoh1jAtnGK9tLI427LDvtzzvFvEH1o1frV
1HnYRhNc5vF3kNB9uKzEt55lLy%2FkeuCLtWzfxp%2FzJM86HYc3roOp8xzE%2BfJeoRy6fMcCb6BfuqY
stywkgpN99oP2ANEu9xZG0tUQlvMkfqroP3CdGFgQTrIGF4gCljl90iDZ7e%2Fd0JjetMJSbOK9q0ZwdY
PtbTCXVq10vZqqD6IQj8tZ1OnhVGZ5yadyvQNLxmVb5KJta526kgbEGHR8%2BkwX8pk3uS6%2BHhA4fbj
VbN8coInsoAX5n80LWCcd3FHQEYOUVUd7zdLrhyFleaPptEmpQrCLDzZ0dQZO50mo2rPJLD%2FGP0xBMY
k6yTa06LDVAcoa%2BYTiJhtgK1pWDb8LwzqnVtejWvJlWZ0XIzHBnS3VyF9n%2B7e7AyKqwjILeLcCPN0
Em5auyEPgW0peZnUSOSh1jVd3OgHs5je78Y8BZDo1qDbQY6x0sp%2BH%2FQhZ39s%2FMet7C%2B4hm0rN
gs7LIDFkXZZoPAGYBmg2QXT9SCXjZQSVr5FtXDOjcPbqxfGy1zjbLaF1HJdBWItZhoNMt2PAz9xeiJtu5
cRyv%2FZeEaBH%2FUjLjEEw2M9SiDwF31%2FAxUBDugvFaFf2HYBCkj46D8mBl8twFn6uzobcDEbkH0FR
vNhVFUHlvTEWm3WHg11kViSEzh0%2B8FwlO%2B3pxPu%2BoHyjXxVe0qmfjps%2BrzUaY6SkBodo2tkgz
kNZ8SwHpy3enEa8Cg2unZeBCSQAy6Gtm7kj%2Bgkz3uan9uKIpWcJDkGPu%2Bk7LdWEg0sZrblOZD3%2B
P1szLlUrjw1kD3cFhfUUrbbfaKpcFi500ZnGZyGwi3faOWhAxyg2fHAy4vrKblI%2BNAn52o5trk8Al0X
2kAl1SppVhfDFhFzfDI5xdYsx&spi_expedition_price=12000&spi_expedition_type=Express+
Barang+Nasional&spi_expedition_name=PT.POS&spi_seller_zipcode=60119&api_version=3
.0
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
-
21
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
$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)));
}
?>
Metode dekripsi di atas menggunakan php_mcrypt. Selain menggunakan metode php_mcrypt,
Anda juga bisa menggunakan metode dekripsi dengan PHPCrypt, contoh cara penggunaan
dekripsi dengan PHPCrypt adalah seperti dibawah ini.
Request Status Transaksi
Mengambil data status transaksi harian yang sebelumnya telah dilakukan melalui layanan
SpeedCash.
URL https://www.speedcash.co.id/spi/toolbar/transaction_list
Parameter Request
Parameter disusun dalam format JSON, dienkrip, lalu disubmit dengan method POST.
-
22
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
Keterangan Jenis Nama
Tanggal transaksi yang diinginkan, dalam format YYYY-mm-dd.
Date (yyyy-MM-dd), mandatory tanggal
Berisi private_key1 yang diperoleh dari hasil proses pendaftaran webstore merchant
String (32), mandatory private_key
Berisi private_key2 yang diperoleh dari hasil proses pendaftaran webstore merchant
String(32), mandatory private_key2
Contoh data Request
{
"tanggal":"2014-08-30",
"private_key":"0bd110fe579789dac348709f47187b45",
"private_key2":"e63b3b8596a42e194130488e016c1d0e"
}
Contoh kode API Client (PHP)
-
23
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
function get_token($username, $password) {
$URL = "https://www.speedcash.co.id/spi/token"; //URL SPI Speedcash
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 120); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "www.yourwebstore.com");
$headers = array(
'Content-Type:application/json',
'Authorization: Basic ' . base64_encode($username . ":" . $password)
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
$result = curl_exec($ch);
return $result;
}
/**
/ Fungsi pengambil data status transaksi
*/
function getData($tgl="00",$username="00",$password="00")
{
$ch = curl_init();
$orderdata = new stdClass();
$orderdata->tanggal = $tgl;
$orderdata->private_key = $username;
$orderdata->private_key2 = $password;
$message = json_encode($orderdata);
$token = get_token($username, $password);
$messageEncrypted = encrypt($message, $token);
// Enkrip data untuk dikirim ke URL
$messageEncrypted = substr($messageEncrypted, 0, 10)
. $token
. substr($messageEncrypted, 10);
$d = array("orderdata" => $messageEncrypted);
$serialized = _serialize_request($d);
curl_setopt($ch, CURLOPT_URL,
"https://www.speedcash.co.id/spi/toolbar/transaction_list");
curl_setopt($ch, CURLOPT_POSTFIELDS, $serialized);
curl_setopt($ch, CURLOPT_PORT, 443);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-
24
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
$response = curl_exec($ch);
$errno = curl_errno($ch);
$error = curl_error($ch);
if ($errno > 0)
$aa = 'null';
else
$aa = $response;
curl_close($ch);
$resp = json_decode($response);
if ($resp == null || $resp == "")
{
$tabel = "Data Tidak Di Temukan";
}
else
{
$i = 1;
$tabel = "NOREFF IDORDER
IDTRANSACTION DATEKETERANGAN";
foreach ($resp as $data){
$tabel .= "".$i."".$data-
>reff_id."".$data->id_transaksi."".date("Y-m-d H:i:s",
strtotime($data->time_request))."".$data->keterangan."";
$i++;
}
$tabel .= "";
}
return $tabel;
}
// Set tanggal transaksi yang diinginkan
$tanggal = '2014-10-22';
// Set username, diambil dari nilai privatekey1
$username = "0bd110fe579789dac348709f47187b45";
// Set password, diambil dari nilai privatekey2
$password = "e63b3b8596a42e194130488e016c1d0e";
echo getData($tanggal,$username,$password);
?>
Parameter Response
Response berisi data transaksi per hari sesuai tanggal permintaan (request), diberikan dalam format
JSON.
-
25
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Panduan dan Spesifikasi Teknis
Panduan Integrasi Webstore ke SpeedCash via API
Keterangan Jenis Nama
Diperoleh dari server Speedcash yang merupakan id_transaksi pembayaran.
String(16) id_transaksi
Diperoleh dari parameter spi_merchant_transaction_reff yang dikirim oleh merchant saat request pembayaran
String(16) reff_id
Tanggal transaksi pembayaran date (yyyy-MM-dd HH:mm:ss)
time_request
Kode response hasil transaksi pembayaran String(5) response_code
Keterangan hasil transaksi pembayaran Text keterangan
Versi API SpeedCash String(5) api_version
Contoh data Response
{
id_transaksi":"3138612",
"reff_id":"ASJ1231231233",
"time_request":"2014-10-22 11:31:20",
response_code:00,
"keterangan":"Transaksi Anda Berhasil",
api_version:3.0
}
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.