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/ SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014 0
Panduan Integrasi Webstore ke SpeedCash via API Pendahuluan
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.
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
1
Panduan Integrasi Webstore ke SpeedCash via API Pendahuluan
Kontrol Perubahan Dokumen Versi
Tanggal
Keterangan
3.0
22 Oktober 2014 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.
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
Author awicaksi rdarmawan rmaulidya
2
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
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
: sistem layanan mediasi pembayaran online. : antarmuka siap pakai yang tersedia di SpeedCash untuk diakses oleh aplikasi lain secara programatik. : toko online berbasis web. : 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”.
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
3
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
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.
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
4
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
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.
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
5
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
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
Nama
Jenis
Keterangan
username
String(50), mandatory
Berisi private_key1 yang diperoleh dari hasil proses pendaftaran webstore merchant
password
String(50), mandatory
Berisi private_key2 yang diperoleh dari hasil proses pendaftaran webstore merchant
url domain
String(100), mandatory
Berisi URL lengkap dari webstore yang didaftarkan oleh merchant
Contoh Kode API Client (PHP)
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
6
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
$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 Nama
Jenis
Keterangan
spi_item
Array2D
Detail produk. Berisi [name,unitPrice,sku,ids,qty,desc] (dapat dilihat di tabel “Deskripsi variabel spi_item”)
cms
String (20), mandatory
Harus diisi dengan „API‟
spi_callback
String (150), mandatory
URL Call Back Website Merchant
spi_is_escrow
Integer
Flag Rekening Bersama SpeedCash: 0 = kustomer tidak boleh menggunakan RekBer, atau 1 = kustomer diperbolehkan menggunakan Rekber
spi_request_key
String (20), mandatory
Kode generate id transaksi penjualan yang dihasilkan dari merchant (custom merchant) “harus unique atau beda” dengan id transaksi lain
spi_currency
String (3), mandatory
Nilai Mata Uang hanya support (“IDR”,”USD”)
spi_quantity
Integer, mandatory
Jumlah Total Barang Yang Dibeli(hasil penjumlahan dari parameter spi_item[qty])
spi_amount
Integer, mandatory
Jumlah Total Harga Barang Yang Dibeli(hasil penjumlahan dari parameter spi_item[unitPrice])
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
7
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
spi_merchant_transaction_reff
String (30), mandatory
Order ID / id transaksi Penjualan Merchant (harus unique / beda dengan id transaksi lain)
spi_token
String (100), mandatory
Gabungan antara private_key1 dan private_key2 (digabung dalam satu string)
spi_billingName
String (30), mandatory
Nama Pembeli
spi_billingAddress
String (100), mandatory
Alamat Pembeli
spi_billingCity
String (50), mandatory
Kota Pembeli
spi_billingState
String (4)
Inisial Kota Pembeli LA:”LAMONGAN” format bebas maksimal 3 karakter
spi_billingPostalCode
String (6), mandatory
Kode Pos Pembeli(kode pos bisa dilihat di http://kodepos.posindonesia.co.id/)
spi_billingCountry
String (3), mandatory
Kode Negara Pembeli (ID:Indonesia) , kode format bisa dilihat di wesbsite http://www.webl.com/country-codes/
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
String (30), mandatory
Nama Penerima
spi_deliveryAddress
String (100), mandatory
Alamat Penerima
spi_deliveryCity
String (50), mandatory
Kota Penerima
spi_deliveryState
String (3)
Inisial Kota Penerima LA: “LAMONGAN” format bebas maksimal 3 karakter
spi_deliveryPostalCode
String (6), mandatory
Kode Pos Penerima (kode pos bisa dilihat di http://kodepos.posindonesia.co.id/)
spi_deliveryCountry
String (3), mandatory
Kode Negara Penerima (ID:Indonesia) , kode format bisa dilihat di wesbsite http://www.webl.com/country-codes/
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
8
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
using_gui
String(5)
yes : menggunakan user interface, no : tidak menggunakan user interface
spi_paymentDate
Date (yyyyMMddHHmmss)
Batas tanggal dan waktu kadaluarsa pembayaran, dihitung berdasarkan waktu server SpeedCash (GMT+7).
url_listener
String (150)
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)
custom_page
Integer, mandatory
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
custom_header
String(100), mandatory (jika parameter custom_page bernilai 1)
Gambar yang ingin ditampilkan pada bagian atas(Gambar 8 dan 9).
custom_logo
String(100), mandatory (jika parameter custom_page bernilai 1)
Logo webstore merchant yang ingin ditampilkan.
custom_name
String(100), mandatory (jika parameter custom_page bernilai 1)
Nama webstore merchant yang ingin ditampilkan.
spi_item_expedition
Integer
Parameter ini digunakan jika merchant ingin menggunakan fasilitas pengiriman (Pos, dll).
NB : Gambar harus diberikan pada pihak SpeedCash terlebih dahulu.
0 = Tidak menggunakan pengiriman 1 = Menggunakan pengiriman
spi_item_weight
Integer
Berat barang / produk.
Deskripsi struktur variabel spi_item Nama
Jenis
Keterangan
name
String(20), mandatory
Nama produk. nb : dapat berulang
unitPrice
String (12), mandatory
Harga Satuan Produk, contoh: 45000 atau 45000.00 (tanpa separator
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
9
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
ribuan, hanya separator pecahan) nb : dapat berulang
sku
String (30), mandatory
Jenis Produk. nb : dapat berulang
ids
String (30), mandatory
Model Produk. nb : dapat berulang
qty
String (5), mandatory
Jumlah Produk. nb : dapat berulang
desc
String (30), mandatory
Deskripsi Produk. nb : dapat berulang
Contoh kode API client (PHP) 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",
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
10
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
"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"; ?>
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
11
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
<script language="JavaScript" type="text/javascript"> // Set timeout (in milliseconds) var t = setTimeout("document.myform.submit();", 1000);
Contoh Data Request Contoh data request sebelum dienkripsi { "spi_item": [{ "name": "Kaos oblong", "unitPrice": "20000", "sku": "Jenis Kaos 1", "ids": "Jenis Kaos 1", "qty": "1", "desc": "Kaos 1" }, { "name": "Kaos tidak oblong", "unitPrice": "10000", "sku": "Jenis Kaos 2", "ids": "Jenis Kaos 2", "qty": "1", "desc": "Kaos 2" }], "cms": "API", "spi_callback": "http:\/\/www.yourwebstore.com\/response_receiver.php", "spi_is_escrow": 0, "spi_request_key": "EGHGHGH1212", "spi_currency": "IDR", "spi_quantity": "2", "spi_amount": 10000, "spi_merchant_transaction_reff": "ASJ1231231233", "spi_token": "0bd110fe579789dac348709f47187b45e63b3b8596a42e194130488e016c1d0e", "spi_billingName": "Name", "spi_billingAddress": "Address", "spi_billingCity": "City", "spi_billingState": "State", "spi_billingPostalCode": "64393", "spi_billingCountry": "ID", "spi_billingPhone": "081232646622",
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
12
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
"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.
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
13
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
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)
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
14
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
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",
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
15
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
"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);
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
16
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
$redirect_url = "https://www.speedcash.co.id/spi/toolbar"; ?> <script language="JavaScript" type="text/javascript"> // Set timeout (in milliseconds) var t = setTimeout("document.myform.submit();", 1000);
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:
Gambar 7. Halaman Speedcash Payment Interface Toolbar.
Silakan pilih cara pembayaran yang Anda inginkan dari berbagai pilihan yang diberikan oleh SPI SpeedCash. Contoh (menggunakan layanan Mandiri): - Konfirmasi produk yang akan dibayar
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
17
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
Gambar 8. Halaman Speedcash Payment Interface konfirmasi produk.
-
Konfirmasi bahwa pembayaran sedang diproses
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
18
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
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: Nama
Jenis
Keterangan
reff_id
String (10)
Id referensi yang di peroleh dari server Speedcash
order_id
String (16)
Sesuai variabel “spi_merchant_transaction_reff” yang anda kirim
request_key
String (20)
Sesuai dengan varaibel spi_request_key yang anda kirim
response_code
String (5)
Kode respon hasil transaksi pembayaran. 00 : Transaksi Sukses 80 : Salah Currency 33 : Database Trouble 31 : Gagal Catat Transaksi
response_desc
Text
Keterangan / deskripsi dari variabel response_code. 00 : Transaksi Sukses 80 : Salah Currency 33 : Database Trouble 31 : Gagal Catat Transaksi
additional_datas
JSON
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”)
spi_expedition_price
Integer,
Harga pengiriman barang / produk.
spi_expedition_type
String(50)
Tipe pengiriman barang / produk.
spi_expedition_name
String (50)
Nama pengiriman barang / produk
spi_seller_zipcode
Integer(5)
Kode pos penjual.
api_version
String(5)
Versi api SPI SpeedCash
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
19
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
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
"
".$reff_id; "
".$response_code; "
".$response_desc; "
".$order_id; "
".$request_key; "
".decrypt($additional_datas, $order_id); "
".$spi_expedition_price; "
".$spi_expedition_type; "
".$spi_expedition_name; "
".$spi_seller_zipcode; "
".$api_version;
/** / Fungsi dekripsi */ function decrypt($text, $order_id) { global $key;
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
20
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
$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. ".$reff_id; echo "
".$response_code; echo "
".$response_desc; echo "
".$order_id; echo "
".$request_key; /* token / order id yg digunakan untuk dekripsi data adalah parameter spi_merchant_transaction_reff(16 digit) saat rekues */ echo "
".decrypt($additional_datas, $order_id); /* fungsi dekripsi menggunakan PHPCrypt */ function decrypt_phpCrypt($encrypted, $token){ $crypt = new PHP_Crypt($token, PHP_Crypt::CIPHER_RIJNDAEL_256, PHP_Crypt::MODE_ECB); return $crypt->decrypt(base64_decode($encrypted)); } ?>
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.
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
21
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
Nama
Jenis
Keterangan
tanggal
Date (yyyy-MM-dd), mandatory
Tanggal transaksi yang diinginkan, dalam format ”YYYY-mm-dd”.
private_key
String (32), mandatory
Berisi private_key1 yang diperoleh dari hasil proses pendaftaran webstore merchant
private_key2
String(32), mandatory
Berisi private_key2 yang diperoleh dari hasil proses pendaftaran webstore merchant
Contoh data Request { "tanggal":"2014-08-30", "private_key":"0bd110fe579789dac348709f47187b45", "private_key2":"e63b3b8596a42e194130488e016c1d0e" }
Contoh kode API Client (PHP) $value) { if($key != ""){ $data .= $data == "" ? "" : "&"; $data .= urlencode(urldecode($key)) ."=". urlencode($value); } } } return $data; } /** / Fungsi pengambil token otentikasi */
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
22
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
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);
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
23
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
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 = "
NO | REFF ID | ORDER ID | TRANSACTION DATE | KETERANGAN |
"; 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.
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
24
Panduan Integrasi Webstore ke SpeedCash via API Panduan dan Spesifikasi Teknis
Nama
Jenis
Keterangan
id_transaksi
String(16)
Diperoleh dari server Speedcash yang merupakan id_transaksi pembayaran.
reff_id
String(16)
Diperoleh dari parameter “spi_merchant_transaction_reff” yang dikirim oleh merchant saat request pembayaran
time_request
date (yyyy-MM-dd HH:mm:ss)
Tanggal transaksi pembayaran
response_code
String(5)
Kode response hasil transaksi pembayaran
keterangan
Text
Keterangan hasil transaksi pembayaran
api_version
String(5)
Versi API SpeedCash
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.
SpeedCash, Ecommerce Solution, PT. Bimasakti Multi Sinergi, 2014
25