Ви знаходитеся тут: Головна / Подключение Money Transfer / Develop money transfer

Develop money transfer

створив(ла) Igor Uleschenko Востаннє змінено: Січ 08, 2020 17:24

 UKRAINIAN PROCESSING CENTER

Kyiv

 

 

logo_ecommerce_3.jpg

 

Інструкція розробника

Develop money transfer

 

Інструкція призначена для інтеграції з платіжним шлюзом Money Transfer

 

Версия 1.3

 

 

 

 

 

2014

 

 

 

Правила роботи шлюзу

 

  1. Взаємодія з шлюзом здійснюється за допомогою HTTP POST запитів / відповідей. Дані запитів і відповідей передаються у форматі XML. 
  2. Всі запити підписуються цифровим підписом. 
  3. Відповідь від сервера обов'язково перевіряється сертифікатом на предмет валідності підпису.

 

Формування запиту

 Для всіх видів запитів виділяються загальні обов'язкові дані , до яких відносяться: 

  •  MerchantId і TerminalId  - ідентифікатори основного терміналу сервіс-провайдера  . 

Поле TerminalId є опціональним , оскільки до одного ідентифікатором MerchantId прив'язується тільки один TerminalId .

  •  TrackingId – унікальний  ідентифікатор транзакції , який встановлюється сервіс-провайдером. Дані TrackingId повинні однозначно ідентифікувати транзакції переказу коштів . Також TrackingId може використовуватися в додаткових сервісах , наприклад , при визначенні типу перекладу з карти на карту. Так само , TrackingId використовується для отримання статусу завершеної транзакції. Значення має складатися з маленьких і великих букв англійського алфавіту і цифр довжиною не більше 16 символів Ø Signature - криптографічний підпис запиту.

 

Загальні теги запиту :

<Request root tag>

<MerchantId>9752130</MerchantId>

<TerminalId>E9879930</TerminalId>

<TrackingId>fd4e1c67a2d28fced</TrackingId>

...

<Signature></Signature>

</Request root tag>

 

 

Обробка відповіді 

 

Незалежно від типу запиту, відповідь обов'язково буде містити Signature і Status. Ø Signature - криптографічний підпис відповіді. 

 Status - статус виконання запиту, який у свою чергу складається з: 

     Code - тризначний код, який визначає успішність виконання запиту або пояснює причину помилки або відмови. 

     Message - текстове повідомлення в довільній формі, яка деталізує причину отримання того, чи іншого коду відмови або помилки. Загальні теги відповіді :

 

<Response root tag>

<Status>

<Code>000</Code>

<Message> status message...</Message>

</Status>

<Signature></Signature>

</Response root tag>

 .

Типи запитів

  1. CardZoneRequest  
  2. TransactionRequest
  • Card-to-Card
  • Card-To-Account
  • Account-To-Card
  • Reversal on funding  
  1. StatusRequest

 .

Короткий опис операцій

1 . CardZoneRequest- запит  дозволяє визначити тип переказу ( local , domestic) , приналежність карти до платіжної системи , а також тип  карткового продукту . 

.

Механізми та типи переказів

 

Local - тип переказу з картки на картку який здійснюється однією транзакцією , всередині одного банку. Визначення переказу, як Local , можливо тільки для card-to-card переказу, і не застосовується до переказів  Account-To-Card і Card-To-Account . 

Domestic - внутрішньодержавний переказ між картами різних банків . Банки-емітенти є резидентами країни банка -екваєра . Переказ здійснюється з використанням VPP MT і / або MC MS .

CardZoneRequest доцільно використовувати для переказів Card-to-Card, оскільки інші види переказів апріорі мають тип domestic.

. TransactionRequest - дозволяє зробити переказ грошових коштів з банківської картки відправника на іншу картку одержувача , перевести кошти з картки на банківській рахунок і кошти з рахунку на банківську карту, та виконати повернення на картку.  

. StatusRequest - дозволяє з легкістю дізнатися статус транзакції маючи мінімальний набір даних.

mt2.jpg 

Формування підпису

 

Підпис XML документу залежить від мови програмування яку використовує клієнт.

Підпис має відповідати стандарту W3C XML Signature Syntax and Processing.

