Apple Pay

Въведение

Преди да приемате плащания чрез Apple Pay, изпълнете действията, представени в разделите по-долу. След изпълнение на указаните действия можете да пристъпите към доработка на вашето мобилно приложение за взаимодействие с Apple Pay (описанието на техническите подробности на такива доработки се намира извън рамките на настоящия документ, за повече информация вж. документацията на Apple Pay).

Създаване на Merchant ID

За да създадете своя Merchant ID (Идентификатор на продавач), изпълнете следните действия.

  1. В личния кабинет Apple Member Center отидете на линка Certificates, Identifiers & Profiles.
  2. На показалата се страница в секцията Identifiers изберете Merchant IDs.
  3. На показалата се страница натиснете на иконата + в горния десен ъгъл.
  4. В полетата Merchant ID Descritpion и Identifier въведете описанието на своя идентификатор на продавач Apple и самия идентификатор съответно.
  5. Натиснете Continue.
  6. На показалата се страница проверете въведените данни и натиснете Register.
  7. На показалата се страница натиснете Done.

Регистрация на сертификат

За да приемате плащания чрез Apple Pay, трябва да имате ключова двойка и сертификат за публичен ключ, съответстващ на тази ключова двойка. Необходимите действия в личния кабинет зависят от това дали имате ключова двойка и съответстващ ѝ сертификат или не.

Начални условия Необходими стъпки
Нямате ключова двойка и сертификат за публичен ключ
  1. Създайте ключова двойка
  2. Изтеглете от личния кабинет заявка за подпис на сертификат
  3. Подпишете сертификата в Apple Pay

Впоследствие ще ви бъдат достъпни следните действия.
Имате ключова двойка и регистриран в Apple Pay сертификат за публичен ключ Качете файл, съдържащ ключовата двойка, в личния кабинет на платежната бавалка
Впоследствие ще ви бъдат достъпни следните действия.

Създаване на нов сертификат

За да създадете ключова двойка, изпълнете следните действия.

  1. Влезте в личния кабинет и изберете раздел Сертификати в лявото странично меню.
  2. Изберете Apple Pay.
  3. Натиснете Създай двойка ключове.
    Ще се покаже следният прозорец.
  4. Попълнете необходимите полета (вж. таблицата по-долу).
Параметър Описание

Алгоритъм за криптиране

Този радио бутон позволява да изберете един от двата криптографски алгоритъма, които ще бъдат използвани за генериране на двойка ключове.
  • RSA - алгоритъм RSA.
  • ECC - криптография на елиптични криви.

Country (C)

Въведете двубуквения код на страната, в която се намира вашата организация.

Locality Name (L)

Въведете името на населеното място, в което се намира вашата организация.

Organization Name (O)

Въведете името на вашата организация.

Apple ID

Apple ID на продавача.

State Name (ST)

Въведете името на региона, в който се намира вашата организация.

Common Name (CN)

Въведете пълното доменно име на вашия сайт, например, test.com.

Organization Unit (OU)

Въведете името на подразделението на вашата организация.

Създадената двойка ключове ще се показва в раздел Apple Pay (вж. фигурата по-долу).

Преминете към изтегляне на CSR.

Зареждане на предварително създаден сертификат

За да заредите съществуваща ключова двойка, изпълнете следните действия.

  1. Влезте в личния кабинет и изберете раздел Сертификати в лявото странично меню.
  2. Изберете Apple Pay.
  3. В секцията Apple Identity натиснете Добавяне на ключ.
    Ще се покаже следният прозорец.
  4. Попълнете полетата:
    • Apple ID - Посочете Merchant Apple ID.
    • Парола - Въведете паролата, защитаваща съдържанието на файла PKCS12.
    • Домейн по подразбиране - въведете домейна на вашия интернет магазин.
  5. Плъзнете файла на ключовата двойка в предназначената за това област.
    Той ще се покаже в списъка.
  6. Натиснете Потвърждаване. Импортираният сертификат ще се покаже в списъка Apple Identity.

Нататък със сертификата са достъпни следните действия.

Експорт на заявка за подпис на сертификат (CSR)

За да изтеглите заявка за подпис на сертификат, изпълнете следните действия.

  1. Влезте в личния кабинет и изберете в лявото странично меню (раздел Сертификати)
  2. Изберете нужната платежна услуга (Apple Pay, Google Pay или Samsung Pay).
  3. Натиснете върху трите точки в реда с нужния сертификат и изберете Изтегляне на ключ (вж. изображението по-долу).

    Ще се покаже прозорец за запазване на файл.
  4. Посочете пътя за запазване на файла или го запазете в папката по подразбиране.

