Приняти платіж (Purchase)

Запит Purchase використовується для проведення платежу клієнтом на захищеній сторінці wayforpay.

Приклад запиту:

Запит з необхідними параметрами формується на стороні продавця та передається методом POST за протоколом HTTP на URL https://secure.wayforpay.com/pay

 

Параметр

Опис

Обов'язкове

merchantAccount

Ідентифікатор продавця. Дане значення присвоюється Вам з боку WayForPay

так

merchantAuthType

Тип авторизації. Може приймати одне з наступних значень:

- SimpleSignature (за замовчуванням)

- ticket

- password

ні

merchantDomainName

Доменне ім'я веб-сайту торговця

так

merchantTransactionType

Тип транзакції. Може приймати одне з наступних значень:

- AUTO (за замовчуванням)

- AUTH

- SALE

ні

merchantTransactionSecureType

Тип безпеки для проходження транзакції. Може приймати одне з наступних значень:

- AUTO

так

merchantSignature

Підпис запиту

так

apiVersion

Версія протоколу. Значення за замовчуванням: 1 Значення 2 - надає передачу на serviceUrl розширених даних - додатковi поля, доставка, коментарі.

нi

language

Мова платіжної сторінки. Може приймати одне з наступних значень:

- AUTO (Буде визначатися в залежності від мови браузера)

- UA (за замовчування) - українськам

- RU - російська

- EN - англійська

Додатково:

 - DE - німецька      - ES - іспанська        - IT - італійська

 - PL - польська       - FR - французька   - RO - румунська

 - LV - латвійська    - SK - словацька      - CS - чеська  

ні

returnUrl

URL, на який система повинна перенаправляти клієнта з результатом платежу.

* У разі відсутності параметра переадресація відбувається на сторінку результату оплати checkout psp

ні

serviceUrl

URL, на який система повинна відправляти відповідь з результатом платежу безпосередньо мерчанту

ні

orderReference

Унікальний номер замовлення в системі торговця

так

orderDate

Дата розміщення замовлення

так

orderNo

Номер замовлення в системі продавця

ні

amount

Сума замовлення

так

currency

Валюта замовлення UAH

так

alternativeAmount

Альтернативна сума замовлення

ні

alternativeCurrency

Альтернативна валюта замовлення (USD, EUR, RUB)

ні

holdTimeout

Час дії блокування коштів в секундах. За умовчанням 1 728 000 (20 днів).

Максимально 1 728 000 (20 днів). Мінімальне значення 60 (1 хвилина).

ні

orderTimeout

Встановлює інтервал, протягом якого буде доступна можливість повторно оплатити замовлення на платіжній сторінці.

В секундах

ні

orderLifetime

Встановлює інтервал, протягом якого замовлення може бути оплачено. В секундах

ні

recToken

Токен карти для рекаррінгових списань

ні

productName[]

Масив з найменуванням замовлених товарів

так

productPrice[]

Масив з цінами за одиницю товару. Ця інформація буде видна на сторінці оплати замовлення

так

productCount[]

Масив з кількістю замовленого товару по кожній з позицій.

так

clientAccountId

Унікальний ідентифікатор клієнта в системі торговця (логін, email і т.д.)

ні

socialUri

Унікальний ідентифікатор ресурсу.

Приклад: https://www.facebook.com/vladislavsolodkiy

ні

deliveryList

Додає на платіжній сторінці блок доставки, який клієнту необхідно буде заповнити.

Можна передати одну або кілька значень через ";"

Список значень:

- nova -  Нова Пошта

- meest - Мiст експрес

- ukrpost - Укрпошта

- other - адресна доставка

ні

clientFirstName

Ім'я клієнта

ні

clientLastName

Прізвище клієнта

ні

clientAddress

Адреса клієнта

ні

clientCity

Місто клієнта

ні

clientState

Штат / Область клієнта

ні

clientZipCode

Поштовий індекс клієнта

ні

clientCountry

Країна клієнта в цифровому ISO 3166-1-Alpha 3

ні

clientEmail

Email клієнта

ні

