PENDAHULUAN
Dokumen ini berisi mengenai deskripsi dari fungsi-fungsi dan bagian tertenu dari Sabi XML API. XML API memungkinkan Anda untuk memproses pengiriman dan penerimaan pembayaran secara otomatis. Mendapatkan Informasi transaksi dan daftar catatan transaksi yang telah dilakukan melalui Sabi. Layanan ini diperuntukkan bagi semua situs yang memilih Sabi sebagai salah satu pilihan pembayaran atau segala macam kegiatan bisnis yang membutuhkan transfer antar rekening elektronik melalui akun Sabi.
SIAPA SAJA YANG MEMBUTUHKAN DOKUMEN INI
Dokumen ini diperlukan untuk semua developer yang bekerja pada bidang pemprograman yang ingin menintegrasikan layanan pembayaran Sabi pada website mereka. Agar dapat mengimplementasikan XML API dengan baik sebaiknya Anda sudah paham atau memiliki pengalaman di beberapa hal berikut :
- Mempersiapkan data dan pengiriman request ke webserver
- Menerima dan menganalisa responds dari webserver
- Bekerja dengan HTTPS protokol
- Memiliki pengetahuan tentang XML dan mampu menggunakan HASH
INFORMASI MENDASAR MENGENAI XML API
XML API merupakan kumpulan perintah, yang digunakan sebagai perantara antara Sabi dan sites web yang lain. Format dan struktur data dari XML API dikembangkan dari standar XML-1.0
CARA KERJA XML API
XML API merupakan sistem yang mengirim dan menerima request informasi. Sistem ini akan memproses permintaan
tersebut sesuai dengan perintah kemudian akan menggabungkan laporan data yang dibutuhkan dan mengirimnya
kembali ke pengirim request.
Setiap request terdiri dari perintah tertentu yang kemudian akan ditafsirkan (interprets) oleh API dan
kemudian memerintah server untuk mengikuti instruksi tersebut. Setelah setiap instruksi dilaksanakan maka
server akan merespon dengan hasil yang sudah dilaksanakan atau dengan pesan error yang menjelaskan kenapa
error terjadi.
Setiap request dan response harus diatur sedemikian rupa mengikuti format yang sudah ditentukan sehingga
akan membentuk data yang spesifik dan dapat dibaca oleh XML API. Beberapa request akan menghasilkan lebih
dari satu perintah dan atau lebih dari satu response. Berikut adalah beberapa langkah agar XML API dapat
berjalan dengan lancar.
- Pengumpulan Data request
- Pembentukan XML dengan format yang benar
- Pembuatan HTTP GET atau POST Request berdasarkan XML yang telah dipersiapkan.
- Pengiriman HTTP GET atau POST request ke Sabi Server melalui HTTPS
- Menunggu response dari server
- Menganalisan dan mengolah data response yang dikirim oleh server Sabi
PERSIAPAN
Sebelum memulai menggunakan XMLAPI, Anda perlu mengikuti langkah-langkah di bawah ini:
- Anda harus membuat API_KEY di Sabi:
- Login ke Sabi
- Di <<MEMBER AREA>> ada menu SCI > API
- Klik tambah API
- Masukan API Name dan API Secretword lalu klik buat API
- Anda akan mendapatkan API_KEY, api_key inilah yang akan digunakan sebagai identifikasi request XML API.
Secretword akan digunakan sebagai bagian dari pembuatan token untuk proses authentikasi.
PENGOPERASIAN XML API
XML API mendukung beberapa pilihan pengoperasian yaitu sebagai berikut :
- Transfer. Memungkinkan Anda untuk mentransfer dana dari satu akun ke akun yang lain. Dengan perintah ini Anda dapat mentransfer salah satu mata uang yang tersedia di Sabi. Opsi ini juga memungkinkan Anda untuk melakukan mass transfer.
- History. Opsi ini memungkinkan Anda untuk mendapatkan catatan transaksi yang terjadi di akun Sabi Anda. Opsi ini mendukung banyak parameter tambahan untuk memfilter data yang ingin Anda dapatkan seperti tanggal, mata uang, rekening tujuan, dan sebagainya.
- Detail. Opsi ini memungkinkan Anda untuk mendapatkan informasi detail dari sebuah transaksi. Dalam satu request Anda dapat mencantumkan lebih dari satu opsi ini untuk mendapatkan lebih dari informasi transaksi.
- Balance. Opsi ini memungkinkan Anda untuk mengetahui balance saldo di akun Sabi Anda
- Account. Opsi ini memungkinkan Anda untuk melakukan check apakah nomor Akun tersebut ada di Sabi atau tidak.
AUTHENTIKASI
XML dokumen harus selalu berisi informasi authentikasi dari user. Informasi ini digunakan untuk mengidentifikasi user. Berikut adalah data yang harus selalu dikirim dalam setiap request XML-API
- API_KEY, Anda akan mendapatkan api_key setelah membuat API.
api_key ini digunakan untuk mengidentifikasi user. - TOKEN, token adalah sebuah hasil HASH dari rangkaian api_secretword , api_key dan tanggal UTC.
PEMBUATAN AUTHENTIKASI TOKEN
Berikut adalah cara untuk membuat TOKEN
- Rangkai data sebagai berikut
API_KEY:API_SECRETWORD:DATE UTC in YYYYMMDDHH
YYYY = 4 digit Tahun
MM = 2 digit Bulan
DD = 2 digit Hari
HH = 2 digit Jam (dalam 24 jam)
- Kemudian di HASH menggunakan SHA256
Contoh :
- api_key = 11123548cd3a5e5613325132112becfMaka akan menghasilkan
- api_secretword = kata rahasia
- tanggal = 20 Juli 2011, jam 15:30
11123548cd3a5e5613325132112becf:kata rahasia:2011072015Dan setelah di hash akan menjadi
e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b
REQUEST AND RESPONSE IDENTIFICATION
XML API membutuhkan parameter identifikasi tambahan agar response dari setiap request dapat di jalankan
secara akurat. Hal ini menjamin bahwa request yang di kirim dapat dijalankan dengan benar oleh sistem.
Parameter tambahan ini adalah berupa ID. ID dapat berisikan karakter apa saja namun sebaiknya selalu unik.
Response dari server nanti juga akan menambahkan ID tersebut dalam attributenya. Sehingga user dapat
mencocokan ID dari request dengan ID dari response. Apabila ID tidak sesuai maka Anda telah menerima data
yang salah atau terjadi kesalahan dengan sistem. Parameter ID juga digunakan untuk mencegah adanya
pembayaran ganda melalui API.
Setelah request transfer di kirim ke server, server kemudian akan melakukan pencarian sesuai akun ID dan
apabila tidak di temukan kesamaan atau error yang lainnya maka request akan segera diproses. Jika ditemukan
ID yang sama maka server kemudian akan membandingkan jumlah nilai mata uang dan data-data lainnya. Apabila
ditemukan kesamaan maka request akan di batalkan oleh server. Server akan mengirimkan response sebagai
berikut ke user sebagai bentuk pemberitahuan akan adanya error dalam transaksi XML-API.
<fasa_response id="1107210001" date_time="2011-08-01T14:15:00+07:00">
<errors id="tr-td-1" mode="transfer" code="40109">
<data>
<attribute>duplication_detected</attribute>
<message>DUPLICATION DATA DETECTED</message>
</data>
</errors>
</fasa_response>
FORMAT DATA
Tabel ini berisi jenis dan format yang digunakan oleh Sabi XML API
JENIS DATA | FORMAT |
CONTOH |
---|---|---|
ID |
Baris teks hingga 20 karakter |
id1234567890, 20110720, abcdefg |
API_KEY |
32 karakter/digit |
1d719cf2f0888c8fbfe41933f884c955 |
TOKEN |
64 karakter/digit |
e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b |
Amount |
FLOAT hingga 4 digit di belakang koma. Menggunakan titik ( . ) sebagai pemisah desimal. |
10000 |
Currency |
3 karakter mata uang |
IDR, USD, JPY |
Date_time |
ISO 8601 Date Format |
2011-08-01T14:15:00+07:00 |
|
|
|
ERROR CODE
Primary Error Code
ERROR CODE | MESSAGE | DETAIL | FIX |
---|---|---|---|
40000 | NOT VALID XML REQUEST | The sended XML are not valid, broken or has wrong format | Recheck XML is there an unclosed XML tag, wrong spesial character, etc. |
40100 | UNAUTHORIZED | Authorisation failed. |
error in auth tag. like wrong api_key or wrong token |
40600 | NOT ACCEPTABLE TRANSFER | There is an error in the transfer operation | there is an error in the transfer operation. like not enough balance, amount to much, invalid target account, etc. |
40700 | DETAIL REQUEST ERROR | There is an error in the detail operation | you have inputed invalid or nonexistence batch number. |
40800 | HISTORY REQUEST ERROR | There is an error in the history operation | check your code for invalid value. like invalid date format, invalid page value, etc. |
40900 | BALANCE REQUEST ERROR | There is an error in the balance operation | you have inputed invalid, nonexistence, or disabled currency code. |
41000 | ACCOUNT REQUEST ERROR | There is an error in the account operation | you have inputed invalid, nonexistence, or disabled Sabi Account Number. |
Secondary Error Code
ERROR CODE | MESSAGE | DETAIL | FIX |
---|---|---|---|
40101 | WRONG API_KEY | API_KEY not found it the database | Recheck your api_key and match it with the api_key that you create in your Sabi account. |
40102 | WRONG API_SECRET | wrong API_SECRET | Recheck your api_secret and match it with the api_secret that you create in your Sabi account. |
40103 | WRONG TOKEN | wrong TOKEN | Recheck your token and hash. Make sure that you used SHA256 and using correct string. |
40104 | WRONG API_SECRETWORD | wrong API_SECRETWORD | Recheck your api_secret_word and match it with the api_secret that you create in your Sabi account. |
40105 | UNAUTHORIZED IP | Your IP is listed in the black-list or not listed in the white-list. | Check your API Black/White List setting. |
40106 | UNAUTHORIZED TIME | You use the IP on the black listed time or not in the white-listed time. | Check your API Black/White List setting for the correct time of use. |
40107 | UNAUTHORIZED COMMAND | The Operation command is black-listed or not in the white list. | Check your API Black/White List setting. |
40108 | UNAUTHORIZED METHOD | The Method used to access API is black-listed or not in the white list. | Check your API Black/White List setting. |
40601 | INVALID OR NON EXISTENCE DESTINATION ACCOUNT | Target Sabi account are not exists or incorrect | Recheck you r<to></to> in <transfer> tag. and make sure it point to correct Sabi Account |
40602 | NOT ENOUGH BALANCE | Balance are not enought to continue the operation | Increase your balance. like using TOPUP |
40603 | AMOUNT TO LARGE | The amount is larger than what permited by Sabi | Decrease your transfer amount |
40604 | AMOUNT TO SMALL | The amount is smaller than what permited by Sabi | Increase your transfer amount |
40605 | INVALID OR NON EXISTENCE SOURCE CURRENCY | The currency is either not actived or invalid value | Check the <currency> tag for invalid currency format. or check your account for disabled currency |
40701 | TRANSACTION NOT FOUND | The batch number inputed is not in Sabi database | Makesure you inputed valid batch number |
40801 | WRONG OR INACTIVE CURRENCY | The currency is either not actived or invalid value | Check the <currency> tag for invalid currency format. or check your account for disabled currency |
40802 | INVALID DATE FORMAT (yyyy-mm-dd) | Invalid <start_date> Format | Check your <start_date> for invalid date format |
40803 | INVALID DATE FORMAT (yyyy-mm-dd) | Invalid <end_date> Format | Check your <end_date> for invalid date format |
40804 | INVALID TYPE VALUE | Invalid <type> value | Check your <type> for invalid value. make sure it one of the allowed value. |
40805 | INVALID ORDER_BY VALUE | Invalid <order_by> value | Check your <order_by> for invalid value. make sure it one of the allowed value. |
40806 | INVALID ORDER VALUE | Invalid <order> value | Check your <order> for invalid value. make sure it one of the allowed value. |
40807 | INVALID PAGE VALUE | Invalid <page> value | Check your <page> for invalid value. make sure it one of the allowed value. |
40808 | INVALID PAGE_SIZE VALUE | Invalid <page_size> value | Check your <page_size> for invalid value. make sure it one of the allowed value. |
40910 | REACH MAXIMUM ALLOWED BALANCE REQUEST BATCH COUNT | Have reached maximum allowed batch request count. | decrease the amount of batch request. |
40901 | WRONG OR INACTIVE CURRENCY | The currency is either not actived or invalid value | invalid currency format or check your account for disabled currency |
41010 | REACH MAXIMUM ALLOWED ACCOUNT REQUEST BATCH COUNT | Have reached maximum allowed batch request count. | decrease the amount of batch request. |
41001 | ACCOUNT NOT FOUND | Invalid Account number or the Requested account number is not yet registered or disabled by Admin |
XML API Operations
URL XML API
Seluruh Request XML API dikirimkan ke URL berikut :
https://api.fasapay.com/
atau
https://www.fasapay.com/xml
General Request Structure
Berikut adalah templat dasar XML Request ke server XML API.
semua operasi memiliki struktur yang sama.
diawali dengan struktur dasar fasa_request, kemudian blok auth dan baru data request
<fasa_request id="idrequest">
<auth>
<api_key>API KEY</api_key>
<token>AUTHENTICATION TOKEN</token>
</auth>
<operation name> <!-- operation No.1 -->
... operation data ...
</operation name>
...
<operation name> <!-- operation No.N -->
... operation data ...
</operation name>
</fasa_request>
General Response Structure
Berikut adalah template dasar XML Response dari server XML API.diawali dengan struktur dasar fasa_response
<fasa_response id="idrequest">
<operation name> <!-- operation No.1 -->
... status operation data ...
</operation name>
...
<operation name> <!-- operation No.N -->
... status operation data ...
</operation name>
</fasa_response>
Jika terjadi error saat menjalankan sebuah operasi maka akan menghasilkan error response dengan format sebagai berikut.
<errors id="if-operation-has-id" mode="operation name" code="primary-error-code">
<data><!—error data No.1 -->
<code>secondary-error-code</code>
<attribute>affected attribute (attribute which has invalid data)</attribute>
<message>error-message</message>
</data>
....
<data>><!—error data No.N-->
<code>secondary-error-code</code>
<attribute>affected attribute (attribute which has invalid data)</attribute>
<message>error-message</message>
</data>
</errors>
Perlu di ingat bahwa error hanya akan membatalkan operasi yang terdapat error, sehingga jika dalam satu request terdapat lebih dari satu operasi dan ada yang error maka hanya perintah yang error itu saja yang batal di kerjakan namun perintah yangn tidak error akan tetap di kerjakan.
-
TRANSFER REQUEST
REQUEST URL :
https://api.fasapay.com/?req=requestbody
atau
https://www.fasapay.com/xml?req=requestbody
Request transfer digunakan jika Anda ingin melakukan transfer
berikut data yang di butuhkan untuk transfer
-
required to, adalah nomor akun Sabi tujuan
format : FPnnnnn (Dimulai dengan FP dan diikuti 5 digit angka)
contoh : FP123456 -
required amount, adalah jumlah yang ingin di transfer berupa angka dan
menggunakan tanda titik untuk memisahkan desimal
format : float
contoh : 100000.10 -
required currency, adalah kurensi yg di gunakan untuk transfer dana
format : string (IDR | USD)
contoh : IDR -
optional fee_mode, adalah mode pembebanan fee. default ke FiR
format : string (FiR | FiS)
contoh : FiR -
optional note, adalah catatan yg ingin dimasukan ke dalam transaksi
format : string max 255 character
contoh : Refund pembelian A -
optional id, id transfer untuk penanda transfer
format : string max 50 character
contoh : TR1111
berikut adalah format xml untuk request transfer :
<transfer id="abc">
<to>AKUN SABI TUJUAN</to>
<amount>JUMLAH YANG DI TRANSFER</amount>
<currency>KURENSI YANG DIGUNAKAN</currency>
<fee_mode>MODE FEE YANG DIGUNAKAN</fee_mode>
<note>CATATAN Transfer</note>
</transfer>
CONTOH FORMAT VALID TRANSFER REQUEST
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<transfer id="tid">
<to>FP89680</to>
<amount>1000.0</amount>
<currency>idr</currency>
<fee_mode>FiS</fee_mode>
<note>standart operation</note>
</transfer>
</fasa_request>
CONTOH FORMAT VALID BATCH TRANSFER REQUEST
<fasa_request id="1234567">
<auth><!-- authentication tag. harus ada di tiap request -->
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<transfer id="tid-1"> <!-- transfer tag dan ididentifier -->
<to>FP00001</to> <!-- akun tujuan-->
<amount>1000.0</amount> <!-- jumlah yang ditransfer -->
<currency>idr</currency> <!-- kurensi yang digunakan -->
<note>note note</note> <!-- catatan -->
</transfer>
<transfer id="tid-2">
<to>FP00002</to>
<amount>1000.0</amount>
<currency>idr</currency>
<note>no note</note>
</transfer>
<transfer id="tid-3">
<to>FP00003</to>
<amount>1000.0</amount>
<currency>idr</currency>
<note></note>
</transfer>
</fasa_request>
ERROR DAN RESPONSE
Sabi akan meresponds menggunakan tag <fasa_response>
CONTOH RESPONSE TRANSFER
<fasa_response id="1311059195" date_time="2011-07-19T14:06:35+07:00">
<transfer mode="transfer" code="203">
<batchnumber>TR2011071917277</batchnumber>
<date>2011-07-19</date>
<time>14:06:35</time>
<from>FP12049</from>
<to>FP89680</to>
<amount>1000</amount>
<fee>100</fee>
<total>1100.0</total>
<fee_mode>FiS</fee_mode>
<currency>IDR</currency>
<note>standart operation</note>
<status>FINISH</status>
<type>Keluar</type>
<balance>2815832.00</balance>
<method>xml_api</method>
</transfer>
</fasa_response>
CONTOH RESPONSE ERROR
<fasa_response id="1311059195" date_time="2011-07-19T14:06:35+07:00">
<errors id="tid3" mode="transfer" code="40600">
<data>
<code>40605</code>
<attribute>id_kurensi</attribute>
<message>Kurensi tidak boleh kosong.</message>
</data>
<data>
<code>40601</code>
<attribute>to</attribute>
<message>Tidak ada User dengan Nomor Akun FP89681</message>
</data>
<data>
<code>40602</code>
<attribute>jumlah</attribute>
<message>Jumlah melebihi batas yg diijinkan.</message>
</data>
</errors>
</fasa_response>
-
required to, adalah nomor akun Sabi tujuan
HISTORY REQUEST
REQUEST URL :https://api.fasapay.com/?req=requestbody
atau
https://www.fasapay.com/xml?req=requestbody
Request history digunakan untuk mendapatkan catatan transaksi yang telah dilakukan di Sabi.
Request history dapat dilakukan tanpa parameter apapun didalamnya untuk mendapatkan 10 transaksi terakhir.
namun request history mendukung parameter-parameter sebagai berikut untuk mendapatkan catatan transaksi yang lebih spesifik :- optional start_date, untuk menentukan awal tanggal yang diinginkan.
format : YYYY-mm-dd
contoh : 2011-03-01 - optional end_date, untuk menentukan akhir tanggal yang diinginkan.
format : YYYY-mm-dd
contoh : 2011-03-30 - optional type, untuk menentukan tipe transaksi.
format : string transfer|topup|redeem|exchange|receive
contoh : transfer - optional order_by, untuk menentukan penyortiran (sorting)
format : string date|amount|to|from|currency|bank
contoh : date - optional order, untuk menentukan tipe penyortiran
format : string ASC|DESC
contoh : asc - optional page, untuk mendapatkan halaman tertentu dari catatan transaksi yang
memiliki lebih dari 1 halaman
format : integer
contoh : 1 - optional page_size, untuk menentukan banyaknya transaksi yang di munculkan
dalam 1 halaman.
format : integer, max 20
contoh : 20
berikut adalah format dasar xml untuk history request :
<history>
... parameters ...
</history>CONTOH FORMAT DASAR VALID HISTORY REQUEST
<fasa_request id="1234567">
<auth><!-- authentication tag. harus ada di tiap request -->
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<history>
</history>
</fasa_request>CONTOH FORMAT VALID HISTORY REQUEST BESERTA PARAMETERNYA
<fasa_request id="1234567">
<auth><!-- authentication tag. harus ada di tiap request -->
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<history>
<start_date>2011-07-01</start_date>
<end_date>2011-07-09</end_date>
<type>transfer</type>
<order_by>date</order_by>
<order>DESC</order>
<page>3</page>
<page_size>5</page_size>
</history>
</fasa_request>
CONTOH RESPONSE HISTORY
<fasa_response id="1312342474" date_time="2011-08-03T10:34:34+07:00">
<history>
<page>
<total_item>579</total_item>
<page_count>58</page_count>
<current_page>0</current_page>
</page>
<detail>
<batchnumber>TR2011072685119</batchnumber>
<datetime>2011-07-26 15:44:35</datetime>
<type>Keluar</type>
<to>FP10500</to>
<from>FP12049</from>
<amount>11160.000</amount>
<note>Pembayaran untuk pembelian Liberty Reserve</note>
<status>FINISH</status>
</detail>
<detail>
<batchnumber>TR2011072521135</batchnumber>
<datetime>2011-07-25 11:38:43</datetime>
<type>Keluar</type>
<to>FP89680</to>
<from>FP12049</from>
<amount>1000.000</amount>
<note>standart operation</note>
<status>FINISH</status>
</detail>
</history>
</fasa_response>
- optional start_date, untuk menentukan awal tanggal yang diinginkan.
-
DETAIL REQUEST
REQUEST URL :https://api.fasapay.com/?req=requestbody
atau
https://www.fasapay.com/xml?req=requestbody
Request detail digunakan jika Anda ingin mendapatkan data transaksi.
Request detail hanya membutuhkan BATCHNUMBER dari transaki yg ingin dilihat.
Request detail juga dapat menggunakan parameter berikut untuk mencari transaksi tertentu :
- ref, parameter REF digunakan untuk mencari data dari fp_merchant_ref yang disimpan oleh Sabi saat transaksi menggunakan SCI.
- note, parameter NOTE digunakan untuk mencari data dari kolom keterangan transaksi. namun hanya transaksi paling baru saja yang dimunculkan.
berikut adalah format xml untuk request detail :
<detail>TR2012092712345</detail>
<detail><ref>BL12345</ref></detail>
<detail><note>Pembayaran</note></detail>
CONTOH FORMAT VALID DETAIL REQUEST
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<detail>TR2012092712345</detail>
</fasa_request>
CONTOH FORMAT VALID BATCH DETAIL REQUEST
<fasa_request id="1234567">
<auth><!-- authentication tag. harus ada di tiap request -->
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<detail>TU2012092712345</detail>
<detail>TR2012100265432</detail>
<detail>TR2012092791234</detail>
<detail><ref>BL12345</ref></detail>
<detail><note>Pembayaran</note></detail>
</fasa_request>
ERROR DAN RESPONSE
Sabi akan meresponds menggunakan tag <fasa_response>
CONTOH RESPONSE DETAIL
<fasa_response id="1234567" date_time="2013-01-01T10:58:43+07:00">
<detail mode="detail" code="210">
<batchnumber>TR2012092791234</batchnumber>
<date>2012-10-20</date>
<time>10:09:36</time>
<from>FP00001</from>
<to>FP00002</to>
<amount>1000.000</amount>
<total>1100</total>
<currency>IDR</currency>
<note>Payment for something</note>
<status>FINISH</status>
<fee>100.000</fee>
<type>Transfer Out</type>
<method>api_xml</method>
<fee_mod>FiS</fee_mod>
</detail>
</fasa_response>
CONTOH RESPONSE ERROR
<fasa_response id="1234567" date_time="2013-01-01T10:58:43+07:00"> <errors mode="detail" code="40701"> <data> <message>TRANSACTION NOT FOUND</message> <detail>BATCHNUMBER TR2012100291308 NOT FOUND</detail> </data> </errors> </fasa_response>
-
BALANCE REQUEST
REQUEST URL :
https://api.fasapay.com/?req=requestbody
atau
https://www.fasapay.com/xml?req=requestbody
Request balance digunakan jika Anda ingin mendapatkan total balance yang Anda miliki.
Request detail hanya membutuhkan kode kurensi yang ingin dilihat. untuk saat ini kode kurensi yang didukung adalah IDR dan USD
berikut adalah format xml untuk request balance :
<balance>IDR</balance>
CONTOH FORMAT VALID BALANCE REQUEST
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<balance>IDR</balance>
</fasa_request>
CONTOH FORMAT VALID BATCH BALANCE REQUEST
<fasa_request id="1234567">
<auth><!-- authentication tag. harus ada di tiap request -->
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<balance>IDR</balance>
<balance>USD</balance> </fasa_request>
ERROR DAN RESPONSE
Sabi akan meresponds menggunakan tag <fasa_response>
CONTOH RESPONSE BALANCE
<fasa_response id="1234567" date_time="2013-01-01T10:58:43+07:00">
<balance>
<IDR>19092587.45</IDR>
<USD>3987.31</USD>
</balance>
</fasa_response>
CONTOH RESPONSE ERROR
<fasa_response id="1234567" date_time="2013-01-01T10:58:43+07:00">
<errors mode="balance" code="40901">
<data>
<message>WRONG OR INACTIVE CURRENCY</message>
<detail>WRONG OR INACTIVE CURRENCY CHY</detail>
</data>
</errors>
</fasa_response> -
ACCOUNT REQUEST
REQUEST URL :
https://api.fasapay.com/?req=requestbody
atau
https://www.fasapay.com/xml?req=requestbody
Request account digunakan jika Anda ingin mendapatkan informasi akun user Sabi.
Request account hanya membutuhkan nomor akun Sabi yang ingin dilihat.
berikut adalah format xml untuk request account :
<account>FP00001</account>
CONTOH FORMAT VALID ACCOUNT REQUEST
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<account>FP00001</account>
</fasa_request>
CONTOH FORMAT VALID BATCH ACCOUNT REQUEST
<fasa_request id="1234567">
<auth><!-- authentication tag. harus ada di tiap request -->
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<account>FP00001</account>
<account>FP00002</account> </fasa_request>
ERROR DAN RESPONSE
Sabi akan meresponds menggunakan tag <fasa_response>
CONTOH RESPONSE ACCOUNT
<fasa_response id="1234567" date_time="2013-01-01T10:58:43+07:00">
<account>
<fullname>Budiman</fullname>
<account>FP00001</account>
<status>Store</status>
</account>
<account>
<fullname>Ani Permata</fullname>
<account>FP00002</account>
<status>Verified</status>
</account>
</fasa_response>
CONTOH RESPONSE ERROR
<fasa_response id="1234567" date_time="2013-01-01T10:58:43+07:00">
<errors mode="account" code="41001">
<data>
<message>ACCOUNT NOT FOUND</message> <detail>FP ACCOUNT FP12345 NOT FOUND</detail>
</data>
</errors>
</fasa_response>
XML API PHP Function Snippet
CREATE TOKEN
function ini digunakan untuk membuat token
/** * For creating token used to authenticate xml api request * * @param string $api_key 32 character of api_key * @param string $api_secretword secret word used to created xml api * @return string sha256 hashed token **/ function createToken($api_key, $api_secretword){ $str = $api_key.":".$api_secretword.":".gmdate("YmdH"); return hash('sha256',$str); }
BUILD AUTH
function ini digunakan untuk membuat auth tag
/** * for building xml auth xml tag * * @param string $api_key 32 character of api_key * @param string $token token which has created using createToken function * @return string auth xml tag **/ function buildAuth($api_key, $token){ $str = '<auth> <api_key>'.$api_key.'</api_key> <token>'.$token.'</token> </auth>'; return $str; }
BUILD TRANSFER
function ini digunakan untuk membuat auth tag
/** * for building xml transfer tag * * @param string $id transfer identification string * @param string $to destination Sabi account (FP12345) * @param float $amount amount of money to transfer * @param string $currency 3 character of currency used (IDR|USD|JPY) * @param string $note transfer note * @return string xml formated transfer request **/ function buildTransfer($id, $to, $amount, $currency="IDR", $note=""){ $str = '<transfer id="'.$id.'"> <to>'.$to.'</to> <amount>'.$amount.'</amount> <currency>'.$currency.'</currency> <note>'.$note.'</note> </transfer> '; return $str; }
BUILD XML
function ini digunakan untuk membuat xml request document yang nantinya akan dikirim ke server XML API
/** * for building xml request document * * @param string $id request identification string * @param string $auth xml formated auth tag (created with buildAuth) * @param string/array $request xml formated request body (created with buildTransfer,buildHistory,buildDetail,etc) * @return string xml formated request xml document **/ public function buildXml($id, $auth, $request){ $str = ''; $str .= $auth; if(is_array($request)){ foreach($request as $value){ $str .= $value; } } else { $str .= $request; } $str .= ' '; return $str; }
GET RESPONSE
function ini digunakan untuk mengirimkan request xml ke server XML API dan mendapatkan response xml
/**
* sending request xml through curl and returning xml response from xml api
* @param string $xml xml request created using buildXml (or manualy)
* @return string xml formated fasa response
**/
function getResponse($xml)
{
$url = "https://www.fasapay.com/xml/";
$handler = curl_init($url);
curl_setopt($handler, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handler, 115, 1);
// Sending request through post
curl_setopt($handler, CURLOPT_POST, true);
curl_setopt($handler, CURLOPT_POSTFIELDS, 'req='.urlencode($xml));
// Some optimization :)
curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
$content = curl_exec($handler);
curl_close($handler);
return $content;
}