Също така са ви достъпни следните действия.

Редактиране на Merchant ID

За да промените своя Apple Merchant ID, изпълнете следните действия.

  1. Влезте в личния кабинет и изберете раздел Сертификати в лявото странично меню.
  2. Изберете Apple Pay.
  3. Натиснете и изберете Редактиране (вж. фигурата по-долу).

    Ще се покаже следният прозорец.
  4. Редактирайте полето Apple ID и натиснете Потвърди.

Деактивиране на сертификата

За да забраните използването на ключа, изпълнете следните действия.

Моля, предоставете текста, който трябва да бъде преведен.

  1. Отидете в личния кабинет и изберете в лявото странично меню (раздел Сертификати)
  2. Изберете нужната платежна услуга (Apple Pay, Google Pay или Samsung Pay).
  3. Натиснете на иконката в реда на нужния сертификат и изберете Забрани използването (вж. изображението по-долу).

    Ще се покаже следният прозорец.
  4. Натиснете Потвърди.

Показването на сертификат, чието използване е забранено, зависи от филтъра Разрешен, разположен в горната част на раздел Сертификати (вж. изображението по-долу).

Параметър Описание
Само разрешени Сертификати, чието използване е забранено, не се показват в списъка със сертификати.
Всички позиции Сертификати, чието използване е забранено, се показват в списъка, но в колоната Разрешен срещу този сертификат стои Не (вж. изображението по-долу).

Действия, необходими за web-интеграция

За да осигурите възможност за web-интеграция, изпълнете следните действия.

  1. Регистрирайте и потвърдете вашия домейн в Apple.
    • Ако страницата за плащане се намира от ваша страна, регистрирайте вашия домейн.
    • Ако страницата за плащане се намира от страната на платежния шлюз, посочете домейна на платежния шлюз.
  2. Създайте сертификат за идентификация на продавача, преобразувайте го в .pem файл и го качете на вашия сървър.

Този сертификат се използва за автентификация на връзките към сървърите на Apple Pay.

Регистрация на домейн в Apple

За да регистрирате сертификата в Apple, изпълнете следните действия.

  1. Влезте в своя акаунт за разработчик в Apple на страницата https://developer.apple.com.
  2. Следвайте инструкциите на помощта на акаунта за разработчик в Apple, за да регистрирате домейна.

На стъпката за избор на идентификатор на продавача, изберете създадения по-рано идентификатор на продавача.

Схема на интеграция

sequenceDiagram participant Платец participant Ресурс на продавача participant Система Apple Pay participant Платежна врата Платец->>Ресурс на продавача: 1. Избор на плащане чрез Apple Pay Ресурс на продавача->>Система Apple Pay: 2. Изпращане на данни за плащането Система Apple Pay->>Система Apple Pay: 3. Създаване на обект PKPaymentToken с PaymentData Система Apple Pay-->>Ресурс на продавача: 4. Изпращане на данни за плащането Ресурс на продавача->>Ресурс на продавача: 5. Извличане на PaymentData и кодиране на съдържанието в Base64 Ресурс на продавача->>Платежна врата: 6. Заявка за плащане със стойност PaymentData, кодирана в Base64 Платежна врата->>Платежна врата: 7. Декриптиране на платежните данни и плащане Платежна врата-->>Ресурс на продавача: 8. Изпращане на отговор с резултат от плащането Ресурс на продавача-->>Платец: 9. Показване на резултата
  1. Потребителят в мобилното приложение избира вариант за плащане с помощта на Apple Pay.
  2. Данните за плащането се насочват за обработка в системата Apple Pay.
  3. За обработка на данните за плащането в системата Apple Pay се създава обект PKPaymentToken Object, който съдържа свойство paymentData (тук и по-нататък вж. документация Apple Pay).
  4. Apply Pay насочва към продавача (мобилното приложение) отговор.
  5. Продавачът извлича от получения обект PKPaymentToken Object свойство paymentData и кодира съдържанието му в Base64.
  6. Продавачът създава заявка за плащане, съдържаща включително свойство paymentData, получено от отговора на системата Apple Pay и кодирано в Base64, и го изпраща за обработка в платежната врата (вж. заявка за плащане чрез Apple Pay).
  7. Платежната система обработва заявката.
  8. Платежната система връща отговор с резултата.
  9. Мобилното приложение показва на потребителя резултата от плащането.

