РУКОВОДСТВО ПО API

ЗНАКОМСТВО

Этот документ содержит описание всех и особенности функций FasaPay XML API. XML API позволяет обрабатывать отправку и получение платежа в автоматическом режиме. Получение информации о транзакциях и истории выполненных транзакций. Эти услуги необходимы для всех веб-сайтов, которые хотят использовать FasaPay в качестве одного из способов оплаты, а также для предприятий, которые должны использовать автоматические транзакции между счетами FasaPay.

КОМУ НУЖНЫ ЭТИ ДОКУМЕНТЫ

Эти документы необходимы всем разработчикам, работающим над программным интерфейсом для интеграции FasaPay на свой веб-сайт. Чтобы добиться успеха, разработчикам потребуется опыт в следующем:

  • Подготовка и отправка запросов на веб-сервер
  • Получение и анализ информации, полученной от веб-сервера
  • Работа с протоколом HTTPS
  • Иметь знания XML и знать, как использовать операции HASH.

ОСНОВНЫЕ СВЕДЕНИЯ ОБ API XML

XML API представляет собой набор команд, которые используются в качестве посредников между FasaPay и другими веб-сайтами. Формат и структура данных XML API были разработаны на основе стандарта XML-1.0

КАК ЭТО РАБОТАЕТ

XML API - это система, которая получает и отправляет информационные запросы. Эта система обработает запрос в соответствии с заказом, затем объединит данные отчета и отправит их обратно в запрос отправителя.
Каждый запрос состоит из определенной команды, которая затем интерпретируется API, а затем сервер приказывает следовать этим инструкциям. После выполнения каждой инструкции сервер будет отвечать результатом инструкции или сообщением об ошибке, объясняющим, почему произошла ошибка.
Каждый запрос и ответ упорядочены в указанном формате, так что он устанавливает определенные данные и может быть прочитан XML API. Некоторые запросы приведут к получению более одной команды и/или более одного ответа. Ниже приведено несколько шагов для бесперебойной работы XML API.

  • Сбор и подготовка данных запроса
  • Создание правильного формата XML
  • Создание HTTP GET или POST Request на основе подготовленного XML
  • Отправка HTTP GET или POST запроса на сервер FasaPay по протоколу HTTPS
  • Дождитесь ответа от сервера
  • Анализ и обработка ответных данных, отправленных сервером FasaPay

ПОДГОТОВКА

Прежде чем использовать XML API, необходимо выполнить следующие действия:

  • Вы должны создать API_KEY в FasaPay:
    • Вход в FasaPay
    • в <<MEMBER AREA>> выберите в меню Доступ к учетной записи (API) > API аккаунта
    • Щелчок Add API
    • Введите имя API и секретное слово API, затем нажмите Create API
  • Вы получите API_KEY, этот API_KEY будет использоваться для идентификации запросов XML API.
    Secretword будет использоваться как часть создания токенов для процесса аутентификации.

ОПЕРАЦИИ XML API

XML API поддерживает следующие операции:

  • Transfer. Позволяют переводить средства с одного счета на другой. С помощью этой команды вы можете перевести любую из доступных валют, которые поддерживает FasaPay. Эта функция также позволяет выполнять несколько (массовых) переводов.
  • History. Разрешить вам получать историю транзакций вашего счета FasaPay. Эта команда имеет множество дополнительных параметров для фильтрации ответа, таких как диапазон дат, валюты, тип транзакции, цель счета и т. д.
  • Detail. Позволяют получать подробную информацию о конкретных транзакциях. В один запрос можно включить несколько из этих команд.
  • Balance. Позволяет вам проверить баланс вашего счета FasaPay.
  • Account. Позволяет вам проверить конкретную учетную запись FasaPay, чтобы указать, зарегистрирована она или нет.

АУТЕНТИФИКАЦИЯ

XML-документ должен содержать сведения о проверке подлинности пользователя. Эта информация используется для идентификации пользователей. Каждый запрос к серверу XML-API должен содержать эту информацию.

  • API_KEY вы получите api_key после создания API.
    Эти api_key будут использоваться для идентификации пользователя.
  • TOKEN, токен - это ХЕШ от api_secretword, api_key и UTC даты.