clientPhone

Номер телефону клієнта

ні

deliveryFirstName

Ім'я одержувача

ні

deliveryLastName

Прізвище одержувача

ні

deliveryAddress

Адреса одержувача

ні

deliveryCity

Місто одержувача

ні

deliveryState

Штат / Область одержувача

ні

deliveryZipCode

Поштовий індекс одержувача

ні

deliveryCountry

Країна одержувача

ні

deliveryEmail

Email отримувача

ні

deliveryPhone

Номер телефону одержувача

ні

aviaDepartureDate

Час відправлення рейсу

ні

aviaLocationNumber

Кількість пунктів пересадок

ні

aviaLocationCodes

Коди аеропортів

ні

aviaFirstName

ім'я пасажира

ні

aviaLastName

Прізвище пасажира

ні

aviaReservationCode

Код резервування

ні

regularBehavior

 - preset - щоб клієнт не зміг редагувати параметри регулярного платежу на платіжній сторінці

ні

regularMode

Періодичності регулярного списання:

- client - вiдображає клiєнту на вибiр  список усiх доступних перiодiв повторення.

- none - оплата відбувається без використання регулярки

- once -  списання один раз

- daily - щодня

- weekly - щотижнево

- quarterly - щоквартально (раз в три місяці починаючи з дати першого платежу)

- monthly - щомісяця

- halfyearly -  раз на півроку

- yearly - раз на рік

Передача одного обо декiлькох перiодiв через ";"

ні

regularAmount

Сума регулярного платежа

ні

dateNext

Дата першого списання регулярного платежу в форматі ДД.ММ.РРРР. Дата повинна бути більше поточної дати

ні

dateEnd

 або

regularCount

Дата закінчення в форматі ДД.ММ.РРРР, або кiлькiсть регулярних списань

ні

regularOn

При значеннi = 1, чекбокс "зробити платiж регулярним" активований, regularAmount заблокованоо для редагування.

 

paymentSystems

Список платіжних систем, доступних клієнтові при виборі способу оплати на платіжній сторінці.

Системи повинні бути розділені крапкою з комою. Доступні платіжні системи:

- card

- googlePay

- applePay

- privat24

- lpTerminal

- delay

- bankCash

- qrCode

- masterPass

- visaCheckout

- bot - метод оплати у месенжерах (бот wayforpay)

- payParts (миттєва розстрочка вiд ПриватБанка)*

- payPartsMono (покупка частинами вiд  Монобанка)*

- payPartsPrivat (оплата частинами вiд ПриватБанка )*

- payPartsAbank (плати частинами вiд А-Банка)*

- instantAbank (розстрочка А-Банка)*

- globusPlus (оплата частинами Глобус+ Глобус банк)*

- payPartsOschad (оплата частями Ощадбанк)*

- OnusInstallment (розстрочка Райффайзен Банк)*

- payPartsOtp (розстрочка ОТР Банк Скибочка)*

- payPartsSport (оплата частинами Sportbank)*

 

* Для платежів в розстрочку або оплати частинами можна передавати доступне для клієнта кількість частин на платіжній сторінці, кількість частин вказуємо через кому після ":". Наприклад: payPartsAbank:2,3,7,10; payParts:5
За замовчуванням клієнтові доступні всі дозволені мерчанту системи оплати.

ні

defaultPaymentSystem

Платіжна система, яка першою відобразиться платнику на платіжній сторінці.

За замовчуванням - card

ні

 

Параметри відповіді:

Параметр

Опис

Приклад

merchantAccount

Ідентифікатор продавця

test_merch_n1

orderReference

Унікальний номер замовлення в системі торговця

1212dd1

merchantSignature

hash_hmac

 

amount

Сума замовлення

100

currency

Валюта замовлення

UAH

authCode

Код авторизації - присвоюється банком

324567

email

email платника

email@mail.com

phone

Номер телефону платника

+38063-333-33-33

createdDate

Дата створення запиту в psp (UTC)

123456789

processingDate

Дата процесування транзакції (UTC)

12345678

cardPan

