Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Image Added

Оглавление

1 Проблематика

Если вы не нашли в списке доступных к подключению ПС, вы можете собственными силами подключить любую другую ПС, используя протокол взаимодействия с сервисами ОпентаоОпенТрейд Коммерс.

2 Общие сведения

Опентао ОпенТрейд Коммерс предоставляет протокол, позволяющий Контрагенту интегрировать способы оплаты, недоступные клиентам ОпентаоОпенТрейд Коммерс, в систему заказов и учета движения средств.

Сокращения

...

  • ОпенТрейд Коммерс -- система заказов и учета движения средств. Биллинг.
  • Контрагент

...

  • клиент

...

  • ОпенТрейд Коммерс.
  • Плательщик

...

  • пользователь веб-ресурса Контрагента, совершающий платеж.
  • ПС

...

  • платежная система.

Подключение

Для подключения к данному протоколу необходимо:

3 Общее описание протокола

Image RemovedImage Added

Диаграмма последовательности взаимодействия всех участников платежа

...

Далее следует подробное пошаговое описание последовательности процесса взаимодействия.

3.1 Пример взаимодействия Плательщик, ПС, Контрагент,

...

ОпенТрейд Коммерс при проведении платежа.

1. Плательщик инициализирует оплату.
2-4. Сайт контрагента запрашивает способы оплаты в Опентао метод ОпенТрейд Коммерс с помощью метода GetPaymentModes и показывает плательщику.

Подсказка

Способ оплаты для работы с кастомной ПС, в ответе метода GetPaymentModes, будет иметь идентификатор: opentao.custom

5. Плательщик выбирает способ оплаты и заполняет платежные данные, такие как сумма платеж и др.

6. Сайт Контрагента запрашивает данные системы учета Опентао ОпенТрейд Коммерс для инициализации платежа в ПС с помощью метода GetPaymentParameters

7. Опентао ОпенТрейд Коммерс передает платежные данные в ответ на вызов методаметода GetPaymentParameters

Раскрыть
Блок кода
languagehtml/xml
titleСтруктура Пример ответа PaymentFormAnswer
linenumberstrue
<?xml version="1.0" encoding="utf-8"?>
<PaymentFormAnswer>
  <ErrorCode>Ok</ErrorCode>
  <Result>
    <RequestMethod>POST</RequestMethod>
    <RequestUrl>http://example.com/notifytest.js<php</RequestUrl>
    <Parameters>
      <Parameter>
        <Name>paymentId</Name>
        <Value>222</Value>
      </Parameter>
      <Parameter>
        <Name>userId</Name>
        <Value>0000000001</Value>
      </Parameter>
      <Parameter>
        <Name>amount</Name>
        <Value>500,.15</Value>
      </Parameter>
      <Parameter>
        <Name>currency</Name>
        <Value>643</Value>
      </Parameter>
      <Parameter>
        <Name>description</Name>
        <Value>Top up the account USR-0000000001 (user 0000000001, payment 222)</Value>
      </Parameter>
    </Parameters>
  </Result>
</PaymentFormAnswer>

где

Параметр
Описание
 
RequestUrlАдрес оповещения сервиса, который используется в шаге 15тестовой страницы, для проверки работы кастомной платежной системы до её отдельной реализации 
RequestMethodСпособ отправки запроса пересылки на адрес оповещениятестовой страницыGET/POST
ParameterПлатежный параметр, являющийся по сути KeyValuePair 
Parameter.NameИмя параметра 
Parameter.ValueЗначение параметра 

Варианты имен параметров (описание см. в 3.3.1):

Имя параметраНеобязательные
orderId+
paymentId 
userId 
amount 
currency 
description 
successUrl 
failUrl 
resultUrl 

8. Контрагент на основе данных, полученных на шаге 7, формирует платежную форму с учетом требований ПС.

...

12. ПС возвращает в браузер плательщика ответ - страницу с сообщением об успехи/неудачи платежа.

3.2 Пример взаимодействия ПС, Контрагент,

...

ОпенТрейд Коммерс при оповещении о платеже.

13. ПС уведомляет Контрагента о совершенном платеже

14. Контрагент адаптирует данные, полученные в шаге 13, к параметрам оповещения ОпентаоОпенТрейд Коммерс.