Връзки към справочна информация

Връзка Описание
Apple Pay Раздел от сайта apple.com, съдържащ обща информация за Apple Pay.
Developer Apple Pay Раздел от сайта apple.com, предназначен за разработчици и съдържащ връзки към различни документи и справочна информация, касаеща Apple Pay.
Apple Pay Sandbox Раздел от сайта apple.com, съдържащ информация за тестване.
Apple Pay Guide Раздел от сайта apple.com, съдържащ справочник по програмиране.
Apple Pay Guidelines Раздел от справочното ръководство за App Store, посветен на приложенията Apple Pay..
Apple Pay API Справочник API (програмен интерфейс за приложения).
Структура PKPaymentToken Object Описание на структурата на обекта PKPaymentToken Object.
Login page Страница за вход в средата за разработка.
Getting Started with Apple Pay Документ във формат PDF, съдържащ общи сведения за Apple Pay и връзки към справочна информация.
Apple Pay Marketing Guidelines Описание как да добавите бутон Apple Pay на своя сайт.

Google Pay

Въведение

Съществуват няколко варианта за реализация на Google Pay™. Тези варианти поддържат методи за автентификация CRYPTOGRAM_3DS и PAN_ONLY.

Начин на плащане Описание
От мобилно приложение Плащането се извършва от мобилно приложение с мобилно устройство на потребителя. В този сценарий приложението заявява криптирани данни от Google Pay. Тези данни трябва да бъдат изпратени в платежния шлюз.
За използване на този вариант е необходимо да се извърши интеграция на приложението с Google Pay API.
От уеб-страница, като платежната страница е разположена на ваша страна Плащането се извършва от уеб-страница. Потребителят избира плащане в сайта на продавача, като продавачът заявява криптирани платежни данни от системата Google Pay. След това продавачът трябва да изпрати тези данни в платежния шлюз.
За използване на този вариант е необходимо да се извърши интеграция на уеб-сайта с Google Pay API.
Плащане на платежна страница, която е разположена от страна на платежния шлюз Плащането се извършва от уеб-страница. Потребителят избира плащане в сайта на продавача, след което продавачът го пренасочва към платежната страница от страна на платежния шлюз. В този случай продавачът пренасочва купувача към платежната страница от страна на платежния шлюз и трябва да осигури спазването на следните изисквания на Google Pay:

Интеграция с Google Pay API

Ако искате да използвате Google Pay като платежен метод на вашата собствена платежна страница, трябва да интегрирате вашето Android приложение или уебсайт с Google Pay API чрез Google Pay & Wallet Console. Следвайте инструкцията: Google Pay API & Google Pay & Wallet Console.

На стъпка 4 от тази инструкция (за Android app приложение или уебсайт съответно) при преминаване през ръководството за потребителя укажете тип токенизация 'PAYMENT_GATEWAY':

const tokenizationSpecification = {
  type: 'PAYMENT_GATEWAY',
  parameters: {
    'gateway': 'example',
    'gatewayMerchantId': 'exampleGatewayMerchantId'
  }
};

и заменете example и exampleGatewayMerchantId със стойностите за платежния доставчик BPC от таблицата на платежните доставчици:

В резултат от интеграцията с Google Pay API ще ви бъде присвоен Google Merchant ID, който ще се показва в горния десен ъгъл на Google Pay & Wallet Console.

Схеми за интеграция

Плащане в мобилно приложение