Маскований номер карти (44****4444)

42****4242

cardType

Тип карти: Visa/MasterCard

Visa

issuerBankCountry

Країна карти

Ukraine

issuerBankName

Ім'я Банку карти

PrivatBank

recToken

Токен карти для рекаренгових списань

121213321-3213213-3213213-321-3

transactionStatus

статус транзакції

Approved

reason

Причина відмови

Ok

reasonCode

Код відмови

1100

fee

Комісія psp

0.00

paymentSystem

Платіжна система, через яку був здійснений платіж.

card

 

 

 

Генерування тестової строки

Параметри генерування тестової строки за посиланням

 

Аутентифікація запитів

З метою підтвердження валідності даних повинно бути згенеровано і передано в запиті HMAC_MD5 контрольний підпис з використанням SecretKey торговця.

Рядок, що підлягає HMAC_MD5, генерується шляхом конкатенації параметрів merchantAccount, merchantDomainName, orderReference, orderDate, amount, currency, productName [0],

productName [1] ..., productName [n], productCount [0], productCount [1], ..., productCount [n], productPrice [0], productPrice [1], ..., productPrice [n] розділених ";" (крапка з комою) в кодуванні UTF-8

 

Приклад HTTP POST запиту:

merchantAccount

test_merch_n1

merchantDomainName

www.market.ua

orderReference

DH783023

orderDate

1415379863

amount

1547.36

currency

UAH

productName

["Процессор Intel Core i5-4670 3.4GHz","Память Kingston DDR3-1600 4096MB PC3-12800"]

productCount

[1,1]

productPrice

[1000,547.36]

merchantSignature

b95932786cbe243a76b014846b63fe92

 

Базовий рядок для генерації HASH для наведеного прикладу буде дорівнювати:

test_merchant;www.market.ua;DH783023;1415379863;1547.36;UAH;Процессор Intel Core i5-4670 3.4GHz;Память Kingston DDR3-1600 4096MB PC3-12800;1;1;1000;547.36

Результат HMAC_MD5 і значення параметру merchantSignature буде рядок 3f787303ac524389b4a76383f9508251

 
 
Приклад PHP
<?php
$string = "test_merchant;www.market.ua;DH783023;1415379863;1547.36;UAH;Процессор Intel Core i5-4670 3.4GHz;Память Kingston DDR3-1600 4096MB PC3-12800;1;1;1000;547.36";
$key = "dhkq3vUi94{Z!5frxs(02ML";
$hash = hash_hmac("md5",$string,$key);
?>
 
 
Приклад запиту:
<form method="post" action="https://secure.wayforpay.com/pay" accept-charset="utf-8">
<input name="merchantAccount" value="test_merch_n1">
<input name="merchantAuthType" value="SimpleSignature">
<input name="merchantDomainName" value="www.market.ua">
<input name="merchantSignature" value="b95932786cbe243a76b014846b63fe92">
<input name="orderReference" value="DH783023">
<input name="orderDate" value="1415379863">
<input name="amount" value="1547.36">
<input name="currency" value="UAH">
<input name="orderTimeout" value="49000">
<input name="productName[]" value="Процессор Intel Core i5-4670 3.4GHz">
<input name="productName[]" value="Память Kingston DDR3-1600 4096MB PC3-12800">
<input name="productPrice[]" value="1000">
<input name="productPrice[]" value="547.36">
<input name="productCount[]" value="1">
<input name="productCount[]" value="1">
<input name="clientFirstName" value="Вася">
<input name="clientLastName" value="Пупкин">
<input name="clientAddress" value="пр. Гагарина, 12">
<input name="clientCity" value="Днепропетровск">
<input name="clientEmail" value="some@mail.com">
<input name="defaultPaymentSystem" value="card">
<button type="submit">Оплатить</button>
</form>

 

Повідомлення мерчанта про статус транзакції

Для авторизованих і перевірених замовлень (а також при зміні статусу замовлення) серевер WayForPay направляє на serviceUrl запит (HTTP_POST) включає в себе дані замовлення.

