Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 37 Следующий »

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

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

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

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

Сокращения

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

Контрагент - клиент Опентао.

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

ПС - платежная система.

Подключение

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

  • являться клиентом Опентао;
  • подать заявку на услугу "Подключение кастомной платежной системы" в службу технической поддержки Opentao.
  • получить Платежный секрет (3.3.1). Дальнейшее требования безопасности по нераспространению обеспечивает Контрагент.

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

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

Сам процесс взаимодействия является обобщенным примером. В некоторых реальных ситуациях процесс может несколько отличаться от представленного на диаграмме.

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

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

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

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

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

7. Опентао передает платежные данные в ответ на вызов метода

Структура ответа PaymentFormAnswer
<?xml version="1.0" encoding="utf-8"?>
<PaymentFormAnswer>
  <ErrorCode>Ok</ErrorCode>
  <Result>
    <RequestMethod>POST</RequestMethod>
    <RequestUrl>http://example.com/notify.js</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 

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

9. По данным, полученным из платежной формы, ПС формирует контракт, отправляет его плательщику и ждет подтверждения оплаты.

10. Плательщик подтверждает платеж.

11. ПС принимает и проверяет платеж.

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

3.2 Пример взаимодействия ПС, Контрагент, Опентао при оповещении о платеже.

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

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

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

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

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

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

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

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

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

public class NoticeAnswer
{
	public string PaymentId { get; set; }
	public NoticeErrorCode ErrorCode { get; set; }
	public string ErrorDescription { get; set; }
}

где

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

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

<?xml version="1.0" encoding="utf-8"?>
<NoticeAnswer>
  <PaymentId>222</PaymentId>
  <ErrorCode>Ok</ErrorCode>
</NoticeAnswer>

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

<?xml version="1.0" encoding="utf-8"?>
<NoticeAnswer>
  <PaymentId>222</PaymentId>
  <ErrorCode>VerificationError</ErrorCode>
  <ErrorDescription>Unknown notification status: 'Overpaid'</ErrorDescription>
</NoticeAnswer>

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

3.3. Таблицы данных

3.3.1 Платежные параметры 

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

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

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

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

Completed - завершен

Canceled - отменен

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

3.3.2 Описание NoticeErrorCode

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

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

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

orderId;paymentId;userId;amount;currency;status;secret

Пример:

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