Ви знаходитеся тут: Головна / Платежи в рассрочку / Installment

Installment

створив(ла) Igor Uleschenko Востаннє змінено: Вер 16, 2019 12:02

 

UKRAINIAN PROCESSING CENTER

Kyiv

 

 

 

logo_ecommerce_3.jpg

 

Installment Payments

(Платежи в рассрочку)

 

 

Версия 1.0

 

 

 

 

 

2018

 

 

Оглавление

Цель...............................................................................................................................................................................3

Активация Installment Payments для мерчанта происходит на стороне Украинского процессингового центра....4

Формат и описание элементов.....................................................................................................................................5

Описание запроса на оплату.........................................................................................................................................6

Нотификация мерчанта по Installment Payments........................................................................................................10

Status Request................................................................................................................................................................14

 

 

Цель

 

Целью данного документа является предоставление информации по внедрению сервиса Installment Payments разработчикам электронной торговой системы.

Для начала работ необходимо получить в Украинском процессинговом центре следующие данные:

- Merchant_id

- Terminal_id

- Сертификат платежного шлюза Ecommerce Connect

- Доступ к админ. панеле

 

Активация Installment Payments для мерчанта происходит на стороне Украинского процессингового центра.

 

1.Торговец присылает запрос на ec@upc.ua, в котором необходимо указать Merchnat_id, для которого будет активирована опция.

2. Банк-эквайер устанавливает пороговую сумму (в валюте транзакций), при превышении которой в авторизационном запросе будет уходить флаг проверки installment для эмитента.

Например, банк устанавливает сумму 100 грн., в таком случае, все трансакции до 100 грн. будут направляться эмитенту как обычные покупки. Трансакции на сумму свыше 100 грн., например 101 грн. , будут содержать  параметр, с помощью которого эмитент, в случае если для клиента возможна рассрочка, предоставит план рассрочки, который будет отображен на странице оплаты.

3. После подтверждения активации опции Installment Payments со стороны Украинского процессингового центра, торговец через Merchant interface устанавливает парамерт «да» в поле «отправка условий рассрочки с помощью Notify»

 

4. Торговец инициирует стандартный запрос на оплату

 

Формат и описание элементов

 

Параметр Структура Формат Наименование (назначение) параметра Описание
Version F N Значение версии интерфейса SG

Версия протокола взаимодействия. Действующая версия в данный момент ‘1’. 

Этот параметр является справочным для обработчика входных данных шлюза.
MerchantID L an15 Идентификатор торговца Назначается обслуживающим банком
TerminalID F an8 Идентификатор терминала -- // --
TotalAmount F N1..12 Сумма заказа В мелких единицах валюты (копейки, центы)
Currency F n3 Валюта Определяется договором с обслуживающим банком
AltTotalAmount
(опционально)
F N1..12 Сумма заказа (альтернативная валюта)

В мелких единицах валюты

(копейки, центы)

AltCurrency
(опционально)

F n3 Альтернативная Валюта Определяется, если магазин желает отобразить сумму платежа в другой валюте.
PurchaseTime F n12..17 Время запроса в формате yyMMddHHmmss  или yyMMddHHmmssZ

yy   -   year

MM   -   month in year dd   -   day in month HH   -   hour in day (0-23) mm   -   minute in hour ss   -   second in minute

Z    -   time zone (RFC 822)

Формат зоны -    

            [+|-] Hours Minutes

            Например

             +0300  ,   -0200

Если в параметре зона не указана, 

считается та же зона, что и у шлюза

locale F a2 Язык интерфейса (en, ru, uk ) Язык интерфейса защищенной страницы шлюза
OrderID L Ans…20 Номер заказа длиной до 20 байт
SD
(Oпционально)
Var an...99 Session Data -Данные сессии Вспомогательный параметр, может быть использован торговой системой для управления пользовательскими сессиями
PurchaseDesc
(Oпционально)
L ans...1 25 Краткое описание покупки, товара Необязательный параметр, предусмотренный cпецификацией 3-D Secure. Может быть отображен на странице платежного сервера. Рекомендуется использовать для удобства покупателя.
Signature Var Зависи т от схемы  Значение MAC-кода или подписи Длина параметра зависит от выбранной схемы вычисления 

 

Описание запроса на оплату

 

Пример:

<form action="https://ecg.test.upc.ua/go/enter" method="POST">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<input name="Version" type="hidden" value="1" />

<input name="MerchantID" type="hidden" value="1111111" />

<input name="TerminalID" type="hidden" value="E1111111" />

<input name="TotalAmount" type="hidden" value="1000" />

<input name="Currency" type="hidden" value="980" />

<input name="locale" type="hidden" value="ru" />

<INPUT TYPE="HIDDEN" NAME="PurchaseTime" VALUE="150611110821"/>