Дана інформація доповнюється контрольним підписом HMAC_MD5.

У разі, якщо WayForPay НЕ отримає коректну відповідь від сервера торговця, то система буде направляти запити на протязі 4-х діб або до отримання правильної відповіді.

 

 

 

Для реалізації оплати в мобільному додатку

Сервер торговця (або телефон клієнта) посилає пост запит на https://secure.wayforpay.com/pay?behavior=offline з полями для PURCHASE.

У відповідь наш сервер в разі успіху віддає { "url": "https: \ / \ / secure.wayforpay.com \ / page? Vkh = 5f6204b5-8300-4cfb-851b-749822d1dba8"}.

У параметрі url знаходиться посилання для оплати, по якому клієнт може перейти і отримати платіжну сторінку.

 

Параметри запиту шлюзу WayForPay на serviceUrl *

З метою підтвердження валідності даних необхідно згенерувати і передати в запиті HMAC_MD5 контрольний підпис з використанням SecretKey торговця.

Рядок, що підлягає HMAC_MD5, генерується шляхом конкатенації параметрів merchantAccount, orderReference, amount, currency, authCode, cardPan, transactionStatus, reasonCode розділених ";" (крапка з комою) в кодуванні UTF-8

 

Параметр

Опис

Приклад

merchantAccount

Ідентифікатор продавця

test_merch_n1

orderReference

Унікальний номер замовлення в системі торговця

1212dd1

merchantSignature

hash_hmac

 

amount

Сума замовлення

100

currency

Валюта замовлення

UAH

authCode

Код авторизації - присвоюється банком

324567

email

email платника

email@mail.com

phone

Номер телефону платника

+38063-333-33-33

createdDate

Дата створення запиту в psp

123456789

processingDate

Дата процесування транзакції

12345678

cardPan

Маскований номер карти

42****4242

cardType

Тип карти: Visa / MasterCard

Visa

issuerBankCountry

Країна карти

Ukraine

issuerBankName

Ім'я Банку карти

PrivatBank

recToken

Токен карти для рекаренгових списань

121213321-3213213-3213213-321-3

transactionStatus

Статус транзакції

Approved

reason

Причина відмови

Ok

reasonCode

Код відмови

1100

fee

Комисія psp

0.00

paymentSystem

Платіжна система, через яку був здійснений платіж.

card

repayUrl

Передається, якщо платіж клієнта неуспішний

Url адреса за якою можна повторно оплатити в рамках часу переданого в orderTimeout або orderLifetime.

https://hpp.psp.loc/repay/40aef950b5dc8dbb6c9e670e45af0f56

 
 
 
Приклад запиту на serviceUrl
{
"merchantAccount":"test_merchant",
"orderReference":"DH783023",
"merchantSignature":"",
"amount":1547.36,
"currency":"UAH",
"authCode":"541963",
"email":"client@mail.ua",
"phone":"380501234567",
"createdDate":12345678,
"processingDate":12345678,
"cardPan":"41****8217",
"cardType":"visa",
"issuerBankCountry":"980",
"issuerBankName":"Privatbank",
"recToken":"",
"transactionStatus":"Approved",
"reason":"ok",
"reasonCode":"1100",
"fee":0,
"paymentSystem":"card"
}
 
 
Приклад для розбору строки json
$json = file_get_contents('php://input');
$obj = json_decode($json, TRUE);
 
 
 
Приклад емітуючий роботу запиту на Service URL
$ curl http://you.service.url -d '{"a":"a", "bInt":1}'

 

Система WayForPay очікує отримати від сервера торговця таку відповідь:

З метою підтвердження валідності даних необхідно згенерувати і передати в запиті HMAC_MD5 контрольний підпис з використанням SecretKey торговця.

Рядок, що підлягає HMAC_MD5, генерується шляхом конкатенації параметрів orderReference, status, time розділених ";" (крапка з комою) в кодуванні UTF-8

 
 
 
Приклад коректної відповіді від мерчанту
{
"orderReference":"DH783023",
"status":"accept",
"time":1415379863,
"signature":""
}