API GUIDE

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 = 11123548cd3a5e5613325132112becf
- api_secretword = kata rahasia
- tanggal = 20 Juli 2011, jam 15:30
Maka akan menghasilkan
11123548cd3a5e5613325132112becf:kata rahasia:2011072015
Dan 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
250.51
3000

Currency

3 karakter mata uang
IDR = Indonesia Rupiah
USD = US Dollar
JPY = Japan Yen

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.

  1. 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>

  2. 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>


  3. 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>
                    
  4. 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>
  5. 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;
}