Если вы не нашли в списке доступных к подключению ПС, вы можете собственными силами подключить любую другую ПС, используя протокол взаимодействия с сервисами ОпенТрейд Коммерс.
ОпенТрейд Коммерс предоставляет протокол, позволяющий Контрагенту интегрировать способы оплаты, недоступные клиентам ОпенТрейд Коммерс, в систему заказов и учета движения средств.
Для подключения к данному протоколу необходимо:
Диаграмма последовательности взаимодействия всех участников платежа
Сам процесс взаимодействия является обобщенным примером. В некоторых реальных ситуациях процесс может несколько отличаться от представленного на диаграмме.
Далее следует подробное пошаговое описание последовательности процесса взаимодействия.
1. Плательщик инициализирует оплату.
2-4. Сайт контрагента запрашивает способы оплаты в ОпенТрейд Коммерс с помощью метода GetPaymentModes и показывает плательщику.
Способ оплаты для работы с кастомной ПС, в ответе метода GetPaymentModes, будет иметь идентификатор: opentao.custom |
5. Плательщик выбирает способ оплаты и заполняет платежные данные, такие как сумма платеж и др.
6. Сайт Контрагента запрашивает данные системы учета ОпенТрейд Коммерс для инициализации платежа в ПС с помощью метода GetPaymentParameters
7. ОпенТрейд Коммерс передает платежные данные в ответ на вызов метода GetPaymentParameters
где
Варианты имен параметров (описание см. в 3.3.1):
|
8. Контрагент на основе данных, полученных на шаге 7, формирует платежную форму с учетом требований ПС.
9. По данным, полученным из платежной формы, ПС формирует контракт, отправляет его плательщику и ждет подтверждения оплаты.
10. Плательщик подтверждает платеж.
11. ПС принимает и проверяет платеж.
12. ПС возвращает в браузер плательщика ответ - страницу с сообщением об успехи/неудачи платежа.
13. ПС уведомляет Контрагента о совершенном платеже
14. Контрагент адаптирует данные, полученные в шаге 13, к параметрам оповещения ОпенТрейд Коммерс.
15. Контрагент уведомляет ОпенТрейд Коммерс о совершенном платеже.
Необходимо передать нижеследующие параметры на адрес оповещения (параметр resultUrl из полученных ОпенТрейд Коммерс на 7 шаге), используя транспорт HTTP. Параметры (описание см. в 3.3.1):
|
16. ОпенТрейд Коммерс проверяет параметры оповещение. В случае когда все проверки пройдены и статус платежа помечен как Completed — зачисляет средства на счет плательщика.
17. ОпенТрейд Коммерс подтверждает Контрагенту получение оповещения о платеже.
Ответ о безошибочной обработке оповещения
Ответ с ошибкой
где
|
18. Контрагент подтверждает ПС получение оповещения о платеже.
Параметр | Описание | Возможное значение | Примечание |
---|---|---|---|
instanceKey | Идентификатор Контрагента в системе ОпенТрейд Коммерс | ||
secret | Платежный секрет | Необходим для формирования цифровой подписи 3.4. Выдается Контрагенту от ОпенТрейд Коммерс. | |
orderId | Идентификатор заказа для оплаты | Присутствует если пользователь оплачивает заказ. Отсутствует при пополнении счета | |
paymentId | Идентификатор платежа во внутренней системе биллинга ОпенТрейд Коммерс | ||
userId | Идентификатор пользователя ОпенТрейд Коммерс | ||
amount | Сумма платежа | Десятичный разделитель — точка, и всегда 2 знака после него. | |
currency | Цифровой код валюты платежа в формате ISO 4217 | 643 - RUB | http://en.wikipedia.org/wiki/ISO_4217 |
status | Состояние платежа | Completed - завершен Canceled - отменен | |
signature | Цифровая подпись зашифрованная по алгоритму MD5 | 32 шестнадцатеричных символа, в верхнем регистре | |
description | Описание платежа |
Код | Описание |
---|---|
Ok | Оповещение обработано |
VerificationError | Ошибка при проверки входящих данных |
SignatureVerificationError | Не совпали цифровые подписи: присланная Контрагентом и подсчитанная на стороне ОпенТрейд Коммерс |
InternalError | Внутренняя ошибка сервиса ОпенТрейд Коммерс. Необработанная ошибка |
3.4. Правила формирования цифровой подписи при оповещении Контрагентом ОпенТрейд Коммерс
MD5 хеширование применяется к тексту, формируемому как последовательность значений ряда параметров, разделенных символом «точка с запятой» — «;».
orderId;paymentId;userId;amount;currency;status;secret |
Пример:
Строка | Результат |
---|---|
111;222;0000000001;500.15;643;Completed;secret | 11AE0ABC8F0CF443F950D84C278F1C51 |