Приклад на мові PHP з використанням бібліотеки для підпису xmlseclibs.

 

1.Формуєм запит XML (приклад для Card-to-Card).

<CardZoneRequest> <MerchantId>1752739</MerchantId> <TerminalId>E7880539</TerminalId> <TrackingId>fd4e1c67a28</TrackingId>

<CardFromNumber>4999999999990011</CardFromNumber>

<CardToNumber>5559490000000148</CardToNumber>

</CardZoneRequest>

 

2. Підключаємо  бібліотеку  - require_once dirname(__FILE__) .'/xmlseclibs/xmlseclibs.php';

 

3.Функція для підпису

mt3.jpg

Вхідні параметри 

  $fxml – xml запит.

  $fpkey – згенерований приватний ключ.

 

Результат – підписаний XML запит.

 mt4.jpg

 

 

Перевірка відповіді шлюзу

Функція для перевірки підпису

 

 mt5.jpg

 

Вхідні параметри 

 $fxmlsigned – xml-відповідь сервера. 

 $crt_server – сертифікат сервера.

Тільки на основі перевірки валідності XML можна оброблювати отримані дані, впевнившись що вони отримані з шлюзу УПЦ.

Підпис XML потрібно використовувати без виключення для всіх запитів. (В подальших прикладах елемент <Signature></Signature> опускається, оскільки принцип його формування викладений вище.)

 

                                                        II. TransactionRequest

 

.

mt8.jpg

.

.

TransactionRequest CardToAccount и AccountToCard

 

Request CardToAccount

a. TEST url - https://ecg.test.upc.ua/mt/tran

c. WORK url - https://secure.upc.ua/mt/tran 
Request AccountToCard 

<TransactionRequest>

<MerchantId>9752130</MerchantId>

<TerminalId>E9879930</TerminalId>

<TrackingId>fd4e1c67a2846ce</TrackingId>

        <Amount>

              <Value>10000</Value>

              <CurrencyCode>980</CurrencyCode>

              <Surcharge>100</Surcharge>

       </Amount>

       <Funding>

            <CardInfo>

              <CardNumber>4999999999990011</CardNumber>

             <ExpYear>2017</ExpYear>

             <ExpMonth>12</ExpMonth>

             </CardInfo>

<PARes>

<Status>Y</Status>

<CAVV>AAABCFg3aUFBSBAQlTdpEFX/7P4=</CAVV>

<ECI>05</ECI>

<CavvAlgorithm>2</CavvAlgorithm> </PARes>

    якщо  Status не Y то CVV2 обов’язкове

              <CVV2>123</CVV2>

             </Funding>

</TransactionRequest>

<TransactionRequest>

<MerchantId>9752130</MerchantId>

<TerminalId>E9879930</TerminalId>

<TrackingId>fd4e1c67a2846ced849ee1bb76e739asd3563eb12</TrackingId>         

<Amount>

              <Value>10000</Value>

              <CurrencyCode>980</CurrencyCode>

              <Surcharge>100</Surcharge>

       </Amount>        

<Payment>

               <RecipientCardNumber>5559490000000148</RecipientCardNumber>

               <SenderAccountNumber>26385001215533</SenderAccountNumber>        

</Payment>

</TransactionRequest>

.

Опис полів Опис полів

MerchantId - унікальний ідентифікатор торговця. 

TerminalId - унікальний ідентифікатор терміналу.  TrackingId - унікальний ідентифікатор транзакції. 

(Значення має складатися з маленьких і великих букв англійського алфавіту і цифр довжиною не більше 16 символів)  CardNumber - номер картки відправника

MerchantId - унікальний ідентифікатор торговця. 

TerminalId - унікальний ідентифікатор терміналу.  TrackingId - унікальний ідентифікатор транзакції. 

(Значення має складатися з маленьких і великих букв англійського алфавіту і цифр довжиною не більше 16 символів)  RecipientCardNumber - карта одержувача 

SenderAccountNumber - номер рахунку відправника

 

 

Reversal on funding

 

Request 

a. TEST url - https://ecg.test.upc.ua/mt/reversal

d. WORK url - https://secure.upc.ua/mt/reversal
Response

