API 指南

导言

本文档包含来自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
250.51
3000

Currency

3个字符长的货币格式
IDR = 印尼盾
USD = 美元

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>

请注意,错误只取消发生错误的操作, 因此,如果一个请求中有多个操作,它只会取消发生错误的操作,并且仍然执行另一个操作。

  1. 转移请求

    请求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>

  2. 历史请求

    请求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>

  3. 详细要求

    请求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>
                    
  4. 余额请求

    请求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>
  5. 帐户申请

    请求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;
}