PENDAHULUAN
Dokumen ini berisi deskripsi semua dan fungsi spesifik dari FasaPay XML API. XML API memungkinkan Anda memproses pengiriman dan penerimaan pembayaran secara otomatis. Mendapatkan informasi transaksi dan riwayat transaksi yang dilakukan. Layanan ini diperlukan untuk semua situs web yang ingin menggunakan FasaPay sebagai salah satu opsi pembayaran dan bisnis yang diharuskan menggunakan transaksi otomatis antar akun FasaPay.
SIAPA SAJA YANG MEMBUTUHKAN DOKUMEN INI
Dokumen ini diperlukan untuk semua pengembang yang mengerjakan antarmuka pemrograman untuk mengintegrasikan FasaPay ke situs web mereka. Untuk menjadi sukses, pengembang akan membutuhkan pengalaman dalam mengikuti:
- Persiapan dan pengiriman permintaan ke server web
- Menerima dan menganalisis informasi yang diterima dari web server
- Bekerja dengan protokol HTTPS
- Memiliki pengetahuan tentang XML dan tahu cara menggunakan operasi HASH.
INFORMASI MENDASAR TENTANG XML API
XML API adalah kumpulan perintah, yang digunakan sebagai perantara antara FasaPay dan situs web lainnya. Format dan struktur data XML API dikembangkan dari standar XML-1.0
BAGAIMANA ITU BEKERJA
XML API adalah sistem yang menerima dan mengirimkan permintaan informasi. Sistem ini
akan memproses permintaan sesuai dengan pesanan kemudian akan menggabungkan data laporan
dan mengirimkannya kembali ke permintaan pengirim.
Setiap permintaan terdiri dari perintah tertentu yang kemudian diinterpretasikan oleh API
dan kemudian memerintahkan server untuk mengikuti instruksi tersebut. Setelah setiap
instruksi dieksekusi, server akan merespon dengan hasil instruksi atau dengan pesan
kesalahan yang menjelaskan mengapa kesalahan terjadi.
Setiap permintaan dan tanggapan diatur dengan format tertentu sehingga akan terbentuk data
yang spesifik dan dapat dibaca oleh XML API. Beberapa permintaan akan menghasilkan lebih
dari satu perintah dan atau lebih dari satu tanggapan. Berikut beberapa langkah agar XML API
dapat berjalan dengan lancar.
- Mengumpulkan dan menyiapkan Data request
- Membuat format XML yang benar
- Membuat HTTP GET atau POST Request berdasarkan XML yang telah disiapkan
- Mengirim HTTP GET atau POST request ke server FasaPay melalui protokol HTTPS
- Menunggu respon dari server
- Menganalisa dan mengolah data respon yang dikirimkan oleh server FasaPay
PERSIAPAN
Sebelum memulai menggunakan XML API, Anda perlu mengikuti langkah-langkah di bawah ini:
- Anda harus membuat API_KEY di FasaPay:
- Login ke FasaPay
- Di <<MEMBER AREA>> pilih Akses Akun (API) > Account API dari menu
- 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 operasi 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 yang didukung oleh FasaPay. Fungsi ini juga memungkinkan anda untuk melakukan banyak transfer (massal).
- History. Memungkinkan Anda menerima riwayat transaksi akun FasaPay Anda. Perintah ini mendukung banyak parameter tambahan untuk memfilter data yang ingin anda dapatkan rentang tanggal, mata uang, jenis transaksi, target akun, dan sebagainya.
- Detail. Memungkinkan anda untuk menerima informasi detail dari transaksi tertentu. Anda dapat menyertakan lebih dari satu perintah ini dalam satu permintaan.
- Balance. Memungkinkan Anda untuk memeriksa saldo akun FasaPay Anda.
- Account. Memungkinkan Anda untuk memeriksa akun FasaPay tertentu, untuk menunjukkan apakah akun tersebut terdaftar atau tidak.
AUTHENTIKASI
Dokumen XML harus selalu berisi informasi authentikasi dari pengguna. Informasi ini digunakan untuk mengidentifikasi pengguna. Setiap permintaan ke server XML-API harus berisi informasi ini
-
API_KEY, Anda akan mendapatkan api_key setelah Anda membuat API.
api_key ini akan digunakan untuk mengidentifikasi pengguna. - TOKEN, token adalah sebuah hasil HASH dari rangkaian api_secretword, api_key dan tanggal UTC.
PEMBUATAN AUTHENTIKASI TOKEN
Berikut adalah cara untuk membuat TOKEN
- Dapatkan dengan menggabungkan data berikut
API_KEY:API_SECRETWORD:DATE UTC di 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 (ini token Anda)
e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b
IDENTIFIKASI REQUEST DAN RESPONSE
XML API membutuhkan parameter identifikasi tambahan agar response dari setiap request dapat
dijalankan secara akurat. Hal ini menjamin bahwa request yang dikirim dapat dijalankan
dengan benar oleh sistem. Parameter tambahan ini adalah berupa ID. ID dapat berisikan
karakter apa saja namun sebaiknya selalu unik.
Respon dari server nanti juga akan menambahkan ID tersebut dalam attributenya. Sehingga
pengguna dapat mencocokkan ID dari request dengan ID dari respon. 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 dikirim ke server, server kemudian akan melakukan pencarian sesuai
akun ID dan apabila tidak ditemukan 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 dibatalkan
oleh server. Server akan mengirimkan respon sebagai berikut ke pengguna 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 FasaPay XML API
JENIS DATA |
FORMAT |
CONTOH |
---|---|---|
ID |
Baris teks, hingga 20 karakter (varchar(20)) |
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 |
Date_time |
ISO 8601 Date Format |
2011-08-01T14:15:00+07:00 |
|
|
|
KODE ERROR
Kode Error Utama
KODE ERROR | PESAN | DETAIL | CARA MEMPERBAIKI |
---|---|---|---|
40000 | NOT VALID XML REQUEST | XML yang dikirim tidak valid, rusak, atau formatnya salah. | Periksa kembali XML apakah ada tag XML yang tidak tertutup, karakter spesial yang salah, dll. |
40100 | UNAUTHORIZED | Otorisasi gagal. |
Kesalahan dalam tag autentikasi. Seperti api_key yang salah atau token yang salah. |
40600 | NOT ACCEPTABLE TRANSFER | Ada kesalahan dalam operasi transfer. |
Ada kesalahan dalam operasi transfer. Seperti saldo tidak cukup, jumlah banyak, akun target tidak valid, dll. |
40700 | DETAIL REQUEST ERROR | Ada kesalahan dalam operasi detail. | Anda telah memasukkan batchnumber yang tidak valid atau tidak ada. |
40800 | HISTORY REQUEST ERROR | Ada kesalahan dalam operasi history. | Periksa kode Anda untuk nilai yang tidak valid. Seperti format tanggal tidak valid, nilai halaman tidak valid, dll. |
40900 | BALANCE REQUEST ERROR | Ada kesalahan dalam operasi balance. | Anda telah memasukkan kode mata uang yang tidak valid, tidak ada, atau dinonaktifkan. |
41000 | ACCOUNT REQUEST ERROR | Ada kesalahan dalam pengoperasian akun. | Anda telah memasukkan Nomor Rekening FasaPay yang tidak valid, tidak ada, atau tidak aktif. |
Kode Error Sekunder
KODE ERROR | PESAN | DETAIL | CARA MEMPERBAIKI |
---|---|---|---|
40101 | WRONG API_KEY | API_KEY tidak menemukannya di database |
Periksa kembali api_key Anda dan cocokkan dengan api_key yang Anda buat di akun FasaPay Anda. |
40102 | WRONG API_SECRET | API_SECRET salah | Periksa kembali api_secret Anda dan cocokkan dengan api_secret yang Anda buat di akun FasaPay Anda. |
40103 | WRONG TOKEN | TOKEN salah |
Periksa kembali token dan hash Anda. Pastikan Anda menggunakan SHA256 dan menggunakan string yang benar. |
40104 | WRONG API_SECRETWORD | API_SECRETWORD salah | Periksa kembali api_secret_word Anda dan cocokkan dengan api_secret yang Anda buat di akun FasaPay Anda. |
40105 | UNAUTHORIZED IP | IP Anda tercantum dalam black-list atau tidak tercantum dalam white-list. | Periksa setelan Black/White List API Anda. |
40106 | UNAUTHORIZED TIME | Anda menggunakan IP pada waktu black-list atau tidak dalam waktu white-list. | Periksa pengaturan Black/White List API Anda untuk waktu penggunaan yang tepat. |
40107 | UNAUTHORIZED COMMAND | Perintah Operasi masuk black-list atau tidak masuk white-list. | Periksa setelan Black/White List API Anda. |
40108 | UNAUTHORIZED METHOD | Metode yang digunakan untuk mengakses API termasuk dalam black-list atau tidak dalam white-list. | Periksa setelan Black/White List API Anda. |
40601 | INVALID OR NON EXISTENCE DESTINATION ACCOUNT | Akun target FasaPay tidak ada atau salah. | Periksa kembali <to></to> Anda di tag <transfer>. Dan pastikan itu mengarah ke Akun FasaPay yang benar. |
40602 | NOT ENOUGH BALANCE | Saldo tidak cukup untuk melanjutkan operasi. | Tingkatkan saldo Anda. Seperti menggunakan TOPUP. |
40603 | AMOUNT TO LARGE | Jumlahnya lebih besar dari yang diizinkan oleh FasaPay. | Kurangi jumlah transfer Anda. |
40604 | AMOUNT TO SMALL | Jumlahnya lebih kecil dari yang diizinkan oleh FasaPay. | Tingkatkan jumlah transfer Anda. |
40605 | INVALID OR NON EXISTENCE SOURCE CURRENCY | Mata uang tidak aktif atau nilainya tidak valid. | Periksa tag <currency> untuk format mata uang yang tidak valid. Atau periksa akun Anda untuk mata uang yang dinonaktifkan |
40701 | TRANSACTION NOT FOUND | Batchnumber yang diinput tidak ada di database FasaPay. | Pastikan Anda memasukkan batchnumber yang valid |
40801 | WRONG OR INACTIVE CURRENCY | Mata uang tidak aktif atau nilainya tidak valid. | Periksa tag <currency> untuk format mata uang yang tidak valid. Atau periksa akun Anda untuk mata uang yang dinonaktifkan. |
40802 | INVALID DATE FORMAT (yyyy-mm-dd) | Format <start_date> tidak valid. | Periksa <start_date> Anda untuk format tanggal yang tidak valid. |
40803 | INVALID DATE FORMAT (yyyy-mm-dd) | Format <end_date> tidak valid. | Periksa <end_date> Anda untuk format tanggal yang tidak valid. |
40804 | INVALID TYPE VALUE | Nilai <type> tidak valid. | Periksa <type> Anda untuk nilai yang tidak valid. Pastikan itu salah satu dari nilai yang diizinkan. |
40805 | INVALID ORDER_BY VALUE | Nilai <order_by> tidak valid | Periksa <order_by> Anda untuk nilai yang tidak valid. Pastikan itu salah satu dari nilai yang diizinkan. |
40806 | INVALID ORDER VALUE | Nilai <order> tidak valid. | Periksa <order> Anda untuk nilai yang tidak valid. Pastikan itu salah satu dari nilai yang diizinkan. |
40807 | INVALID PAGE VALUE | Nilai <page> tidak valid. | Periksa <page> Anda untuk nilai yang tidak valid. Pastikan itu salah satu dari nilai yang diizinkan. |
40808 | INVALID PAGE_SIZE VALUE | Nilai <page_size> tidak valid. | Periksa <page_size> Anda untuk nilai yang tidak valid. Pastikan itu salah satu dari nilai yang diizinkan. |
40910 | REACH MAXIMUM ALLOWED BALANCE REQUEST BATCH COUNT | Telah mencapai jumlah permintaan batch maksimum yang diizinkan. | Mengurangi jumlah permintaan batch. |
40901 | WRONG OR INACTIVE CURRENCY | Mata uang tidak aktif atau nilainya tidak valid. | Format mata uang tidak valid Atau periksa akun Anda untuk mata uang yang dinonaktifkan. |
41010 | REACH MAXIMUM ALLOWED ACCOUNT REQUEST BATCH COUNT | Telah mencapai jumlah permintaan batch maksimum yang diizinkan. | Mengurangi jumlah permintaan batch. |
41001 | ACCOUNT NOT FOUND | Nomor Akun tidak valid atau Nomor Akun yang diminta belum didaftarkan atau dinonaktifkan oleh Admin. |
OPERASI XML API
URL XML API
Setiap Request XML API dikirimkan ke URL berikut :
https://api.fasapay.com/
atau
https://www.fasapay.com/xml
Struktur Request Umum
Berikut adalah template dasar XML Request ke server XML API.
Semua operasi memiliki struktur yang sama.
Diawali dengan struktur dasar fasa_request, kemudian blok autentikasi dan diikuti dengan 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>
Struktur Respon Umum
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 diingat 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 dikerjakan namun perintah
yang tidak error akan tetap dikerjakan.
-
TRANSFER REQUEST
REQUEST URL :
https://api.fasapay.com/?req=requestbody
atau
https://www.fasapay.com/xml?req=requestbody
Request transfer digunakan jika Anda ingin mentransfer dana dari satu akun ke akun lainnya.
Berikut data yang di butuhkan untuk transfer
-
required to, adalah nomor akun FasaPay tujuan
format : FPnnnnn
contoh : FP123456 -
required amount, adalah jumlah dana yang ingin di transfer
berupa angka dan menggunakan tanda titik (.) sebagai pemisah desimal
format : float
contoh : 100000.10 -
required currency, adalah mata uang yang digunakan untuk transfer dana
format : string (IDR | USD)
contoh : IDR -
optional fee_mode, adalah mode pembebanan fee yang digunakan dalam transfer. Default ke FiR
format : string (FiR | FiS)
contoh : FiR -
optional note, adalah catatan yang ingin dimasukan ke dalam transaksi
format : string maksimal 255 karakter
contoh : Transaksi Pengembalian Dana Pembelian A -
optional id, id transfer untuk penanda transfer
format : string maksimal 50 karakter
contoh : TR1111 -
optional ref, Kode Referensi yang dapat digunakan untuk melacak transaksi
format : string maksimal 50 karakter
contoh : ORDER12345
Berikut adalah format XML untuk request transfer :
<transfer id="abc">
<to>AKUN FASAPAY 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 TRANSFER REQUEST YANG VALID
<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 BATCH TRANSFER REQUEST YANG VALID
<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
FasaPay akan merespon 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 FasaPay tujuan
-
HISTORY REQUEST
REQUEST URL :https://api.fasapay.com/?req=requestbody
atau
https://www.fasapay.com/xml?req=requestbody
History Request digunakan untuk mendapatkan riwayat transaksi terbaru di akun FasaPay Anda.
History Request tidak memerlukan parameter apa pun untuk mendapatkan 10 transaksi terakhir.
Namun History Request mendukung parameter-parameter sebagai berikut untuk mendapatkan riwayat 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 order/sort berdasarkan parameter tertentu (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 riwayat transaksi yang memiliki lebih dari 1 halaman
format : integer
contoh : 1 - optional page_size, untuk menentukan berapa banyak transaksi yang dimunculkan dalam 1 halaman.
format : integer, max 20
contoh : 20
Berikut adalah format dasar XML untuk History Request :
<history>
... parameters ...
</history>CONTOH FORMAT DASAR HISTORY REQUEST YANG VALID
<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 HISTORY REQUEST YANG VALID 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
Detail Request digunakan untuk mendapatkan detail informasi transaksi.
Detail Request hanya membutuhkan BATCHNUMBER dari transaki yang ingin dilihat.
Detail Request juga dapat menggunakan parameter berikut untuk mencari transaksi tertentu :
- ref, parameter REF digunakan untuk mencari data dari fp_merchant_ref yang disimpan oleh FasaPay 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 Detail Request :
<detail>TR2012092712345</detail>
<detail><ref>BL12345</ref></detail>
<detail><note>Pembayaran</note></detail>
CONTOH FORMAT DETAIL REQUEST YANG VALID
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<detail>TR2012092712345</detail>
</fasa_request>
CONTOH FORMAT BATCH DETAIL REQUEST YANG VALID
<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
FasaPay akan merespon 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
Balance Request digunakan untuk mendapatkan jumlah saldo di akun Anda.
Balance Request hanya membutuhkan kode mata uang yang ingin dilihat. Untuk saat ini kode kurensi yang didukung adalah IDR dan USD
Berikut adalah format XML untuk Balance Request :
<balance>IDR</balance>
CONTOH FORMAT BALANCE REQUEST YANG VALID
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<balance>IDR</balance>
</fasa_request>
CONTOH FORMAT BATCH BALANCE REQUEST YANG VALID
<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
FasaPay akan merespon 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
Account Request digunakan untuk mendapatkan informasi dari pengguna FasaPay tertentu melalui nomor akun mereka.
Account Request hanya membutuhkan nomor akun FasaPay yang ingin Anda lihat.
Berikut adalah format xml untuk Account Request :
<account>FP00001</account>
CONTOH FORMAT ACCOUNT REQUEST YANG VALID
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<account>FP00001</account>
</fasa_request>
CONTOH FORMAT BATCH ACCOUNT REQUEST YANG VALID
<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
FasaPay akan merespon 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>Standard</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>
Cuplikan Fungsi XML API PHP
CREATE TOKEN
Fungsi 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
Fungsi 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
Fungsi ini digunakan untuk membuat tag xml permintaan transfer
/** * for building xml transfer tag * * @param string $id transfer identification string * @param string $to destination FasaPay 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
Fungsi ini digunakan untuk membuat dokumen permintaan xml 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
Fungsi ini digunakan untuk mengirimkan request xml menggunakan CURL ke FasaPay XML API Server. Fungsi ini akan mengembalikan respon dari FasaPay XML API Server.
/**
* 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;
}