СОЗДАНИЕ МАРКЕРА ПРОВЕРКИ ПОДЛИННОСТИ

Вот как вы создаете ТОКЕN

  • Получение путем конкатенации следующих данных

    API_KEY:API_SECRETWORD:DATE UTC в YYYYMMDDHH
    YYYY = 4-значный год
    MM = 2-значный месяц
    DD = 2-значный день
    HH = 2-значный час
  • Затем копируйте его с помощью SHA256
    example:

    - api_key = 11123548cd3a5e5613325132112becf
    - api_secretword = kata rahasia
    - date = 20 July 2011, 15:30

Will create

11123548cd3a5e5613325132112becf:kata rahasia:2011072015
А после хеширования (это ваш токен)
e910361e42dafdfd100b19701c2ef403858cab640fd699afc67b78c7603ddb1b

 

ИДЕНТИФИКАЦИЯ ЗАПРОСА И ОТВЕТА

XML API нуждается в дополнительных параметрах идентификации, которые позволяют точно сопоставить каждый запрос с ответом. Это обеспечивает получение правильного ответа на конкретный запрос и предотвращает отправку системой ответов на неправильные или ошибочные запросы. Строка идентификатора играет роль идентификационного параметра. Он должен быть представлен в теле XML-запроса, заданного программой или веб-сайтом и быть уникальным для учетной записи. Каждый ответ от сервера будет включать полученный параметр id в телеответ. После получения ответа конечный API пользователя должен проанализировать и подтвердить строку запросов идентификатора ответа. Если строки id не совпадают - вы либо получили некорректный ответ, либо произошел сбой в системе. id также используется для предотвращения случайных дубликатов платежей через API.
После отправки запроса на передачу сервер выполняет поиск запросов с идентичным идентификатором, недавно отправленных этой учетной записью, через эту запись API. Если совпадения будут найдены, запрос будет прерван сервером. и сервер отправит пользователю следующий ответ как указание на ошибку в системе 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 = индонезийская рупия
доллар США = доллар США

IDR, USD

Date_time

Формат даты ISO 8601

2011-08-01T14:15:00+07:00

 

 

 

КОД ОШИБКИ

Основной код ошибки

КОД ОШИБКИ СООБЩЕНИЕ ДЕТАЛИ ИСПРАВИТЬ
40000 NOT VALID XML REQUEST Отправленный XML недействителен, поврежден или имеет неправильный формат Перепроверьте XML, есть ли незакрытый тег XML, неправильный специальный символ и т. д.
40100 UNAUTHORIZED Авторизация не удалась.
ошибка в теге авторизации. как неправильный ключ API или неправильный токен
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 и сопоставьте его с ключом API, который вы создали в своей учетной записи FasaPay.
40102 WRONG API_SECRET неверный API_SECRET Перепроверьте свой api_secret и сопоставьте его с api_secret, который вы создали в своей учетной записи FasaPay.
40103 WRONG TOKEN неправильный ТОКЕН Перепроверьте свой токен и хеш. Убедитесь, что вы использовали SHA256 и правильную строку.
40104 WRONG API_SECRETWORD неправильный API_SECRETWORD Перепроверьте свое api_secret_word и сопоставьте его с api_secret, который вы создали в своей учетной записи FasaPay.
40105 UNAUTHORIZED IP Ваш IP занесен в черный список или не указан в белом списке. Проверьте настройки черного/белого списка API.
40106 UNAUTHORIZED TIME Вы используете IP во время черного списка или не во время белого списка. Проверьте настройку черного/белого списка API, чтобы узнать правильное время использования.
40107 UNAUTHORIZED COMMAND Команда Operation занесена в черный список или отсутствует в белом списке. Проверьте настройки черного/белого списка API.
40108 UNAUTHORIZED METHOD Метод, используемый для доступа к API, занесен в черный список или отсутствует в белом списке. Проверьте настройки черного/белого списка API.
       