sequenceDiagram participant Клиент participant Приложение participant Google Pay participant Платежен шлюз Клиент->>Приложение: 1. Избор на плащане Google Pay Приложение->Google Pay: 2. Заявка за маскирани данни на карта Google Pay-->>Приложение: 3. Отговор на заявката Приложение-->>Клиент: 4. Показване на маскирани данни на карта Клиент->>Приложение: 5. Потвърждение на плащане Приложение->>Google Pay: 6. Заявка за шифровани данни на карта. Google Pay->>Google Pay: 7. Шифроване на данни Google Pay-->>Приложение: 8. Връщане на шифровани платежни данни Приложение->>Платежен шлюз: 9. Заявка за плащане Google Pay Платежен шлюз->>Платежен шлюз: 10. Дешифриране на платежни данни и плащане Платежен шлюз-->>Приложение: 11. Резултат от плащане Приложение-->>Клиент: 12. Резултат от плащане
  1. Клиентът избира плащане чрез Google Pay.
  2. Приложението заявява от Google Pay информация за маскирани картови данни.
  3. Google Pay връща в приложението маскирани картови данни.
  4. Приложението показва на клиента маскирани данни на карта, добавена в Google Pay.
  5. Клиентът потвърждава плащане с помощта на добавената в Google Pay карта.
  6. Приложението заявява от Google Pay шифровани картови данни.
  7. Google Pay шифрова данните, използвайки публичния ключ на търговеца.
  8. Google Pay връща в приложението шифровани данни за плащането.
  9. Приложението изпраща заявка за плащане Google Pay до платежния шлюз, заявката съдържа токен, получен от Google Pay.
  10. Платежният шлюз дешифрова получения токен и извършва плащането.
  11. Платежният шлюз връща резултата от плащането в приложението.
  12. Приложението показва резултата от плащането на клиента.

Плащане на платежна страница, която е разположена от страната на интернет магазина

sequenceDiagram participant Клиент participant Продавач participant Google Pay participant Платежен шлюз Клиент->>Продавач: 1. Избор на плащане Google Pay Продавач->>Google Pay: 2. Заявка за плащане Google Pay Google Pay->>Google Pay: 3. Формиране на шифровани данни за плащане Google Pay-->>Продавач:4 . Предаване на шифровани данни Продавач->>Платежен шлюз: 5. Заявка за плащане Google Pay Платежен шлюз->>Платежен шлюз: 6. Дешифриране на данни и плащане Платежен шлюз-->>Продавач: 7. Резултат от плащане Продавач-->>Клиент: 8. Резултат от плащане
  1. Клиентът формира поръчка на сайта на интернет магазина и избира начин на плащане Google Pay.
  2. Системата на интернет магазина формира заявка за плащане в Google Pay.
  3. Системата Google Pay формира шифровани платежни данни.
  4. Системата на интернет магазина получава шифровани платежни данни.
  5. Интернет магазинът формира заявка за плащане чрез Google Pay, заявката съдържа получените шифровани платежни данни.
  6. Платежният шлюз дешифрова получените данни и извършва плащането.
  7. Платежният шлюз връща резултата от плащането в интернет магазина.
  8. Резултатът от плащането се показва на клиента.

Плащане на платежна страница, която е разположена от страната на платежния шлюз

sequenceDiagram participant Клиент participant Продавач participant Платежен шлюз participant Google Pay Клиент->>Продавач: 1. Формиране на поръчка Продавач->>Платежен шлюз: 2. Регистрация на поръчка Платежен шлюз-->>Продавач: 3. Номер на поръчка и URL за пренасочване Продавач-->>Клиент: 4. Пренасочване на клиента Клиент->>Платежен шлюз: 5. Преминаване към получения URL Платежен шлюз->>Платежен шлюз: 6. Показване на платежна форма Клиент->>Платежен шлюз: 7. Избор на плащане чрез Google Pay Платежен шлюз->Google Pay: 8. Обмен на данни Платежен шлюз->>Платежен шлюз: 9. Провеждане на плащане Платежен шлюз->>Клиент: 10. Пренасочване към финална страница. Клиент->>Платежен шлюз: 11. Отваряне на финална страница Платежен шлюз->>Клиент: 12. Показване на статуса на клиента

Ако платежната страница е разположена от страна на Google Pay, плащането се извършва по следната схема.

  1. Клиентът формира поръчка на сайта на търговеца.
  2. Търговецът регистрира поръчката в платежния шлюз.
  3. Платежният шлюз връща уникален номер на поръчката в системата на платежния шлюз и URL-адрес, към който трябва да се пренасочи клиентът.
  4. Системата на магазина пренасочва браузъра на клиента към URL-адреса, получен на стъпка 3.
  5. Браузърът на клиента отваря URL-адреса.
  6. Клиентът получава платежна форма.
  7. Клиентът избира начин на плащане Google Pay и потвърждава избора си.
  8. Извършва се обмен на данни между платежния шлюз и системата Google Pay - платежният шлюз получава платежните данни.
  9. Платежният шлюз извършва плащането.
  10. Клиентът се пренасочва към финалната страница на магазина.
  11. Браузърът на клиента отваря финалната страница.
  12. Показва се статусът на плащането.

