导言
本文档包含来自FasaPay XML API的所有和具体函数的描述。XML API允许你自动处理发送和接收付款。 获取交易信息和交易历史。所有希望使用FasaPay作为支付选项之一的网站以及需要在FasaPay帐户之间使用自动交易的企业都需要此服务。
谁需要这些文件
本文档是所有开发编程接口的开发人员将FasaPay集成到他们的网站所必需的。 要取得成功,开发人员需要以下方面的经验:
- 准备和发送请求到web服务器
- 接收和分析从web服务器接收的信息
- 使用HTTPS协议
- 有XML的知识,知道如何使用哈希运算。
关于XML API的基本信息
XML API是命令的集合,用作FasaPay和其他网站之间的中介。XML API数据格式和结构是从XML-1.0标准发展而来的
它是如何工作的
XML API是一个接收和发送信息请求的系统. 该系统将按照顺序处理请求,然后将报告数据合并并将其发送回发送者的请求。
每个请求都由特定的命令组成,然后由API输入,然后命令服务器遵循这些指令。 在每个指令执行后,服务器将响应指令的结果或错误消息,解释错误发生的原因。
每个请求和响应都以指定的格式排列,以便它将建立特定的数据,并可以通过XML API读取。 一些请求将导致多个命令和或多个响应。 这里有一些步骤,以便XML API可以顺利运行。
- 收集和准备数据请求
- 创建正确的XML格式
- 基于已准备好的XML进行HTTP GET或POST请求
- 通过HTTPS协议向FasaPay服务器发送HTTP GET或POST请求
- 等待服务器的响应
- 分析处理FasaPay服务器发送的响应数据
准备工作
在使用XML API之前,您需要以下步骤:
- 你必须在FasaPay中创建API_KEY:
- 登入FasaPay
- 在 <<MEMBER AREA>> 选择 帐户访问(API) > 菜单中的 帐户API
- 单击添加API
- 输入API名称和API密码,然后单击创建API
- 您将收到API_KEY,此API_KEY将用于标识XML API请求。
Secretword将用作为身份验证过程创建令牌的一部分。
XML API操作
XML API支持以下操作 :
- 转移。 允许您将资金从一个帐户转移到另一个帐户。 使用此命令, 您可以转移FasaPay支持的任何可用货币。 此功能还允许您执行多个(批量)传输。
- 历史。允许您收到您的FasaPay帐户的历史交易. 这个命令有许多额外的参数来过滤响应, 如日期范围,货币,交易类型,帐户目标等。
- 细节。允许您接收特定交易的详细信息. 您可以在单个请求中包含多个此命令。
- 平衡。允许您检查您的FasaPay帐户余额.
- 帐户。允许您检查特定的FasaPay帐户,以表明它是否注册.
身份验证
XML文档必须包含来自用户的身份验证信息。此信息用于识别用户。每个对XML-API服务器的请求都必须包含这些信息。
-
API_KEY,您将在创建API后收到您的api_key。
这些api_key将用于识别用户。 - 令牌,令牌是来自api_secret字,api_key和UTC日期的散列。
创建身份验证令牌
这是您创建令牌的方式
- 通过组合以下数据获取
API_KEY:API_SECRETWORD:YYYYMMDDHH 在 UTC 日期
YYYY = 4位数字年份
MM = 2位数字月份
DD = 2位数日
HH = 2位数小时
- 然后使用SHA256对其进行散列
例子:
- api_key = 11123548cd3a5e5613325132112becf
- api_secretword = kata rahasia
- date = 20 July 2011, 15:30
将创建
11123548cd3a5e5613325132112becf:kata rahasia:2011072015和哈希后(这是你的令牌)
e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b
请求和响应识别
XML API需要额外的标识参数,使每个请求与响应精确匹配成为可能。 这可确保为给定请求接收正确的响应,并防止系统对不正确或方向错误的请求发送响应。
idstring显示标识参数的角色。 它必须呈现在XML请求正文中,由程序或网站设置,并且对帐户唯一。来自服务器的每个响应都将包括在响应正文中获得的参数id。
一旦收到响应,用户的API端应该分析并确认id字符串请求响应。如果stringid不匹配-您收到了不正确的响应或系统出现故障。
id参数还用于防止通过API意外重复付款。
传输请求发送后,服务器通过此API条目对此帐户最近提交的具有相同Id的请求执行搜索。如果找到匹配项,则服务器将取消该请求。
并且服务器将向用户发送以下响应,作为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>
格式数据
此表列出了FasaPay XML API使用的数据类型和格式
数据类型 |
格式 |
例子 |
---|---|---|
ID |
文本行,最长20个字符 (varchar(20)) |
id1234567890, 20110720, abcdefg |
API_KEY |
32个字符长 |
1d719cf2f0888c8fbfe41933f884c955 |
TOKEN |
64 个字符长 |
e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b |
Amount |
分母中最多4位数的分数,点(。)作为分隔符 |
10000 |
Currency |
3个字符长的货币格式 |
IDR, USD |
Date_time |
ISO8601日期格式 |
2011-08-01T14:15:00+07:00 |
|
|
|
错误代码
主要错误代码
错误代码 | 信息 | 细节 | 修复 |
---|---|---|---|
40000 | NOT VALID XML REQUEST | 发送的XML无效、损坏或格式错误 | 重新检查XML是否有未关闭的XML标记,错误的特殊字符等。 |
40100 | UNAUTHORIZED | 授权失败。 |
auth标签中的错误。 像错误的api_key或错误的令牌 |
40600 | NOT ACCEPTABLE TRANSFER | 转移操作出现错误 |
转移操作中存在错误。 像没有足够的余额,金额多,无效的目标帐户等。 |
40700 | DETAIL REQUEST ERROR | 详细操作有错误 | 您输入了无效或不存在的批号。 |
40800 | HISTORY REQUEST ERROR | 历史操作出现错误 | 检查您的代码是否存在无效值。像无效的日期格式,无效的页面值等。 |
40900 | BALANCE REQUEST ERROR | 平衡操作有错误 | 您输入了无效、不存在或禁用的货币代码。 |
41000 | ACCOUNT REQUEST ERROR | 账户操作出现错误 | 您已输入无效、不存在或禁用的FasaPay帐户号码。 |
次要错误代码
错误代码 | 信息 | 细节 | 修复 |
---|---|---|---|
40101 | WRONG API_KEY | API_KEY 没有在数据库中找到它 |
重新检查您的api_key并将其与您在FasaPay帐户中创建的api_key匹配。 |
40102 | WRONG API_SECRET | 錯 API_SECRET | 重新检查您的api_secret并将其与您在FasaPay帐户中创建的api_secret匹配。 |
40103 | WRONG TOKEN | 错误的令牌 |
重新检查您的令牌和哈希。 确保您使用SHA256并使用正确的字符串。 |
40104 | WRONG API_SECRETWORD | 錯 API_SECRETWORD | 重新检查您的api_secret_word并将其与您在FasaPay帐户中创建的api_secret匹配。 |
40105 | UNAUTHORIZED IP | 您的IP被列入黑名单或未列入白名单。 | 检查您的API黑/白名单设置。 |
40106 | UNAUTHORIZED TIME | 您使用的IP在黑色列出的时间或不在白色列出的时间。 | 检查您的API黑/白名单设置以确定正确的使用时间。 |
40107 | UNAUTHORIZED COMMAND | 操作命令列入黑名单或不在白名单中。 | 检查您的API黑/白名单设置。 |
40108 | UNAUTHORIZED METHOD | 用于访问API的方法被列入黑名单或不在白名单中。 | 检查您的API黑/白名单设置。 |
40601 | INVALID OR NON EXISTENCE DESTINATION ACCOUNT | 目标FasaPay帐户不存在或不正确 | 在 <transfer> tax中重新检查您的 <to></to>。 并确保它指向正确的FasaPay帐户 |
40602 | NOT ENOUGH BALANCE | 余额不足以继续操作 | 增加你的平衡。 就像使用TOP UP |
40603 | AMOUNT TO LARGE | 金额大于FasaPay允许的金额 | 减少转帐金额 |
40604 | AMOUNT TO SMALL | 量小于FasaPay允许的 | 增加转帐金额 |
40605 | INVALID OR NON EXISTENCE SOURCE CURRENCY | 货币不是未激活就是无效值 | 检查 <currency> 标签是否有无效的货币格式。 或检查您的帐户是否有禁用货币 |
40701 | TRANSACTION NOT FOUND | 输入的批号不在FasaPay数据库中 | 确保您输入了有效的批号 |
40801 | WRONG OR INACTIVE CURRENCY | 货币不是未激活就是无效值 | 检查 <currency> 标签是否有无效的货币格式。 或检查您的帐户是否有禁用货币 |
40802 | INVALID DATE FORMAT (yyyy-mm-dd) | 无效 <start_date> 格式 | 检查您的 <start_date> 是否有无效的日期格式 |
40803 | INVALID DATE FORMAT (yyyy-mm-dd) | 无效 <end_date> 格式 | 检查您的 <end_date> 是否有无效的日期格式 |
40804 | INVALID TYPE VALUE | 无效 <type> 价值 | 检查您的 <type> 是否有无效值。 确保它是允许的值之一。 |
40805 | INVALID ORDER_BY VALUE | 无效 <order_by> 价值 | 检查您的 <order_by> 是否有无效值。 确保它是允许的值之一。 |
40806 | INVALID ORDER VALUE | 无效 <order> 价值 | 检查您的 <order> 是否有无效值。 确保它是允许的值之一。 |
40807 | INVALID PAGE VALUE | 无效 <page> 价值 | 检查您的 <page> 是否有无效值。 确保它是允许的值之一。 |
40808 | INVALID PAGE_SIZE VALUE | 无效 <page_size> 价值 | 检查您的 <page_size> 是否有无效值。 确保它是允许的值之一。 |
40910 | REACH MAXIMUM ALLOWED BALANCE REQUEST BATCH COUNT | 已达到允许的最大批处理请求计数。 | 减少批量请求量。 |
40901 | WRONG OR INACTIVE CURRENCY | 货币不是未激活就是无效值 | 无效货币格式 或检查您的帐户是否有禁用货币 |
41010 | REACH MAXIMUM ALLOWED ACCOUNT REQUEST BATCH COUNT | 已达到允许的最大批处理请求计数。 | 减少批量请求量。 |
41001 | ACCOUNT NOT FOUND | 无效的帐户号码或要求的帐户号码尚未注册或管理员禁用 |
XML API操作
URL XML API
每个XML API请求都会发送到此URL:
https://api.fasapay.com/
或者
https://www.fasapay.com/xml
一般要求结构
下面是XML请求的基本模板.
每个操作都有相同的结构.
从fasa_request标记开始,然后是auth块,然后是请求块
<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>
一般回应架构
下面是XML响应的基本模板.
从fast_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>
如果在执行操作时发生错误,它将使用以下格式创建错误响应。
<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>
请注意,错误只取消发生错误的操作, 因此,如果一个请求中有多个操作,它只会取消发生错误的操作,并且仍然执行另一个操作。
-
转移请求
请求URL:
https://api.fasapay.com/?req=requestbody
或者
https://www.fasapay.com/xml?req=requestbody
如果您想将资金从一个帐户转移到另一个帐户,请使用转账.
以下是此操作所需的数据
-
要求 to, 是FasaPay帐户目标
格式: FPnnnnn
例子: FP123456 -
要求 amount, 是受让基金的金额。 带点(。)作为小数点分隔符
格式: float
例子: 100000.10 -
要求 currency, 是转账时使用的货币
格式: string (IDR | USD)
例子: IDR -
可选的 fee_mode, 是在传输中使用的费用模式。 默认为FiR
格式: string (FiR | FiS)
例子: FiR -
可选的 note, 是转帐的注
格式: 字符串最大255个字符
例子: 退款交易A -
可选的 id, 用于标记转移的id转移
格式: 字符串最大50个字符
例子: TR1111 -
可选的 ref, 可用于跟踪事务的参考代码
格式: 字符串最大50个字符
例子: ORDER12345
以下是传输请求的xml格式:
<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>
有效传输请求格式示例
<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>
有效批量传输请求格式示例
<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>
错误和响应
FasaPay将使用 <fasa_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>
错误响应示例
<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>
-
要求 to, 是FasaPay帐户目标
-
历史请求
请求URL :
https://api.fasapay.com/?req=requestbody
或者
https://www.fasapay.com/xml?req=requestbody
历史记录请求用于获取FasaPay帐户中的最新交易历史记录。
请求历史记录不需要任何参数来获取10个最新事务.
但它有以下参数来获取特定的事务历史记录:- 可选的 start_date, 用于指定开始日期。
格式 : YYYY-mm-dd
例如 : 2011-03-01 - 可选的 end_date, 用于指定结束日期。
格式 : YYYY-mm-dd
例如 : 2011-03-05 2011-03-30 - 可选的 type, 用于指定事务类型。
格式 : string transfer|topup|redeem|exchange|receive
例如 : transfer - 可选的 order_by, 用于按特定参数指定顺序/排序(排序)
格式 : string date|amount|to|from|currency|bank
例如 : date - 可选的 order, 指定订单类型
格式 : string ASC|DESC
例如 : asc - 可选的 page, 用于从具有多个页面的历史事务中获取特定页面
格式 : integer
例如 : 1 - 可选的 page_size, 用于指定每页多少事务
格式 : integer, max 20
例如 : 20
这是历史请求的基本 xml 格式:
<history>
... parameters ...
</history>有效的基本历史请求示例
<fasa_request id="1234567">
<auth><!-- authentication tag. required on every request -->
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<history>
</history>
</fasa_request>带参数的有效历史请求示例
<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>
历史响应示例
<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>
- 可选的 start_date, 用于指定开始日期。
-
详细要求
请求URL :https://api.fasapay.com/?req=requestbody
或者
https://www.fasapay.com/xml?req=requestbody
Detail-Request用于获取详细的交易信息。
Detail-Request只需要你想看的交易的批号。Detail-Request也可以使用这个参数来搜索特定的事务 :
- ref, REF参数,用于搜索FasaPay在使用SCI交易期间保存的特定fp_merchant_ref字符串
- note, NOTE参数用于搜索特定的注意字符串,该字符串是由FasaPay保存在事务。
以下是详细信息请求的基本XML格式 :
<detail>TR2012092712345</detail>
<detail><ref>BL12345</ref></detail>
<detail><note>Pembayaran</note></detail>
有效详细信息请求格式示例
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<detail>TR2012092712345</detail>
</fasa_request>
有效批次详细信息请求格式示例
<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>
错误和响应
FasaPay将使用 <fasa_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>
错误响应示例
<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>
-
余额请求
请求URL :
https://api.fasapay.com/?req=requestbody
或者
https://www.fasapay.com/xml?req=requestbody
余额请求用于获取您帐户中的余额金额。
余额请求只需要您想要查看的货币的货币代码。 (IDR, USD)
以下是余额请求的基本XML格式 :
<balance>IDR</balance>
有效余额请求格式示例
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<balance>IDR</balance>
</fasa_request>
有效批次余额请求格式示例
<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>
错误和响应
FasaPay将使用 <fasa_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>
错误响应示例
<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> -
帐户申请
请求URL :
https://api.fasapay.com/?req=requestbody
或者
https://www.fasapay.com/xml?req=requestbody
帐户请求是用来获取某些FasaPay用户的帐户号码的信息.
帐户请求只需要您想看到的FasaPay帐户的帐户号码.
以下是帐户请求的基本XML格式 :
<account>FP00001</account>
有效帐户请求格式示例
<fasa_request id="1234567">
<auth>
<api_key>11123548cd3a5e5613325132112becf</api_key>
<token>e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b</token>
</auth>
<account>FP00001</account>
</fasa_request>
有效批处理帐户请求格式示例
<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>
错误和响应
FasaPay将使用 <fasa_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>
错误响应示例
<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函数片段
创建令牌
此函数用于创建令牌
/** * 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
此函数用于创建auth标签
/** * 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; }
构建转让
此函数用于创建XML标记传输请求
/** * 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; }
构建XML
此函数用于创建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; }
得到回应
此函数用于使用CURL将请求xml发送到FasaPay XML API服务器。 此函数将从FasaPay XML API服务器返回响应。
/**
* 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;
}