Интерфейс проведения оплаты через GooglePay
Google Pay™ – это простой и быстрый способ оплаты покупок в магазинах и миллионах онлайн-сервисов.
Подключение Google Pay через платежную страницу Paysoft
Для подключения необходимо:
Зарегистрироваться в системе Paysoft. Согласиться с условиями предоставления услуг Google Pay. При таком способе подключения нет необходимости проводить какую либо дополнительную интеграцию. Кнопка Google Pay будет отображаться на странице оплаты PaySoft.
Прямое подключение через Google Pay Api
Этот способ позволяет принимать платежи прямо у с себя на сайте или в приложении без перехода на платежную страницу.
- Документация Google Pay для веб-сайтов
- Контрольный список интеграции Google Pay для веб-сайтов
- Контрольный список интеграции Google Pay для Android
- Правила фирменного оформления Google Pay для Android
Вы инициируете запрос со своего сайта или приложения на получение зашифрованных платежных данных согласно документации GooglePay. Google Pay возвращает зашифрованные платежные данные после аутентификации покупателя, которые нужно отправить в запросе в систему Paysoft.
Параметры для настройки
allowPaymentMethods : CARD
tokenizationSpecification = { "type": "PAYMENT_GATEWAY"}
allowedCardNetworks = ['MASTERCARD', 'VISA'];
allowedCardAuthMethods = ['PAN_ONLY', 'CRYPTOGRAM_3DS'];
gateway = paysoft
gatewayMerchantId - Идентификатор магазина. Идентификатор Продавец может получить в Кабинете (https://merchant.paysoft.solutions).
Action - https://card.paysoft.solutions/api/xml/googlepay
Method - POST
Формат XML-запроса:
<Command>
<LMI_MERCHANT_ID></LMI_MERCHANT_ID>
<LMI_HASH></LMI_HASH>
<LMI_PAYMENT_NO></LMI_PAYMENT_NO>
<LMI_PAYMENT_AMOUNT></LMI_PAYMENT_AMOUNT>
<LMI_PAYMENT_DESC></LMI_PAYMENT_DESC>
<LMI_PAYMENT_TOKEN></LMI_PAYMENT_TOKEN>
<LMI_CARDNUMBER></LMI_CARDNUMBER>
<LMI_EXPIRE_YEAR></LMI_EXPIRE_YEAR>
<LMI_EXPIRE_MONTH></LMI_EXPIRE_MONTH>
<LMI_CAVV></LMI_CAVV>
<LMI_PAYER_IP></LMI_PAYER_IP>
<LMI_MERCHANT_URL></LMI_MERCHANT_URL>
</Command>
Если передаются зашифрованные платежные данные в параметре LMI_PAYMENT_TOKEN, параметры LMI_CARDNUMBER,LMI_EXPIRE_YEAR,LMI_EXPIRE_MONTH,LMI_CAVV не должны передаваться. Если платежные данные передаются в расшифрованном виде необходимо передать LMI_CARDNUMBER,LMI_EXPIRE_YEAR,LMI_EXPIRE_MONTH,LMI_CAVV, параметр LMI_PAYMENT_TOKEN в этом случае передавать не нужно.
Название | XML параметр | Обязательный? | Описание |
---|---|---|---|
Идентификатор Продавца | LMI_MERCHANT_ID | Да | Идентификатор торговой точки, на который будет принят платеж. Идентификатор Продавец может получить в Кабинете. |
Сумма платежа | LMI_PAYMENT_AMOUNT | Да | Сумма платежа, которую Продавец желает получить от Клиента. Сумма должна быть больше нуля, дробная часть отделяется точкой. |
Внутренний номер заказа в системе учета Продавца | LMI_PAYMENT_NO | Нет | В этом поле Продавец определяет номер заказа в соответствии со своей системой учета. Несмотря на то, что параметр не является обязательным, рекомендуется всегда задавать его, поскольку он нужен для корректной работы других интерфейсов. Желательно использовать уникальный номер для каждого платежа. Номер может содержать буквы английского алфавита, цифры и знак дефиса «-». Максимальная длина - 64 символов. |
Назначение платежа | LMI_PAYMENT_DESC | Да | Описание товара / работы / услуги, которые оплачиваются. Максимальная длина - 255 символов. Кодирование - UTF8. |
Контрольная подпись | LMI_HASH | Да | Контрольная подпись запроса формируется путем шифрования исходного текста XML-запроса с пустым значением LMI_HASH и секретного ключа SecretKey с помощью алгоритма, указанного в Кабинете продавца. Полученная подпись передается в теге LMI_HASH. Рекомендованным алгоритмом шифрования есть SHA256. |
Электронный адрес Клиента | LMI_PAYER_EMAIL | Нет** | Электронный адреса Клиента |
Идентификатор клиента на стороне Продавца | LMI_PAYER_ID | Нет | Может содержать буквы английского алфавита, цифры и знак дефиса «-». Максимальная длина 25 символов. |
Зашифрованные платежные данные, полученные от Google | LMI_PAYMENT_TOKEN | Нет | Значение из paymentData.paymentMethodData.tokenizationData.token полученное от Google |
PAN | LMI_CARDNUMBER | Да | paymentMethodDetails.pan |
Срок действия карты, год | LMI_EXPIRE_YEAR | Да | Год из параметра paymentMethodDetails.expirationYear, 2 цифры (YY из YYMMDD) |
Срок действия карты, месяц | LMI_EXPIRE_MONTH | Да | Месяц из параметр Год из параметра paymentMethodDetails.expirationMonth, 2 цифры (MM из YYMMDD) |
cryptogram | LMI_CAVV | Нет | Параметр paymentMethodDetails.cryptogram |
Расщепление платежа | LMI_SPLIT | Нет | Платеж с расщеплением суммы на нескольких получателей. В этом параметре указывается JSON массив с правилами расщепления платежа. При использовании параметра LMI_SPLIT происходит одно списание с клиента и несколько зачислений получателям. Пример JSON строки:[{"CompanyId": 1, "Amount": 20,"CompanyName":"","Description":"","EDRPOU":"","IBAN":""}, {"CompanyId": 2, "Amount": 12,"CompanyName":"","Description":"","EDRPOU":"","IBAN":""}] |
IP плательщика | LMI_PAYER_IP | Нет | IP адрес плательщика |
URL сайта | LMI_MERCHANT_URL | Нет | URL сайта, на котором производился платеж |
Идентификатор клиента на стороне Продавца | LMI_PAYER_ID | Нет | Может содержать буквы английского алфавита, цифры и знак дефиса «-». Максимальная длина 50 символов. |
Фамилия Клиента | LMI_PAYER_SURNAME | Нет*** | Фамилия Клиента |
Имя Клиента | LMI_PAYER_FIRSTNAME | Нет*** | Имя Клиента |
Отчество Клиента | LMI_PAYER_PATRONYMIC | Нет*** | Отчество Клиента |
Дата рождения Клиента | LMI_PAYER_BIRTHDAY | Нет*** | Дата рождения Клиента в формате ГГГГ-ММ-ДД |
ИНН Клиента | LMI_PAYER_TAX_ID | Нет*** | ИНН |
Номер телефона Клиента | LMI_PAYER_PHONE_NUMBER | Нет** | Номер телефона Клиента в формате 380xxxxxxxxx. |
Страна Клиента | LMI_PAYER_COUNTRY | Нет** | ISO 3166-1 alpha-2 |
Штат (только для США и Канады) | LMI_PAYER_STATE | Нет** | аббревиатура штата |
Город | LMI_PAYER_CITY | Нет** | Город |
Адрес | LMI_PAYER_ADDRESS | Нет** | Адрес |
Формат XML-ответа:
<Response>
<Retval></Retval>
<Retdesc></Retdesc>
<Retdata>
<LMI_SYS_PAYMENT_ID></LMI_SYS_PAYMENT_ID>
<Is3ds></Is3ds>
<action></action>
<PaReq></PaReq>
<MD></MD>
<ErrorMessage></ErrorMessage>
</Retdata>
</Response>
Название | Поле в XML | Описание |
---|---|---|
Код выполнения запроса | Retval | 0 - успешное выполнение команды; 1 - Некорректная подпись (HASH); 2 – некорректные параметры; 3 – Карта данного типа не может быть спроцессирована; 4,5,6,7 – внутренняя ошибка; 8 - в процессе віполнения |
Описание кода виполнения | Retdesc | |
Внутренний номер платежа в системе PaySoft | Retdata/LMI_SYS_PAYMENT_ID | Номер принятого платежа в системе PaySoft. |
Is3ds | флаг вовлеченности карты в 3D-Secure (0 – карта не требует проверки 3DSecure; 1 – карта нуждается в проверке 3D-Secure). | |
action | URL для перенаправления клиента. Отображается только при Retval = 0 и Retdata / Is3ds = 1 | |
PaReq | параметры запроса при 3D-Secure. Отображается только при Retval = 0 и Retdata / Is3ds = 1 | |
MD | параметры запроса при 3D-Secure. Отображается только при Retval = 0 и Retdata / Is3ds = 1 | |
ErrorMessage | дополнительная информация об ошибках |
Если в ответ было получено значение поля Retdata/Is3ds = 1, это означает, что карта требует проверки по технологии 3D-Secure. Для проведения такой проверки необходимо сформировать и отправить html-форму методом POST по указанному в поле Retdata/action адресу.
Внимание! Вы не можете проигнорировать тот факт, что карта вовлечена в 3D-Secure. Если в ответе на paymentCreate был получен Is3ds = 1, то вы не можете пропустить данный шаг (авторизацию карты по 3D-Secure) и сразу перейти к команде paymentConfirm.
Пример HTML формы, содержащий все необходимые поля:
<form method="POST" action="action">
<input type="hidden" name="PaReq" value="%PaReq%">
<input type="hidden" name="MD" value="%MD%">
<input type="hidden" name="TermUrl" value="%TERMURL%">
</form>
Параметры html-формы:
• %ACTION% - значение поля Retdata/action из ответа на запрос
• %PaReq%- значение поля Retdata/PaReq из ответа на запрос
• %MD% - значение поля Retdata/MD из ответа на запрос
• %TERMURL% - URL адрес Вашей страницы, на которую вернется клиент после проведения проверки 3D-Secure. Может содержать GET-параметры.
После проведения проверки 3DSecure клиент будет перенаправлен на указанный в TermUrl адрес с помощью POST-запроса. Среди параметров этого запроса будут присутствовать PaRes и MD.