Плащане Google Pay с използване на 3DS2.

При плащане Google Pay с помощта на метода /google/payment.do или google/paymentDirect.do може да се използва удостоверяване на клиента по протокола 3DS2. В този случай за всяка транзакция е необходимо да изпратите в платежния шлюз заявка за плащане два пъти. Изпращането на първата заявка инициира процедурата за удостоверяване по протокола 3DS2, а изпращането на втората — продължава процедурата с данните, получени от сървъра 3DS (допълнителен компонент, който взаимодейства с платежните системи и ACS).

Ако клиентът след удостоверяването се пренасочи към страницата на магазина, е необходимо да завършите плащането, изпращайки заявка finish3dsVer2Payment.do.

Схема 3DS2 с използване на google/paymentDirect.do.

По-долу е приведена схемата за плащане с помощта на заявката google/paymentDirect.do (разшифроване на токена от ваша страна) с използване на 3DS2.

sequenceDiagram autonumber participant Client as Клиент participant Merchant as Търговец participant Google Pay participant PG as ПШ participant 3DS server participant ACS Client ->> Merchant: Избор на плащане Google Pay Merchant ->> Google Pay: Заявка за списък с карти Google Pay -->> Merchant: Списък маскирани карти Merchant ->> Google Pay: Избор на карта за плащане Google Pay -->> Merchant: Криптиран paymentToken Merchant ->> Merchant: Разшифроване на токена Merchant ->> PG: първа заявка google/paymentDirect.do
(разшифрован токен в Base64) PG -->> Merchant: Отговор на първата заявка Merchant ->> 3DS server: извикване на скрит iframe (threeDSMethodURLServer) opt В отговора threeDSMethodURL Merchant ->> ACS: Извикване на скрит iframe (threeDSMethodURL) end Merchant ->> PG: Втора заявка google/paymentDirect.do PG -->> Merchant: Отговор на втората заявка opt Необходимо е пренасочване към ACS Merchant ->> ACS: CReq (Challenge request) ACS -->> Client: HTML-форма за удостоверяване Client ->> ACS: Потвърждение на автентичността ACS -->> Client: Резултат от проверката и пренасочване в магазина Merchant ->> PG: finish3dsVer2Payment.do PG -->> Merchant: Отговор на заявката end Merchant ->> PG: Заявка за статуса на поръчката PG -->> Merchant: Отговор на заявката за статус Merchant -->> Client: Показване на резултата
  1. Клиентът в мобилното приложение или на сайта избира плащане с помощта на Google Pay.
  2. Приложението запитва в Google Pay списъка с картите на клиента.
  3. Google Pay предава в приложението списък с маскираните карти на клиента.
  4. Клиентът избира карта, с която ще плаща. Тези данни се изпращат в Google Pay.
  5. Google Pay предава в приложението криптиран paymentToken.
  6. Търговецът разкриптира paymentToken.
  7. Плащане на поръчка - етап1. Търговецът предава разкриптираните данни paymentToken в платежния шлюз, изпращайки заявка google/paymentDirect.do.
  8. Платежният шлюз проверява на сървъра 3DS възможността за провеждане на автентификация на клиента по протокол 3DS2 и изпраща отговор. В отговора, между другото, се връщат следните параметри:
    • is3DSVer2 - флаг за възможността за провеждане на автентификация 3DSv2 (true/false),
    • threeDSServerTransId - идентификатор на транзакцията, присвоен от сървъра 3DS,
    • threeDSMethodURLServer - адрес на сървъра 3DS за събиране на данни за браузъра,
    • threeDSMethodURL - (незадължително) адрес на сървъра ACS за събиране на данни за браузъра,
    • threeDSMethodDataPacked - (незадължително) данни за събиране на данни за браузъра в ACS.
  9. Търговецът в отделен iframe с метод POST извиква threeDSMethodURLServer, използвайки стойността, получена от отговора на заявката за плащане на поръчката. Това позволява на сървъра 3DS да събере данни за браузъра на клиента.
  10. (Незадължителна стъпка) Ако в отговора на заявката за плащане на поръчката са дошли параметри threeDSMethodURL и threeDSMethodDataPacked, то търговецът в отделен iframe с метод POST извиква threeDSMethodURL. В този метод е необходимо да се предаде стойността, получена от параметъра threeDSMethodDataPacked, получен в отговора на заявката за плащане на поръчката. При това трябва да се предаде в параметъра, който се нарича threeDSMethodData. Това позволява на ACS да събере данни за браузъра на клиента.
  11. Плащане на поръчка - етап 2. Търговецът отново изпраща заявка google/paymentDirect.do, за да завърши плащането на поръчката (или да осъществи превода на паричните средства). При това е необходимо да се предаде параметъра threeDSServerTransId - идентификатор на транзакцията, който е създаден от сървъра 3DS и е върнат на стъпка 8. Освен това, за пренасочване на клиента към страницата на магазина след провеждането на плащането на поръчката може да се предаде връзката за пренасочване в параметъра threeDSVer2FinishUrl.
  12. Платежният шлюз взаимодейства със 3DS сървъра и ACS, за да изясни дали е необходимо клиентът да преминава автентификация в ACS, и изпраща отговор на заявката за плащане. Ако на клиента е необходимо да преминава автентификация в ACS, в отговора се връща acsUrl – URL за пренасочване към ACS, както и packedCReq – опаковани данни за challenge request. Ако не е необходимо – връща се отговор за успешно завършване на плащането.
  13. Ако на клиента не е необходимо да преминава автентификация в ACS, преминете към стъпка 19.

    Ако на клиента е необходимо да преминава автентификация в ACS, от платежната страница се извършва пренасочване към acsUrl с параметър creq=packedCReq, получен на стъпка 12.

  14. ACS насочва към клиента HTML-форма за преминаване на проверка за автентичност.

  15. Клиентът преминава проверка за автентичност

  16. ACS пренасочва клиента към страницата на магазина.

  17. За завършване на транзакцията търговецът изпраща в платежния шлюз заявка finish3dsVer2Payment.do, предавайки параметъра threeDSServerTransId - идентификатор на транзакцията, който е създаден от сървъра 3DS и е върнат на стъпка 8.

  18. Платежният шлюз изпраща на търговеца отговор на направената заявка.

  19. Търговецът прави разширена заявка за статус на поръчката getOrderStatusExtended.do в платежния шлюз, за да изясни състоянието на поръчката.

  20. Платежният шлюз изпраща отговор на направената заявка.

  21. Търговецът показва на клиента страница с резултата.

