SDK для Go
SDK для Go — это набор средств разработки для взаимодействия веб-сервисов, разработанных на Go, с платёжной платформой ecommpay при проведении оплат через Payment Page. В этом разделе представлена информация о работе с SDK для Go с примерами кода на языке программирования Go.
SDK для Go совместим с Go версии 1.8 или выше и доступен для загрузки на GitHub по следующей ссылке: https://github.com/ITECOMMPAY/paymentpage-sdk-go.
Возможности
- подписывать набор параметров платежа и формировать запрос для вызова Payment Page,
- проверять подлинность оповещений от ecommpay и получать из них информацию о платежах.
Состав
SDK для Go содержит библиотеку для разработки и автоматизированного тестирования, а также служебные файлы.
Порядок работы
Для использования SDK для Go необходимо:
- Решить организационные вопросы, касающиеся взаимодействия с платёжной платформой ecommpay:
- Если у компании нет идентификатора проекта и ключа для взаимодействия с ecommpay — отправить заявку на подключение по ссылке https://ecommpay.com/apply-now/.
- Если у компании есть идентификатор и ключ для взаимодействия с ecommpay — сообщить специалистам технической поддержки о намерении интеграции с использованием SDK для Go и согласовать с ними порядок тестирования.
- Установить библиотеки, входящие в состав SDK для Go, в каталог с исходным кодом веб-сервиса и подключить их в коде, а также доработать код для использования необходимой функциональности.
- Протестировать и запустить в работу обновлённый исходный код веб-сервиса.
- Для тестирования следует использовать тестовый идентификатор проекта, тестовые значения параметров платежа.
- Для перевода в рабочий режим необходимо заменить тестовое значение project_id на рабочее, полученное от ecommpay.
При возникновении вопросов о работе с SDK для Go следует обращаться в службу технической поддержки ecommpay по адресу support@ecommpay.com.
Установка и подключение библиотек
Устанавливать библиотеки, входящие в состав SDK для Go, в проект с исходным кодом веб-сервиса можно вручную или автоматически с помощью компилятора.
Чтобы установить библиотеки с помощью компилятора и подключить их в исходном коде веб-сервиса, необходимо:
- Если не настроена переменная окружения $GOPATH — настроить. Поиск внешних библиотек и их зависимостей выполняется в каталогах, прописанных в переменную $GOPATH.
- В командной строке компилятора выполнить следующую команду:
go get github.com/ITECOMMPAY/paymentpage-sdk-go
Эта команда служит для размещения загруженных библиотек в каталоге, указанном в переменной $GOPATH. - Подключить SDK для Go в исходном коде веб-сервиса в секции
import
, выполнив команду:import "github.com/ITECOMMPAY/paymentpage-sdk-go"
Вызов платёжной формы
payment
.Вместе с тем, рекомендуется передавать эти и ряд других параметров (с информацией о платёжном адресе пользователя) для проведения оплат с использованием карт всех платёжных систем, поскольку по данным платёжной системы Visa полноценное использование таких параметров может существенно (вплоть до 6 %) повышать проходимость платежей и кардинально (вплоть до 65 %) снижать число операций, признаваемых мошенническими после их выполнения.
Запрос для вызова Payment Page формируется из набора параметров, подписываемых для обеспечения защиты данных при передаче запроса в платёжную платформу ecommpay. SDK для Go позволяет автоматически подписывать параметры и формировать из них запрос. Для вызова Payment Page с использованием SDK для Go следует:
- Создать объект класса
payment
и указать значения параметров платежа.payment := paymentpage.NewPayment(186, "1555943554067") // Идентификатор проекта и идентификатор платежа, уникальный в рамках проекта payment.SetParam(paymentpage.ParamPaymentCurrency, "EUR") // Код валюты в формате ISO-4217 alpha-3 payment.SetParam(paymentpage.ParamPaymentAmount, 1000) // Сумма в дробных единицах валюты payment.SetParam(paymentpage.ParamPaymentDescription, "Тестовый платёж") // Описание платежа. Необязательный параметр
Все параметры в данном примере, за исключением описания платежа, являются необходимыми для любой оплаты. Также могут потребоваться и другие параметры, например адрес электронной почты пользователя или его номер телефона для выполнения аутентификации 3‑D Secure. Их необходимо указывать следующим образом.
payment.SetParam(paymentpage.ParamCustomerPhone, "The customer's phone number. Must have from 4 to 24 digits") payment.SetParam(paymentpage.ParamCustomerEmail, "The customer's email")
Кроме того, для оплат с использованием платёжных карт рекомендуется передавать сведения о платёжном адресе пользователя: код страны в формате ISO 3166-1 alpha-2 (подробнее), индекс, названия города и улицы. Эти сведения указываются следующим образом.
payment.SetParam(paymentpage.ParamBillingPostal, "The postal code of the customer's billing address") payment.SetParam(paymentpage.ParamBillingCountry, "The country of the customer's billing address, in ISO 3166-1 alpha-2") payment.SetParam(paymentpage.ParamBillingCity, "The city of the customer's billing address") payment.SetParam(paymentpage.ParamBillingAddress, "The street of the customer's billing address")
Дополнительно можно использовать любые другие параметры из числа доступных для работы с Payment Page. Подробнее о доступных параметрах — в разделе Параметры вызова платёжной формы.
- Создать объект класса
gate
и указать значение секретного ключа, полученное от платёжной платформы ecommpay. Секретный ключ необходим для автоматического подписывания параметров.gate := paymentpage.NewGate("<secret_key>") // Секретный ключ проекта, полученный при интеграции от ecommpay
- Сформировать запрос для вызова платёжной формы.
paymentPageUrl := gate.GetPaymentPageUrl(*payment)
Корректный запрос для вызова платёжной формы содержит подпись и параметры платежа:https://paymentpage.ecommpay.com/payment?signature=OEKRtJiKStyoH%M36hokU zLZsuB2gO8JALVnyevcV59akRi29elbheVscAEl0lXDE390M%3D%3D&payment_id=1555943554067...
- Использовать сформированный запрос для вызова платёжной формы, например следующим образом:
<link rel="stylesheet" href="https://paymentpage.ecommpay.com/shared/merchant.css" /> <script type="text/javascript" src="https://paymentpage.ecommpay.com/shared/merchant.js"></script> <script type="text/javascript"> EPayWidget.run({ baseUrl: '<URL, полученный на предыдущем шаге>'}, 'get'); </script>
Другие варианты вызова платёжной формы описаны в разделе Способы открытия платёжной формы.
Далее приведён пример формирования запроса для вызова платёжной формы Payment Page с открытием на английском языке. На странице с выбором платежных методов обеспечивается отображение информации о платеже: идентификатора, валюты, суммы и описания платежа.
Обработка оповещений
Информацию о результатах проведения платежей можно получать в оповещениях, отправляемых со стороны ecommpay на URL, который необходимо сообщить службе технической поддержки ecommpay. Оповещение представляет собой HTTP POST запрос с данными в формате JSON-строки. Чтобы извлечь информацию о результате проведения платежа из JSON-строки, необходимо:
- Создать объект класса
gate
и указать значение секретного ключа, полученного от ecommpay.gate := paymentpage.NewGate("<secret_key>")
- Создать объект класса
callback
, используя JSON-строку с информацией о платеже из оповещения от ecommpay:callback, err := gate.HandleCallback(data)
Если подпись некорректная или не удаётся извлечь данные из оповещения, возвращается интерфейс error.
- Использовать методы, доступные для работы с оповещениями. Можно получить всю информацию о платеже или информацию только об отдельных параметрах платежа:
callback.GetPaymentId() // Получение идентификатора платежа callback.GetPaymentStatus() // Получение текущего статуса платежа callback.GetPayment() // Получение всей информации о платеже
Далее приведён пример оповещения, которое включает в себя подпись и информацию о результатах проведения платежа. При использовании SDK для Go проверка подписи в оповещении выполняется автоматически.