<input name="OrderID" type="hidden" value="121sdsdss2sd" />

<input name="PurchaseDesc" type="hidden" value="tran test" />

<input name="Signature" type="hidden" value=""/>

<input type="submit"/>

</form>

 

После отправки запроса открывается платежная страница для ввода данных карты:

 

.

На следующей странице открываются данные по Installment Payment, где клиенту необходимо выбрать план рассрочки и подтвердить оплату.

 

.

.

 

 

 

Так же клиенту предоставляется возможность проведения оплаты без рассрочки, для этого нужно выбрать Pay in Full:

 

 

Нотификация мерчанта по Installment Payments

 

После подтверждения активации опции Installment Payments со стороны Украинского процессингового центра, торговец через Merchant interface устанавливает парамерт «да» в поле «отправка условий рассрочки с помощью Notify»

 

 

В этом случае результаты обработки транзакции и план рассрочки  передаются методом   HTTP/HTTPS  POST со стороны шлюза на страницу магазина

 

Notify request message:

Installment = '{"type":21,"paymentOption":"B","options":[{"number":2,"interestRate":12345,"fee":127777777777,"annualPercentageRate":55555,"firstAmount":123333333333,"subsequentAmount":121212121212,"totalAmountDue":252525252525},{"number":22,"interestRate":12345,"fee":123451242222,"annualPercentageRate":78787,"firstAmount":636363663633,"subsequentAmount":787878787777,"totalAmountDue":787878787877},{"number":77,"interestRate":78787,"fee":787878787777,"annualPercentageRate":45455,"firstAmount":454555555555,"subsequentAmount":496969696699,"totalAmountDue":898989898989},{"number":88,"interestRate":44444,"fee":111111111111,"annualPercentageRate":12122,"firstAmount":777777777777,"subsequentAmount":888888888888,"totalAmountDue":666666666666},{"number":55,"interestRate":88888,"fee":757585858555,"annualPercentageRate":33333,"firstAmount":636363333333,"subsequentAmount":111111111111,"totalAmountDue":363636363636},{"number":85,"interestRate":47474,"fee":858585888888,"annualPercentageRate":66666,"firstAmount":889898989999,"subsequentAmount":858585858588,"totalAmountDue":969696969696},{"number":25,"interestRate":25252,"fee":858585858588,"annualPercentageRate":36636,"firstAmount":636363633365,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":22,"interestRate":55555,"fee":123333333333,"annualPercentageRate":43434,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":22,"interestRate":12355,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":11,"interestRate":12335,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":44,"interestRate":33333,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":22,"interestRate":33333,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333}],
"receipt":"666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666"}'

 

Email = 'julia.timoshenko@upc.ua'

TranCode = '602'

MerchantID = '1754971'

TotalAmount = '15000'

OrderID = '844477'

ApprovalCode = '423488'

ProxyPan = '555949******0023'

Delay = '0'

Rrn = '825415352694'

PurchaseTime = '180907113626'

SD = ''

XID = '18091115-278639'

Currency = '980'

Signature = 'null'

TerminalID = 'E7882971'

 

При этом магазин возвращает ответ в теле выполняемой страницы.  Каждый параметр и его значение в виде Параметр=Значение возвращаются на новой строке. Строки разделяются символом разделителя строк.

В ответе, дополнительно к оригинальным значениям параметров (MerchantID, TerminalID, OrderID, Currency, TotalAmount, XID, PurchaseTime),  возвращает 3 новых параметра –

 

Параметр Значение Описание
Response.action approve |  reverse

При значении ‘approve’ ел. магазин дает одобрение успешности операции.

 

При значении ‘reverse’ шлюз делает  откат успешной транзакции и

устанавливает признак завершения 503

– «Транзакция отменена магазином»

Response.reason An.. 255

Пояснение ответа магазина (опционально),

например – причина для значения Response.action
Response.forwardUrl An.. 255 Значение URL для редиректа браузера  пользователя, вместо SUCCESS_URL или FAILURE_URL (предоставляет возможность использовать динамические ссылки)

 

Пример :

echo "MerchantID="1752493"\n";

echo "TerminalID="E7880293"\n";

echo "OrderID="ID0009992"\n";

echo "Currency="980"\n";

echo "TotalAmount="980"\n";

echo "XID="333333-4444444"\n";

echo "PurchaseTime="090929152500"\n";

echo "Response.action="\n";

echo "Response.reason="\n";

echo "Response.forwardUrl="\n";

 

В случае если магазин не получит callback, либо не знает о состоянии трансакции необходимо сделать запрос статуса, после чего принять решение о реверсировании трансакции, либо оказать услугу.

 

Status Request

 

Все данные передаются в Base64URL Encode, для кодировки можно использовать ресурс https://simplycalc.com/ .