Схема 3DS2 с използване на google/payment.do.

По-долу е приведена схемата за плащане с помощта на заявка /google/payment.do (разкриптиране на токена от страната на Платежния шлюз) с използване на 3DS2.

sequenceDiagram autonumber participant Client as Клиент participant Merchant as Търговец participant Google Pay participant PG as ПШ participant 3DS server participant ACS Client ->> Merchant: Избор на плащане Google Pay Merchant ->> Google Pay: Заявка за маскирани данни на карта Google Pay -->> Merchant: Връщане на маскирани данни на карта Merchant -->> Client: Показване на маскирани данни на карта Client ->> Merchant: Потвърждение на плащането Merchant ->> Google Pay: Заявка за шифровани данни на карта Google Pay ->> Google Pay: Шифроване на данни Google Pay -->> Merchant: Шифровани данни Merchant ->> PG: Първа заявка google/payment.do
(шифрован токен в Base64) PG ->> PG: Разшифроване на токена PG -->> Merchant: Отговор на първата заявка Merchant ->> 3DS server: Извикване на скрит iframe (threeDSMethodURLServer) opt В отговора threeDSMethodURL Merchant ->> ACS: Извикване на скрит iframe (threeDSMethodURL) end Merchant ->> PG: Втора заявка google/payment.do PG -->> Merchant: Отговор на втората заявка opt Необходимо е пренасочване към ACS Merchant ->> ACS: CReq (Challenge request) ACS -->> Client: HTML-форма за удостоверяване Client ->> ACS: Потвърждение на автентичността ACS -->> Client: Резултат от проверката и пренасочване в магазина Merchant ->> PG: finish3dsVer2Payment.do PG -->> Merchant: Отговор на заявката end Merchant ->> PG: Заявка за статус на поръчката PG -->> Merchant: Отговор на заявката за статус Merchant -->> Client: Показване на резултата
  1. Клиентът в мобилното приложение или на сайта избира плащане с помощта на Google Pay.
  2. Приложението заявява в Google Pay маскирани данни на картата на клиента.
  3. Google Pay предава в приложението маскирани данни на картата на клиента.
  4. Търговецът показва на клиента данните на картата.
  5. Клиентът потвърждава плащането.
  6. Търговецът заявява от Google Pay шифровани данни на картата.
  7. Google Pay шифрова данните на картата.
  8. Google Pay връща на търговеца шифровани данни на картата (токен).
  9. Плащане на поръчката - етап1. Продавачът предава разшифрованите данни paymentToken в платежния шлюз, изпращайки заявка /google/payment.do.
  10. Платежният шлюз разшифрова токена.
  11. Платежният шлюз проверява на сървъра 3DS възможността за провеждане на удостоверяване на клиента по протокол 3DS2 и изпраща отговор. В отговора, наред с другото, се връщат следните параметри:
    • is3DSVer2 - флаг за възможността за провеждане на удостоверяване 3DSv2 (true/false),
    • threeDSServerTransId - идентификатор на транзакцията, присвоен от сървъра 3DS,
    • threeDSMethodURLServer - адрес на сървъра 3DS за събиране на данни за браузъра,
    • threeDSMethodURL - (незадължително) адрес на сървъра ACS за събиране на данни за браузъра,
    • threeDSMethodDataPacked - (незадължително) данни за събиране на данни за браузъра в ACS.
  12. Търговецът в отделен iframe с метод POST извиква threeDSMethodURLServer, използвайки стойността, получена от отговора на заявката за плащане на поръчката. Това позволява на сървъра 3DS да събере данни за браузъра на клиента.
  13. (Незадължителна стъпка) Ако в отговора на заявката за плащане на поръчката са дошли параметрите threeDSMethodURL и threeDSMethodDataPacked, то търговецът в отделен iframe с метод POST извиква threeDSMethodURL. В този метод е необходимо да се предаде стойността, получена от параметъра threeDSMethodDataPacked, получен в отговора на заявката за плащане на поръчката. При това трябва да се предаде в параметъра, който се нарича threeDSMethodData. Това позволява на ACS да събере данни за браузъра на клиента.
  14. Плащане на поръчката - етап 2. Търговецът повторно изпраща заявка /google/payment.do, за да завърши плащането на поръчката (или да осъществи превода на парични средства). При това е необходимо да се предаде параметърът threeDSServerTransId - идентификатор на транзакцията, който е създаден от сървъра 3DS и е върнат на стъпка 11. Освен това, за препращане на клиента към страницата на магазина след провеждане на плащането на поръчката може да се предаде връзка за препращане в параметъра threeDSVer2FinishUrl.
  15. Платежният шлюз взаимодейства с 3DS сървъра и ACS, за да разбере дали клиентът трябва да премине аутентификация в ACS, и изпраща отговор на заявката за плащане. Ако клиентът трябва да премине аутентификация в ACS, в отговора се връща acsUrl – URL за пренасочване към ACS, както и packedCReq – опаковани данни за challenge request. Ако не е необходимо – връща се отговор за успешно завършване на плащането.
  16. Ако клиентът не трябва да премине аутентификация в ACS, преминете към стъпка 22.

    Ако клиентът трябва да премине аутентификация в ACS, от платежната страница се извършва пренасочване към acsUrl с параметър creq=packedCReq, получен на стъпка 15.

  17. ACS насочва към клиента HTML-форма за преминаване на проверка за автентичност.

  18. Клиентът преминава проверка за автентичност

  19. ACS пренасочва клиента към страницата на магазина.

  20. За завършване на транзакцията търговецът изпраща в платежния шлюз заявка finish3dsVer2Payment.do, предавайки параметър threeDSServerTransId - идентификатор на транзакцията, който беше създаден от 3DS сървъра и върнат на стъпка 11.

  21. Платежният шлюз изпраща на търговеца отговор на направената заявка.

  22. Търговецът прави разширена заявка за статуса на поръчката getOrderStatusExtended.do в платежния шлюз, за да разбере състоянието на поръчката.

  23. Платежният шлюз изпраща отговор на направената заявка.

  24. Търговецът показва на клиента страница с резултата.