<ReversalRequest>

       <MerchantId>9752130</MerchantId>

       <TerminalId>E9879930</TerminalId>

        <TrackingId>trantest2</TrackingId>

                 <Amount>

                      <Value>100</Value>

                      <CurrencyCode>980</CurrencyCode>

                      <Surcharge>100</Surcharge>

                 </Amount>

                             <Funding>

                                 <ApprovalCode>019997</ApprovalCode>

                                 <RRN>511110701902</RRN>

                             </Funding>

</ReversalRequest>

<ReversalResponse>

  <TrackingId>trantest2</TrackingId>

   <Status>

     <Code>000</Code>

     <Message>Approved</Message>

   </Status>

  <ReversalResult>

      <Date>2015-04-21 10:30:05 +0300</Date>

       <MerchantCliche>

        <MerchantId>9752130</MerchantId>

        <TerminalId>E9879930</TerminalId>

        <MCC>6012</MCC>

       </MerchantCliche>

    <ApprovalCode>040529</ApprovalCode>

    <AuthCode>000</AuthCode>

    <RRN>511110701902</RRN>

   </ReversalResult>

</ReversalResponse>

.

Опис полів Опис полів

.

MerchantId - унікальний ідентифікатор торговця. 

TerminalId - унікальний ідентифікатор терміналу.  TrackingId - унікальний ідентифікатор транзакції. 

(Значення має складатися з маленьких і великих букв англійського алфавіту і цифр довжиною не більше 16 символів) 

.

Code - код транзакції 

Message - повідомлення транзакції 

Date - час виконання транзак Payment або Funding у форматі YYYY-MM-DD HH:

MI: SS + TimeZone; 

MerchantCliche – інформація по кліше з яким була виконана транзакція.

ApprovalCode - код авторизації; 

RRN - Retrieval Reference Number;

 

III . Transaction StatusRequest (CardToCard)

Request 

a. TEST url - https://secure.upc.ua/mt_test/status  

d. WORK url - https://secure.upc.ua/mt/status 
Response

<StatusRequest>

<MerchantId>1752739</MerchantId>

<TerminalId>E7880539</TerminalId>

<TrackingId> fd4e1c67a2846ce</TrackingId> </StatusRequest>

<StatusResponse>

      <TransactionResponses>

               <TransactionResponse>

                     <Status>

                                     <Code>000</Code>

                                      <Message>Approved</Message>

                     </Status>

                     <FundingResult>

                                      <Date>2014-02-07 09:13:25 +0200</Date>

                                      <CVResult>M</CVResult>

                                      <MerchantCliche>

                                                     <MerchantId>1234567</MerchantId>

                                                     <TerminalId>E1234567</TerminalId>

                                                     <MCC>6012</MCC>

                                      </MerchantCliche>

                                      <ApprovalCode>053949</ApprovalCode>

                                      <AuthCode>000</AuthCode>

                                      <RRN>403809390850</RRN>

                      </FundingResult>

 

                       <PaymentResult>

                                    <Date>2014-02-07 09:13:25 +0200</Date>

                                    <MerchantCliche>

                                                   <MerchantId>1234567</MerchantId>

                                                   <TerminalId>E1234567</TerminalId>

                                                   <MCC>6012</MCC>

                                   </MerchantCliche>

                                  <ApprovalCode>050020</ApprovalCode>

                                  <AuthCode>000</AuthCode>

                                 <RRN>403809390387</RRN>

                     </PaymentResult>

            </TransactionResponse>    </TransactionResponses>  </StatusResponse>

.

Опис полів Опис полів

.

MerchantId - унікальний ідентифікатор торговця. 

TerminalId - унікальний ідентифікатор терміналу.  TrackingId - унікальний ідентифікатор транзакції. 

(Значення має складатися з маленьких і великих букв англійського алфавіту і цифр довжиною не більше 16 символів) 

.

Code - код транзакції 

Message - повідомлення транзакції 

Date - час виконання транзак Payment або Funding у форматі YYYY-MM-DD HH:

MI: SS + TimeZone; 

CVResult - результат аутентифікації карти 

MerchantCliche – інформація по кліше з яким була виконана транзакція.

ApprovalCode - код авторизації; 

AuthCode - код відповіді авторизаційної системи;  RRN - Retrieval Reference Number;