Формирование посылки json объекта происходит на основании стандарта rfc7515

Алгоритм JWS (https://tools.ietf.org/html/rfc7515#page-10)

Формирование объекта json (прикреплен файл)

 

Пример успешный платеж,отмененный магазином

 

{"results":[{"tranCode":"503","approvalCode":"218258","rrn":825709353551,"comment":"Transaction was canceled by merchant","cardNumMasked":"516053******5703","tranTime":"2018-09-14 09:50:04.485","amount":1500000,"currency":980,"operType":"PURCHASE","actionCode":"000","installmentData":{"type":21,"paymentOption":"B","options":[{"number":2,"interestRate":12345,"fee":127777777777,"annualPercentageRate":55555,"firstAmount":123333333333,"subsequentAmount":121212121212,"totalAmountDue":252525252525},{"number":22,"interestRate":12345,"fee":123451242222,"annualPercentageRate":78787,"firstAmount":636363663633,"subsequentAmount":787878787777,"totalAmountDue":787878787877},{"number":77,"interestRate":78787,"fee":787878787777,"annualPercentageRate":45455,"firstAmount":454555555555,"subsequentAmount":496969696699,"totalAmountDue":898989898989},{"number":88,"interestRate":44444,"fee":111111111111,"annualPercentageRate":12122,"firstAmount":777777777777,"subsequentAmount":888888888888,"totalAmountDue":666666666666},{"number":55,"interestRate":88888,"fee":757585858555,"annualPercentageRate":33333,"firstAmount":636363333333,"subsequentAmount":111111111111,"totalAmountDue":363636363636},{"number":85,"interestRate":47474,"fee":858585888888,"annualPercentageRate":66666,"firstAmount":889898989999,"subsequentAmount":858585858588,"totalAmountDue":969696969696},{"number":25,"interestRate":25252,"fee":858585858588,"annualPercentageRate":36636,"firstAmount":636363633365,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":22,"interestRate":55555,"fee":123333333333,"annualPercentageRate":43434,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":22,"interestRate":12355,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":11,"interestRate":12335,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":44,"interestRate":33333,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":22,"interestRate":33333,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333}],
"receipt":"666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666"}},


{"tranCode":"000","approvalCode":"539321","rrn":825709353551,"comment":"Approved","cardNumMasked":"516053******5703","tranTime":"2018-09-14 09:50:44.631","amount":1500000,"currency":980,"operType":"REVERSAL","actionCode":"000","installmentData":{"type":21,"paymentOption":"B","options":[{"number":2,"interestRate":12345,"fee":127777777777,"annualPercentageRate":55555,"firstAmount":123333333333,"subsequentAmount":121212121212,"totalAmountDue":252525252525},{"number":22,"interestRate":12345,"fee":123451242222,"annualPercentageRate":78787,"firstAmount":636363663633,"subsequentAmount":787878787777,"totalAmountDue":787878787877},{"number":77,"interestRate":78787,"fee":787878787777,"annualPercentageRate":45455,"firstAmount":454555555555,"subsequentAmount":496969696699,"totalAmountDue":898989898989},{"number":88,"interestRate":44444,"fee":111111111111,"annualPercentageRate":12122,"firstAmount":777777777777,"subsequentAmount":888888888888,"totalAmountDue":666666666666},{"number":55,"interestRate":88888,"fee":757585858555,"annualPercentageRate":33333,"firstAmount":636363333333,"subsequentAmount":111111111111,"totalAmountDue":363636363636},{"number":85,"interestRate":47474,"fee":858585888888,"annualPercentageRate":66666,"firstAmount":889898989999,"subsequentAmount":858585858588,"totalAmountDue":969696969696},{"number":25,"interestRate":25252,"fee":858585858588,"annualPercentageRate":36636,"firstAmount":636363633365,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":22,"interestRate":55555,"fee":123333333333,"annualPercentageRate":43434,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":22,"interestRate":12355,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":11,"interestRate":12335,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":44,"interestRate":33333,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333},{"number":22,"interestRate":33333,"fee":123333333333,"annualPercentageRate":12333,"firstAmount":123333333333,"subsequentAmount":123333333333,"totalAmountDue":123333333333}],
"receipt":"666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666"}}]

 

Пример успешной трансакции с выбранным планом инсталлмента

{"results":[{"tranCode":"000","approvalCode":"417768","rrn":825617351845,"comment":"Approved","cardNumMasked":"540953******0002","tranTime":"2018-09-13 17:09:38.498","amount":1500000,"currency":980,"operType":"PURCHASE","actionCode":"000","installmentData":{"type":20,"paymentOption":"B","option":{"minNumber":5,"maxNumber":10,"interestRate":152,"fee":346,"annualPercentageRate":1824,"totalAmountDue":22392},"receipt":"Some text","selectedNumber":5}}