Изисквания към платежната страница от страна на продавача

Платежната страница от страна на продавача трябва да отговаря на следните изисквания.

paymentsClient.isReadyToPay({allowedPaymentMethods: allowedPaymentMethods})
    .then(function(response) {
      if (response.result) {
        // in this case the button should be displayed
        addGooglePayButton();
      }
    })
    .catch(function(err) {
      // show error in developer console for debugging
      console.error(err);
    });

function addGooglePayButton() {
  var button = document.createElement('button');
  button.className = 'google-pay';
  button.appendChild(document.createTextNode('Google Pay'));
  sbutton.addEventListener('click', onGooglePaymentButtonClicked);
  document.getElementById('container').appendChild(button);
}
var paymentsClient =
    new google.payments.api.PaymentsClient({environment: 'TEST'});
function getGooglePaymentDataConfiguration() {
  return {
    merchantId: '00000000000000000000', //constant for the bank's RBE; for the environment: 'TEST' is not indicated
    transactionInfo = {
        totalPriceStatus: 'FINAL',
        totalPrice: '123.45', //amount in major units
        currencyCode: 'BGN' //ISO 4217
    },
    paymentMethodTokenizationParameters: {
        tokenizationType: 'PAYMENT_GATEWAY',
        parameters: {
            gateway: 'some-bank', //constant for the bank's RBE
            gatewayMerchantId: 'exampleGatewayMerchantId' //merchant identifier in the payment gateway
        }
    },
    allowedPaymentMethods: ['CARD', 'TOKENIZED_CARD'],
    cardRequirements: {
        allowedCardNetworks: ['MASTERCARD', 'VISA']
    }
  };
}
var paymentDataRequest = getGooglePaymentDataConfiguration();
paymentsClient.loadPaymentData(paymentDataRequest).then(function(paymentData){
  processPayment(paymentData);
}).catch(function(err){
  // show error in developer console for debugging
  console.error(err);
});