40601 INVALID OR NON EXISTENCE DESTINATION ACCOUNT Целевая учетная запись FasaPay не существует или неверна Перепроверьте свой <to></to> в теге <transfer> и убедитесь, что он указывает на правильную учетную запись FasaPay.
40602 NOT ENOUGH BALANCE Баланс недостаточно продолжить операцию Увеличьте свой баланс. нравится использовать ПОПОЛНИТЬ
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 Неверный номер учетной записи или запрошенный номер учетной записи еще не зарегистрирован или отключен администратором  

Операции API XML

URL XML API

Каждый запрос XML API отправляется на этот URL-адрес:

https://api.fasapay.com/

или

https://www.fasapay.com/xml

Общая структура запроса

Ниже приведен основной шаблон XML-запроса.
Каждая операция имеет одинаковую структуру.
Начните с тега fasa_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>

Общая структура ответа

Ниже приведен основной шаблон XML-ответа.
Начните с 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>

 

Если во время выполнения операции возникает ошибка, создается ответ об ошибке следующего формата.

<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. TRANSFER REQUEST

    REQUEST URL :
    https://api.fasapay.com/?req=requestbody
    или
    https://www.fasapay.com/xml?req=requestbody


    Запрос на перевод используется, если вы хотите перевести средства с одного счета на другой.
    Вот необходимые данные для этой операции:
    • required to, чтобы является целевым счетом FasaPay
      формат : FPnnnnn
      Пример : FP123456
    • required amount, является суммой передаваемого средства. с точкой (.) в качестве десятичного разделителя
      формат : float
      Пример : 100000.10
    • required currency, валюта, используемая при переводе
      формат : string (IDR | USD)
      Пример : IDR
    • optional fee_mode, это режим комиссии, используемый при переводе. по умолчанию FiR
      формат : string (FiR | FiS)
      Пример : FiR
    • optional note, является примечанием о переводе
      формат : string max 255 character
      Пример : Refund Transaction A
    • optional id, id перевод для маркировки передачи
      формат : string max 50 character
      Пример : TR1111
    • optional ref, справочный код, который можно использовать для отслеживания транзакций
      формат : string max 50 character
      Пример : 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. HISTORY REQUEST

    REQUEST URL :
    https://api.fasapay.com/?req=requestbody
    или
    https://www.fasapay.com/xml?req=requestbody


    Запросы на историю используются для получения последней истории транзакций в вашей учетной записи FasaPay.
    История запросов не нуждается в каком-либо параметре, чтобы получить 10 последних транзакций.
    Но у него есть следующий параметр для получения конкретной истории транзакций :
    • optional start_date, для указания даты начала.
      формат : YYYY-mm-dd
      Пример : 2011-03-01
    • optional end_date, для указания даты окончания.
      формат : YYYY-mm-dd
      Пример : 2011-03-05 2011-03-30
    • optional type, для указания типа транзакции.
      формат : string transfer|topup|redeem|exchange|receive
      Пример : transfer
    • optional order_by, для указания порядка/сортировки по определенным параметрам (сортировка)
      формат : string date|amount|to|from|currency|bank
      Пример : date
    • optional order, укажите тип заказа
      формат : string ASC|DESC
      Пример : asc
    • optional page, для получения определенной страницы из истории транзакции, которая имеет более одной страницы
      формат : integer
      Пример : 1
    • optional 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. DETAIL REQUEST

    REQUEST URL :
    https://api.fasapay.com/?req=requestbody
    или
    https://www.fasapay.com/xml?req=requestbody

    Detail-Request используется для получения подробной информации о транзакции.
    Detail-Request требуется только пакетное количество транзакций, которые вы хотите видеть.

    Detail-Request также может использовать этот параметр для поиска конкретной транзакции:

    • ref, REF используемый для поиска определенной строки fp_merchant_ref, которая была сохранена FasaPay во время транзакции с использованием SCI
    • 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. BALANCE REQUEST

    REQUEST 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. ACCOUNT REQUEST

    REQUEST 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>

Фрагмент функции PHP XML API

CREATE 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

Эта функция используется для создания тега аутентификации

        /**
        * 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

Эта функция используется для создания 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;
        }
        
        

BUILD 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;
        }
        
        

GET RESPONSE

Эта функция используется для отправки xml-запроса с помощью CURL на сервер FasaPay XML API. Эта функция вернет ответ от сервера 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;
}