PENGENALAN
Dokumen ini mengandungi perihalan fungsi dan bahagian tertentu API XML FasaPay. API XML membolehkan Anda memproses penghantaran dan penerimaan pembayaran secara automatik. Dapatkan maklumat transaksi dan senarai rekod transaksi yang telah dibuat melalui FasaPay. Perkhidmatan ini bertujuan untuk semua tapak yang memilih FasaPay sebagai pilihan pembayaran atau semua jenis aktiviti perniagaan yang memerlukan pemindahan antara akaun elektronik melalui akaun FasaPay.
SIAPA YANG MEMERLUKAN DOKUMEN INI
Dokumen ini diperlukan untuk semua pembangun yang bekerja dalam bidang pengaturcaraan yang ingin menyepadukan perkhidmatan pembayaran FasaPay di tapak web mereka. Untuk melaksanakan API XML dengan betul, Anda sepatutnya sudah memahami atau mempunyai pengalaman dalam bidang berikut:
- Menyediakan data dan menghantar permintaan ke pelayan web
- Terima dan analisis respons daripada pelayan web
- Berfungsi dengan protokol HTTPS
- Mempunyai pengetahuan tentang XML dan boleh menggunakan HASH
MAKLUMAT ASAS TENTANG API XML
XML API ialah koleksi arahan, yang digunakan sebagai perantara antara FasaPay dan tapak web lain. Format dan struktur data API XML dibangunkan daripada standard XML-1.0
CARA KERJA XML API
API XML ialah sistem yang menghantar dan menerima permintaan maklumat. Sistem ini akan memproses
permintaan mengikut arahan kemudian akan menggabungkan laporan data yang diperlukan dan
menghantarnya semula kepada penghantar permintaan.
Setiap permintaan terdiri daripada arahan tertentu yang kemudiannya akan ditafsirkan (mentafsir)
oleh API dan kemudian mengarahkan pelayan untuk mengikuti arahan ini. Selepas setiap arahan dilaksanakan,
pelayan akan bertindak balas dengan keputusan yang telah dilaksanakan atau dengan mesej ralat
yang menerangkan mengapa ralat itu berlaku.
Setiap permintaan dan respons mesti diatur sedemikian rupa sehingga ia mengikut format yang telah
ditetapkan supaya ia akan membentuk data khusus dan boleh dibaca oleh API XML. Sesetengah permintaan
akan menghasilkan lebih daripada satu arahan dan/atau lebih daripada satu respons. Berikut ialah
beberapa langkah untuk menjadikan API XML berjalan dengan lancar.
- Pengumpulan permintaan data
- Pembentukan XML dengan format yang betul
- Membuat HTTP GET atau POST Request berdasarkan XML yang disediakan.
- Menghantar permintaan HTTP GET atau POST ke Pelayan FasaPay melalui HTTPS
- Menunggu jawapan daripada pelayan
- Menganalisis dan memproses data respons yang dihantar oleh pelayan FasaPay
PERSEDIAAN
Sebelum mula menggunakan XMLAPI, Anda perlu mengikuti langkah-langkah di bawah:
- Anda perlu membuat API_KEY dalam FasaPay:
- Log masuk ke FasaPay
- Di <<MEMBER AREA>> terdapat menu Akses Akaunt (API) > API Akaun
- Klik tambah API
- Masukkan Nama API dan Kata Rahsia API kemudian klik buat API
- Anda akan mendapat API_KEY, api_key ini akan digunakan sebagai pengenalan untuk permintaan API XML.
Kata rahsia akan digunakan sebagai sebahagian daripada penjanaan token untuk proses pengesahan.
OPERASI API XML
XML API menyokong beberapa pilihan operasi, iaitu seperti berikut:
- Transfer. Membolehkan Anda memindahkan dana dari satu akaun ke akaun yang lain. Dengan arahan ini Anda boleh memindahkan mana-mana mata wang yang tersedia di FasaPay. Pilihan ini juga membolehkan Anda melakukan pemindahan besar-besaran.
- History. Pilihan ini membolehkan Anda mendapatkan rekod transaksi yang berlaku dalam akaun FasaPay Anda. Pilihan ini menyokong banyak parameter tambahan untuk menapis data yang Anda ingin dapatkan seperti tarikh, mata wang, akaun destinasi dan sebagainya.
- Detail. Pilihan ini membolehkan Anda mendapatkan maklumat terperinci tentang transaksi. Dalam satu permintaan, Anda boleh memasukkan lebih daripada satu pilihan ini untuk mendapatkan lebih daripada satu maklumat transaksi.
- Balance. Pilihan ini membolehkan Anda mengetahui baki dalam akaun FasaPay Anda.
- Account. Pilihan ini membolehkan Anda menyemak sama ada nombor akaun dalam FasaPay atau tidak.
AUTHENTICATION
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
- date = 20 July 2011, 15:30
Maka akan menghasilkan
11123548cd3a5e5613325132112becf:kata rahasia:2011072015Dan setelah di hash akan menjadi (ini token Anda)
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 FasaPa 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 |
|
|
|
KOD SALAH
Kod Ralat Utama
KOD SALAH | MESEJ | BUTIRAN | MENETAPKAN |
---|---|---|---|
40000 | NOT VALID XML REQUEST | XML yang dihantar tidak sah, rosak atau mempunyai format yang salah. | Semak semula XML adakah terdapat teg XML yang tidak ditutup, aksara istimewa yang salah, dsb. |
40100 | UNAUTHORIZED | Keizinan gagal. |
Ralat dalam teg auth. Seperti api_key yang salah atau token yang salah. |
40600 | NOT ACCEPTABLE TRANSFER | Terdapat ralat dalam operasi pemindahan. | Terdapat ralat dalam operasi pemindahan. seperti baki tidak mencukupi, jumlah yang banyak, akaun sasaran tidak sah, dsb. |
40700 | DETAIL REQUEST ERROR | Terdapat ralat dalam operasi terperinci. | Anda telah memasukkan nombor kelompok yang tidak sah atau tidak wujud. |
40800 | HISTORY REQUEST ERROR | Terdapat ralat dalam operasi sejarah. | Semak kod anda untuk nilai tidak sah. seperti format tarikh tidak sah, nilai halaman tidak sah, dsb. |
40900 | BALANCE REQUEST ERROR | Terdapat ralat dalam operasi imbangan. | Anda telah memasukkan kod mata wang yang tidak sah, tidak wujud atau dilumpuhkan. |
41000 | ACCOUNT REQUEST ERROR | Terdapat ralat dalam pengendalian akaun. | Anda telah memasukkan Nombor Akaun FasaPay yang tidak sah, tidak wujud atau melumpuhkan. |
Kod Ralat Sekunder
KOD EROR | MESSEJ | BUTIRAN | MENETAPKAN |
---|---|---|---|
40101 | WRONG API_KEY | API_KEY tidak menemuinya pangkalan data. | Semak semula api_key Anda dan padankannya dengan api_key yang Anda buat dalam akaun FasaPay Anda. |
40102 | WRONG API_SECRET | API_SECRET salah. | Semak semula api_secret Anda dan padankan dengan api_secret yang Anda buat dalam akaun FasaPay Anda. |
40103 | WRONG TOKEN | TOKEN salah. | Semak semula token dan cincang Anda. Pastikan Anda menggunakan SHA256 dan menggunakan rentetan yang betul. |
40104 | WRONG API_SECRETWORD | API_SECRETWORD salah. | Semak semula api_secret_word Anda dan padankannya dengan api_secret yang Anda buat dalam akaun FasaPay Anda. |
40105 | UNAUTHORIZED IP | IP Anda disenaraikan dalam senarai hitam atau tidak disenaraikan dalam senarai putih. | Semak tetapan Senarai Hitam/Putih API Anda. |
40106 | UNAUTHORIZED TIME | Anda menggunakan IP pada masa senarai hitam atau tidak dalam masa senarai putih. | Semak tetapan Senarai Hitam/Putih API Anda untuk masa penggunaan yang betul. |
40107 | UNAUTHORIZED COMMAND | Perintah Operasi disenarai hitam atau tidak dalam senarai putih. | Semak tetapan Senarai Hitam/Putih API Anda. |
40108 | UNAUTHORIZED METHOD | Kaedah yang digunakan untuk mengakses API adalah tersenarai hitam atau tidak dalam senarai putih. | Semak tetapan Senarai Hitam/Putih API Anda. |
40601 | INVALID OR NON EXISTENCE DESTINATION ACCOUNT | Akaun Sasaran FasaPay tidak wujud atau tidak betul. | Semak semula anda <to></to> dalam teg <transfer>. Dan pastikan ia menunjuk ke Akaun FasaPay yang betul. |
40602 | NOT ENOUGH BALANCE | Baki tidak mencukupi untuk meneruskan operasi. | Tingkatkan baki Anda. Seperti menggunakan TOPUP. |
40603 | AMOUNT TO LARGE | Jumlahnya lebih besar daripada yang dibenarkan oleh FasaPay. | Kurangkan jumlah pemindahan Anda. |
40604 | AMOUNT TO SMALL | Jumlahnya lebih kecil daripada yang dibenarkan oleh FasaPay. | Tingkatkan jumlah pemindahan Anda. |
40605 | INVALID OR NON EXISTENCE SOURCE CURRENCY | Mata wang itu sama ada tidak aktif atau nilai tidak sah. | Semak teg <currency> ntuk format mata wang tidak sah. Atau semak akaun Anda untuk mata wang yang dilumpuhkan. |
40701 | TRANSACTION NOT FOUND | Nombor kelompok yang dimasukkan tiada dalam pangkalan data FasaPay. | Pastikan Anda memasukkan nombor kelompok yang sah. |
40801 | WRONG OR INACTIVE CURRENCY | Mata wang itu sama ada tidak aktif atau nilai tidak sah. | Semak teg <currency> untuk format mata wang tidak sah. Atau semak akaun anda untuk mata wang yang dilumpuhkan. |
40802 | INVALID DATE FORMAT (yyyy-mm-dd) | Invalid <start_date> Format. | Semak <start_date> Anda untuk format tarikh tidak sah. |
40803 | INVALID DATE FORMAT (yyyy-mm-dd) | Invalid <end_date> Format. | Semak <end_date> Anda untuk format tarikh yang tidak sah. |
40804 | INVALID TYPE VALUE | Invalid <type> value | Semak <type> Anda untuk nilai tidak sah. Pastikan ia salah satu nilai yang dibenarkan. |
40805 | INVALID ORDER_BY VALUE | Invalid <order_by> value | Semak <order_by> Anda untuk nilai tidak sah. Pastikan ia salah satu nilai yang dibenarkan. |
40806 | INVALID ORDER VALUE | Invalid <order> value | Semak <order> Anda untuk nilai tidak sah. Pastikan ia salah satu nilai yang dibenarkan. |
40807 | INVALID PAGE VALUE | Invalid <page> value | Semak <page> Anda untuk nilai tidak sah. Pastikan ia salah satu nilai yang dibenarkan. |
40808 | INVALID PAGE_SIZE VALUE | Invalid <page_size> value | Semak <page_size> Anda untuk nilai tidak sah. Pastikan ia salah satu nilai yang dibenarkan. |
40910 | REACH MAXIMUM ALLOWED BALANCE REQUEST BATCH COUNT | Telah mencapai kiraan permintaan kelompok maksimum yang dibenarkan. | Kurangkan jumlah permintaan kelompok. |
40901 | WRONG OR INACTIVE CURRENCY | Mata wang itu sama ada tidak aktif atau nilai tidak sah. | Format mata wang tidak sah. Atau semak akaun anda untuk mata wang yang dilumpuhkan. |
41010 | REACH MAXIMUM ALLOWED ACCOUNT REQUEST BATCH COUNT | Telah mencapai kiraan permintaan kelompok maksimum yang dibenarkan. | Kurangkan jumlah permintaan kelompok. |
41001 | ACCOUNT NOT FOUND | Nombor Akaun tidak sah atau nombor akaun yang Diminta belum lagi didaftarkan atau dilumpuhkan oleh Pentadbir. |
XML API Operations
URL XML API
Semua permintaan API XML dihantar ke URL berikut:
https://api.fasapay.com/
atau
https://www.fasapay.com/xml
Struktur Permintaan Umum
Berikut ialah templat Permintaan XML asas kepada pelayan API XML.
Semua operasi mempunyai struktur yang sama.
Bermula dengan struktur asas fasa_request, kemudian blok auth dan kemudian permintaan data
<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 Response Umum
Berikut ialah templat Respons XML asas daripada pelayan API XML.
Bermula dengan struktur asas 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 ralat berlaku semasa melaksanakan operasi ia akan menghasilkan respons ralat dengan format 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 bahawa ralat hanya akan membatalkan operasi yang mempunyai ralat, jadi jika dalam
satu permintaan terdapat lebih daripada satu operasi dan terdapat ralat, hanya arahan yang mempunyai
ralat akan dibatalkan tetapi arahan yang tidak mempunyai ralat masih akan dilaksanakan.
-
TRANSFER REQUEST
REQUEST URL :
https://api.fasapay.com/?req=requestbody
atau
https://www.fasapay.com/xml?req=requestbody
Request transfer digunakan jika anda ingin membuat pemindahan.
Data berikut diperlukan untuk request transfer:
-
required to, ialah nombor akaun fasapay destinasi.
format : FPnnnnn
contoh : FP123456 -
required amount, ialah jumlah yang anda ingin pindahkan dalam bentuk nombor dan menggunakan noktah untuk memisahkan perpuluhan.
format : float
contoh : 100000.10 -
required currency, ialah mata wang yang digunakan untuk memindahkan dana.
format : string (IDR | USD)
contoh : IDR -
optional fee_mode, ialah mod pengecasan yuran. lalai kepada FiR.
format : string (FiR | FiS)
contoh : FiR -
optional note, ialah rekod yang anda ingin masukkan dalam urus niaga.
format : string max 255 character
contoh : Refund pembelian A -
optional id, id pemindahan untuk penanda pemindahan.
format : string max 50 character
contoh : TR1111 -
optional ref, Kod Rujukan yang boleh digunakan oleh peniaga untuk menandakan transaksi.
format : string max 50 character
contoh : ORDER12345
Berikut ialah format xml untuk transfer request:
<transfer id="abc">
<to>TARGET ACCOUNT</to>
<amount>AMOUNT TO TRANSFER</amount>
<currency>CURRENCY USED</currency>
<fee_mode>FiS</fee_mode>
<note>TRANSFER NOTE</note>
</transfer>
FORMAT CONTOH TRANSFER REQUEST YANG SAH
<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>
<note>standart operation</note>
</transfer>
</fasa_request>
FORMAT CONTOH BATCH TRANSFER REQUEST YANG SAH
<fasa_request id="1234567">
<auth><!-- authentication tag. required on every 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 AND RESPONSE
FasaPay akan bertindak balas menggunakan tag <fasa_response>
CONTOH RESPON TRANSFER RESPONSE
<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.0</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 RALAT
<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, ialah nombor akaun fasapay destinasi.
-
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 FasaPay.
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 tarikh mula yang diingini.
format : YYYY-mm-dd
contoh : 2011-03-01 - optional end_date, untuk menentukan tarikh tamat yang diingini.
format : YYYY-mm-dd
contoh : 2011-03-05 2011-03-30 - optional type, untuk menentukan jenis transaksi.
format : string transfer|topup|redeem|exchange|receive
contoh : transfer - optional order_by, untuk menentukan pengisihan (pengisihan).
format : string date|amount|to|from|currency|bank
contoh : date - optional order, untuk menentukan jenis isihan.
format : string ASC|DESC
contoh : asc - optional page, untuk mendapatkan halaman tertentu daripada rekod transaksi yang mempunyai lebih daripada 1 halaman.
format : integer
contoh : 1 - optional page_size, untuk menentukan bilangan transaksi yang muncul dalam 1 halaman.
format : integer, max 20
contoh : 20
Berikut ialah format xml asas untuk history request :
<history>
... parameters ...
</history>CONTOH FORMAT HISTORY REQUEST YANG SAH
<fasa_request id="1234567">
<auth><!-- authentication tag. required on every request -->
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<history>
</history>
</fasa_request>CONTOH FORMAT HISTORY REQUEST YANG SAH DENGAN PARAMETERNYA
<fasa_request id="1234567">
<auth><!-- authentication tag. required on every 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 tarikh mula yang diingini.
-
DETAIL REQUEST
REQUEST URL :https://api.fasapay.com/?req=requestbody
atau
https://www.fasapay.com/xml?req=requestbody
Detail-Request digunakan jika anda ingin mendapatkan data transaksi.
Detail-Request hanya memerlukan BATCHNUMBER transaksi yang anda mahu lihat.Detail-Request juga boleh menggunakan parameter berikut untuk mencari transaksi tertentu:
- ref, parameter REF digunakan untuk mencari data daripada fp_merchant_ref yang disimpan oleh FasaPay apabila transaksi menggunakan SCI.
- note, parameter NOTE digunakan untuk mencari data daripada lajur perihalan transaksi. tetapi hanya transaksi terkini dipaparkan.
Berikut ialah format xml untuk detail request :
<detail>TR2012092712345</detail>
<detail><ref>BL12345</ref></detail>
<detail><note>Pembayaran</note></detail>
FORMAT CONTOH DETAIL REQUEST YANG SAH
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<detail>TR2012092712345</detail>
</fasa_request>
FORMAT CONTOH DETAIL REQUEST BATCH YANG SAH
<fasa_request id="1234567">
<auth><!-- authentication tag. required on every 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>
RALAT DAN RESPONS
FasaPay akan bertindak balas menggunakan teg <fasa_response>
CONTOH DETAIL RESPONSE
<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 ERROR RESPONSE
<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 jika anda ingin mendapatkan jumlah baki yang anda miliki.
Balance request hanya memerlukan kod mata wang yang ingin anda lihat. (IDR, USD)
Berikut ialah format xml asas untuk balance request :
<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>
FORMAT CONTOH BALANCE REQUEST BATCH YANG SAH
<fasa_request id="1234567">
<auth><!-- authentication tag. required on every request -->
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<balance>IDR</balance>
<balance>USD</balance> </fasa_request>
RALAT DAN RESPON
FasaPay akan bertindak balas menggunakan teg <fasa_response>
CONTOH BALANCE RESPONSE
<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 jika anda ingin mendapatkan maklumat akaun pengguna FasaPay.
Account request hanya membutuhkan nomor akun FasaPay yang ingin dilihat.
Berikut ialah format xml untuk account request :
<account>FP00001</account>
FORMAT CONTOH PERMINTAAN AKAUN SAH
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<account>FP00001</account>
</fasa_request>
FORMAT CONTOH ACCOUNT REQUEST BATCH SAH
<fasa_request id="1234567">
<auth><!-- authentication tag. required on every request -->
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<account>FP00001</account>
<account>FP00002</account> </fasa_request>
RALAT DAN RESPONS
FasaPay akan bertindak balas menggunakan teg <fasa_response>
CONTOH ACCOUNT RESPONSE
<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 ERROR RESPONSE
<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>
Coretan Fungsi PHP API XML
CREATE TOKEN
Fungsi ini digunakan untuk menjana 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 teg pengesahan
/** * 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 teg pengesahan
/** * 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 mencipta dokumen permintaan xml yang kemudiannya akan dihantar ke pelayan API XML
/** * 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 menghantar permintaan xml ke pelayan API XML dan mendapatkan respons xml. Fungsi ini akan mengembalikan respons daripada Pelayan API XML FasaPay.
/**
* 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;
}