Използване на индивидуални ключове

Ако по някаква причина не искате да използвате BPC като платежен доставчик и искате да се интегрирате с Google Pay директно, можете да използвате индивидуална двойка ключове за разшифроване на криптираните платежни данни от Google Pay. Тази двойка ключове може да бъде генерирана в Merchant Portal, а след това да се качи в акаунта на Google.

Създаване на ключова двойка

За да създадете ключова двойка, изпълнете следните действия.

  1. Влезте в личния кабинет и изберете раздел Сертификати в лявото странично меню.
  2. Избор на плащане Google Pay.
  3. Натиснете Създаване на двойка ключове.
    Ще се покаже следният прозорец.
  4. В полето Google ID посочете вашия идентификатор Google Merchant ID, получен по време на интеграция с Google API, а след това натиснете Потвърждаване.
  5. Създадената двойка ключове ще се показва в раздел Google Pay (вж. фигурата по-долу).

Изтегляне на публичен ключ

За да изтеглите отворен ключ, изпълнете следните действия.

  1. Влезте в личния кабинет и изберете раздел Сертификати в лявото странично меню.
  2. Избор на плащане Google Pay.
  3. Натиснете срещу нужния сертификат и изберете Изтегли ключ (вж. изображението по-долу).
  4. В диалога Запази файл изберете пътя, по който ще бъде запазен файлът, или го запазете в папката по подразбиране.

Също така са налични следните действия.

Редактиране на Google ID

За да промените своя Google ID, изпълнете следните действия.

  1. Влезте в личния кабинет и изберете раздел Сертификати в лявото странично меню.
  2. Избор на плащане Google Pay.
  3. Натиснете до вашия сертификат и изберете Редактиране (вж. фигурата по-долу).

    Ще се покаже следният прозорец.
  4. Редактирайте стойността в полето Google ID и натиснете Потвърди.

Деактивиране на сертификат

За да забраните използването на ключа, изпълнете следните действия.

Моля, предоставете текста, който трябва да бъде преведен.

  1. Отидете в личния кабинет и изберете в лявото странично меню (раздел Сертификати)
  2. Изберете нужната платежна услуга (Apple Pay, Google Pay или Samsung Pay).
  3. Натиснете на иконката в реда на нужния сертификат и изберете Забрани използването (вж. изображението по-долу).

    Ще се покаже следният прозорец.
  4. Натиснете Потвърди.

Показването на сертификат, чието използване е забранено, зависи от филтъра Разрешен, разположен в горната част на раздел Сертификати (вж. изображението по-долу).

Параметър Описание
Само разрешени Сертификати, чието използване е забранено, не се показват в списъка със сертификати.
Всички позиции Сертификати, чието използване е забранено, се показват в списъка, но в колоната Разрешен срещу този сертификат стои Не (вж. изображението по-долу).
:
eCommerce API V1