15. Контрагент уведомляет Опентао ОпенТрейд Коммерс о совершенном платеже.

Раскрыть

Необходимо передать нижеследующие параметры на адрес оповещения RequestUrl методом RequestMethod (получены от Опентао оповещения (параметр resultUrl из полученных ОпенТрейд Коммерс на 7 шаге), используя транспорт HTTP.

Параметры (описание см. в 3.3.1):

Имя параметраНеобязательные
instanceKey 
orderId+
paymentId 
userId 
amount 
currency 
status 
signature 

16. Опентао ОпенТрейд Коммерс проверяет параметры оповещение. В случае когда все проверки пройдены и статус платежа помечен как Completed - зачисляет средства на счет плательщика.

17. Опентао ОпенТрейд Коммерс подтверждает Контрагенту получение оповещения о платеже.

Раскрыть
titleПримеры ответов на оповещение

Ответ

Структура ответа на оповещение

Блок кода
languagecsharp
linenumberstrue
public class NoticeAnswer
{
	public string PaymentId { get; set; }
	public NoticeErrorCode ErrorCode { get; set; }
	public string ErrorDescription { get; set; }
}

где

ПараметрОписание
PaymentId 
Идентификатор платежа во внутренней системе биллинга Опентао
ErrorCode 
Код ошибки. Подробнее см. 3.3.2
ErrorDescription 
Описание ошибки

Пример ответа о безошибочной обработке оповещения

Блок кода
languagehtml/xml
linenumberstrue
<?xml version="1.0" encoding="utf-8"?>
<NoticeAnswer>
  <PaymentId>222</PaymentId>
  <ErrorCode>Ok</ErrorCode>
</NoticeAnswer>

Пример ответа Ответ с ошибкой

Блок кода
languagehtml/xml
linenumberstrue
<?xml version="1.0" encoding="utf-8"?>
<NoticeAnswer>
  <PaymentId>222</PaymentId>
  <ErrorCode>VerificationError</ErrorCode>
  <ErrorDescription>Unknown notification status: 'Overpaid'</ErrorDescription>
</NoticeAnswer>

где

ПараметрОписание
PaymentId 
Идентификатор платежа во внутренней системе биллинга ОпенТрейд Коммерс
ErrorCode 
Код ошибки. Подробнее см. 3.3.2
ErrorDescription 
Описание ошибки

18. Контрагент подтверждает ПС получение оповещения о платеже.

...

ПараметрОписаниеВозможное значениеПримечание
instanceKeyИдентификатор Контрагента в системе ОпентаоОпенТрейд Коммерс  
secretПлатежный секрет Необходим для формирования цифровой подписи 3.4. Выдается Контрагенту от ОпентаоОпенТрейд Коммерс.
orderIdИдентификатор заказа для оплаты 

Присутствует если пользователь оплачивает заказ.

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

paymentIdИдентификатор платежа во внутренней системе биллинга ОпентаоОпенТрейд Коммерс  
userIdИдентификатор пользователя ОпентаоОпенТрейд Коммерс  
amountСумма платежа  Десятичный разделитель — точка, и всегда 2 знака после него.
currencyЦифровой код валюты платежа в формате ISO 4217643 - RUBhttp://en.wikipedia.org/wiki/ISO_4217
statusСостояние платежа

Completed - завершен

Canceled - отменен

 
signatureЦифровая подпись зашифрованная по алгоритму MD5 32 шестнадцатеричных символа, в верхнем регистре
descriptionОписание платежа  

...

КодОписание
OkОповещение обработано
VerificationErrorОшибка при проверки входящих данных
SignatureVerificationErrorНе совпали цифровые подписи: присланная Контрагентом и подсчитанная на стороне ОпентаоОпенТрейд Коммерс
InternalErrorВнутренняя ошибка сервиса ОпентаоОпенТрейд Коммерс. Необработанная ошибка

3.4. Правила формирования цифровой подписи при оповещении Контрагентом ОпентаоОпенТрейд Коммерс

MD5 хеширование применяется к тексту, формируемому как последовательность значений ряда параметров, разделенных символом «точка с запятой» — «;». 

...

СтрокаРезультат
111;222;0000000001;500,.15;643;Completed;secret11AE0ABC8F0CF443F950D84C278F1C51