SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
WebPay™ Developer Guide
               Руководство разработчика
Оглавление
            Оглавление




Оглавление
Оглавление.....................................................................................................................................................................................2
Введение........................................................................................................................................................................................3
   Об этом руководстве.................................................................................................................................................................3
   Целевая аудитория...................................................................................................................................................................3
   Порядок разработки..................................................................................................................................................................3
   История версий.........................................................................................................................................................................3
Введение в среду разработки Sandbox........................................................................................................................................4
   Параметры тестовой среды.....................................................................................................................................................4
   Интерфейс Web-приложения...................................................................................................................................................4
     Основной экран приложения...............................................................................................................................................5
     Заполнение параметров ..................................................................................................................................................6
     Установка секретного ключа...............................................................................................................................................7
     Просмотр финансовых операций.......................................................................................................................................8
Разработка платежного модуля..................................................................................................................................................10
   Формирование заказа для оплаты.........................................................................................................................................10
     Таблица 2.1 Поля формы оплаты.....................................................................................................................................10
     Пример формы оплаты.....................................................................................................................................................13
     Электронная подпись заказа.............................................................................................................................................14
   Оплата заказа.........................................................................................................................................................................15
   Извещение об оплате.............................................................................................................................................................16
   Проверка платежа...................................................................................................................................................................16
     При возврате покупателя на интернет-ресурс.................................................................................................................16
     При извещении о платеже.................................................................................................................................................18
     Типы транзакций................................................................................................................................................................19
Повторные платежи, пополнение банковских карточек.............................................................................................................20




WebPay™ developer guide                                                                                                                                                                       2
Введение
        Введение




Введение

Об этом руководстве
      Данное руководство описывает процесс разработки платежного модуля1 для приема платежей
      в сети Интернет c помощью системы WebPay™ и использование тестовой среды
      (sandbox2) для тестирования разрабатываемого модуля.

Целевая аудитория
      Данный документ написан для Web разработчиков и специалистов желающих протестировать
      разработанный платежный модуль, перед подключением к системе WebPay™.

Порядок разработки
      1.      Внимательно ознакомиться с настоящим руководством
      2.   Зайти и Web-приложение Sandbox (https://sandbox.webpay.by/) используя параметры
      полученные в письме от службы поддержки компании «Веб Пэй»
      3.   Ознакомиться с интерфейсом Sandbox и заполнить необходимые поля (см. Заполнение
      параметров)
      4.      Приступить к разработке платежного модуля согласно данной документации
      5.      Произвести тестирование модуля
      6.   По окончанию тестирования обратиться в службу поддержки компании «Веб Пэй», для
      осуществления проверки специалистами компании
      7.      При получении замечаний, доработать модуль, исправив полученные замечания
      8.    Получить письмо с новыми параметрами, для перевода платежного модуля из тестовой
      системы, в реальную платежную систему
      9.      Внести изменения в платежный модуль

История версий
      История версий документа WebPay development guide.


       Дата изменения         Описание изменений
       25 мая 2009            Версия документа 1.0.0




1 Программное обеспечение, разрабатываемое на сервере подключаемого клиента на языке программирования
2 Sandbox – среда для тестирования разрабатываемых модулей.

WebPay™ developer guide                                                                                 3
Введение
        История версий




 1       Введение в среду разработки Sandbox

      WebPay™ Sandbox — это самостоятельное Web-приложение, являющиеся прототипом
      реальной системы и предназначено для тестирования и ознакомления с возможностями
      реальной системы WebPay™.
      По своим функциональным возможностям она ничем не отличается от рабочей копии, за
      исключением того, что не выполняет реальный процессинг банковских карточек, т.е. никакие
      действия не приводят к реальному перемещению средств на карточках.


      Разработку и тестирование платежных модулей всегда необходимо проводить в тестовой
      среде.

Параметры тестовой среды
       URL адрес тестовой среды                  https://sandbox.webpay.by

       Имя пользователя                          высылается в письме

       Пароль                                    высылается в письме

       Уникальный идентификатор магазина         высылается в письме


Интерфейс Web-приложения
      Интерфейс Web-приложения тестовой системы Sandbox и реальной системы отличаются
      только наличием специального баннера, указывающего на то, что данная среда является
      средой тестирования. Перед началом разработки, рекомендуется зайти в Web-приложение,
      ознакомиться с его содержимым и заполнить основные параметры Вашего биллинг аккаунта.




WebPay™ developer guide                                                                          4
Введение в среду разработки Sandbox
        Интерфейс Web-приложения




      Основной экран приложения
      После входа в Web-приложение, Вам будет отображена следующая страница




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




WebPay™ developer guide                                                                    5
Введение в среду разработки Sandbox
        Интерфейс Web-приложения




      Заполнение параметров
      Перед началом работы, Вам необходимо заполнить основные параметры биллинга, для этого
      необходимо перейти на страницу «Профайл» и заполнить обязательные поля.




      На этой странице, необходимо заполнить все поля помеченные * (звездочкой). Поле «Company
      Contact Email» необходимо для отсылки Вам уведомления о произошедших транзакциях на
      Вашем биллинге.


      Следующая страница «Настройки компании». На этой странице, необходимо задать имя или
      IP-адрес почтового сервера (SMTP Host) и параметры авторизации почтового сервера. При
      задании этих полей, всем покупателям Вашего магазина будет отсылаться уведомление от
      Вашего имени. Рекомендуется заводить отдельный почтовый аккаунт, для отправки
      уведомлений.


      На поле «Secret Key» остановимся по подробнее.


WebPay™ developer guide                                                                       6
Введение в среду разработки Sandbox
        Интерфейс Web-приложения




      Установка секретного ключа
      Секретный ключ, необходим для формирования электронной подписи каждого Вашего платежа
      (см. Электронная подпись заказа). Этот параметр является обязательным к заполнению и без
      него не возможно будет оплачивать Ваши товары или услуги.


      Для установки «Секретного ключа» необходимо заполнить поле Secret key. Это поле может
      содержать случайную последовательность символов




WebPay™ developer guide                                                                       7
Введение в среду разработки Sandbox
        Интерфейс Web-приложения



      Просмотр финансовых операций
      Для просмотра всех финансовых операций, необходимо воспользоваться пунктом меню
      «Платежи»




      На данной странице отображены все финансовый платежи (транзакции). Каждая такая
      транзакция привязана к Инвойсу (Invoice), у инвойса, может быть несколько транзакций, таких
      как:
           •    Authorized – состояние авторизации платежа (денежные средства заблокированы на
                банковской карточке покупателя). В этом состоянии покупатель не видит списанной с
                него суммы, но данная сумма еще не перечислена на Ваш банковский счет.
           •    Completed – денежные средства списаны с банковской карточки
           •    System — системная транзакция.
     В поле Invoice содержится номер к которому привязаны транзакции. Для просмотра всех
     транзакции связанных с этим номером, а также значения с которыми был совершен платеж,
     необходимо нажать на ссылку. В отрытой странице Вам будет представлена информация о
     данном инвойсе.




WebPay™ developer guide                                                                             8
Введение в среду разработки Sandbox
        Интерфейс Web-приложения




WebPay™ developer guide               9
Введение в среду разработки Sandbox
        Интерфейс Web-приложения




 2         Разработка платежного модуля

      Разработка платежного модуля осуществляется на стороне сервера подключаемого клиента и
      предполагает создание, либо внесение изменений в исходный код скриптов дорабатываемого
      Web-приложения.


      Принцип формирования и оплаты заказа
      1)    Формирование заказа. Создание html-страницы с обыкновенной html-формой. В качестве
      полей должны быть указаны и заполнены поля необходимы для совершения оплаты (см. Поля
      формы оплаты)
      2)    Переход на форму оплаты системы WebPay™ (https://secure.sandbox.webpay.by:8843),
      для ввода реквизитов пластиковой карточки (переход осуществляется POST запросом)
      3)        Ввод данных пластиковой карточки
      4)        Оплата заказа
      5)    Возврат на html-страницу модуля оплаты (в случае если покупатель не нажмет кнопку
      вернуться на форме оплаты, будет послано специальное извещение см. Извещение о оплате )
      6)        Проверка параметров платежа
      7)        Оказание услуги (доставка товара)

Формирование заказа для оплаты
      Для оплаты заказа необходимо сформировать форму со специальными полями, значения и
      описание полей представлены в Таблице 2.1 и POST методом перенаправить покупателя на
      страницу оплаты.


      Для тестирования это должен быть адрес https://secure.sandbox.webpay.by , для совершения
      реальных платежей https://secure.webpay.by

      Таблица 2.1 Поля формы оплаты
       Название поля         Описание поля                                                        Примечание
                                                  Основные поля формы оплаты
       *scart                Поле не содержит значения и обозначает тип запроса
       Поле является
       обязательным          Пример: <input type='hidden' name='*scart'>

       wsb_storeid           Идентификатор магазина в системе WebPay™                             Cодержит уникальный
       Поле является                                                                              идентификатор магазина.
       обязательным          Пример: <input type='hidden' name='wsb_storeid' value='123456789'>   Данный идентификатор
                                                                                                  создается при регистрации в
                                                                                                  системе WebPay™ и
                                                                                                  высылается в письме.
       wsb_store             Название магазина, которое будет отображаться на форме               Максимальная длина поля
       Поле является         оплаты.                                                              64 символа
       обязательным



WebPay™ developer guide                                                                                                     10
Разработка платежного модуля
        Формирование заказа для оплаты



                           Пример: <input type='hidden' name='wsb_store' value='Тестовый магазин'>

       wsb_order_num       Идентификатор заказа, присваиваемый магазином                             Максимальная длина поля
       Поле является                                                                                 64 символа
       обязательным        Пример: <input type='hidden' name='wsb_order_num' value='ORDER_1234'>

       wsb_currency_id     Идентификатор валюты. Буквенный трехзначный код                           На данный момент значение
       Поле является       валюты согласно ISO4271                                                   это поля должно быть BYR
       обязательным
                           Пример: <input type='hidden' name='wsb_currency_id' value='BYR'>

       wsb_version         Версия формы оплаты                                                       Текущий номер версии = 2

                           Пример: <input type='hidden' name='wsb_version' value='2'>

       wsb_language_id     Идентификатор языка формы оплаты                                          На данный момент
                                                                                                     поддерживаются два языка
                           Пример: <input type='hidden' name='wsb_language_id' value='russian'>      формы оплаты
                                                                                                     - русский (russian)
                                                                                                     - английский (english)

                                                                                                     Если данное поле не
                                                                                                     указано, то форма оплаты
                                                                                                     будет определять язык из
                                                                                                     параметров браузера
                                                                                                     покупателя.
       wsb_seed            Случайная последовательность символов участвующих в                       см. Электронная подпись
       Поле является       формировании электронной подписи заказа                                   заказа
       обязательным
                           Пример: <input type='hidden' name='wsb_seed' value='11123232001'>

       wsb_signature       Контрольное значение (электронная подпись) заказа                         см. Электронная подпись
       Поле является       результат выполнения функции sha1 (для версии 2. см.                      заказа
       обязательным
                           поле wsb_version), либо md5, если версия протокола не
                           указана.

                           Данное значение является hex-последовательностью

                           Пример: <input type='hidden' name='wsb_signature'
                           value='8d4395dab7598c5f4b94d5bc4780f4af'>

       wsb_return_url      URL адрес на который возвращается покупатель в случае                     К данному URL добавляются
       Поле является       успешной оплаты                                                           значения Идентификатора
       обязательным
                                                                                                     заказа (wsb_order_num) и
                           Пример: <input type='hidden' name='wsb_return_url'                        специальное значение
                           value='http://yoursite.com/compete'>
                                                                                                     Номера транзакции в
                                                                                                     системе WebPay™.
       wsb_cancel_return_u URL адрес на который возвращается покупатель в случае                     К данному URL добавляются
       rl                  не успешной оплаты                                                        значения Идентификатора
       Поле является                                                                                 заказа (wsb_order_num)
       обязательным        Пример: <input type='hidden' name='wsb_cancel_return_url'
                           value='http://yoursite.com/cancel'>

       wsb_notify_url      Данный URL вызывается вне зависимости от того, был ли                     К данному URL добавляются
                           переход по URL в поле wsb_return_url или нет. Основное                    значения Идентификатора
                           назначение это URL, это оповестить сайт о успешной                        заказа (wsb_order_num) и
                           оплате, в случае, если пользователь не нажал кнопку                       специальное значение
                           «Завершить» на форме оплаты.                                              Номера транзакции в
                                                                                                     системе WebPay™. (см.
                           Пример: <input type='hidden' name='wsb_notify_url'                        Извещение об оплате)
                           value='http://yoursite.com/notify'>

       wsb_test            Поле указывающие на проведение тестовой оплаты                            В тестовой среде Sandbox
                                                                                                     значение данного поля
                           1 — производить тестовую оплату                                           игнорируется и всегда


WebPay™ developer guide                                                                                                         11
Разработка платежного модуля
        Формирование заказа для оплаты



                            0, или не указано поле — проводить реальную оплату                         принимается равным 1

                            Пример: <input type='hidden' name='wsb_test' value='1'>

                                                     Список товаров к оплате
       wsb_invoice_item_n   Наименование единицы товара                                                Индекс {n}, должен
       ame[{n}]                                                                                        начинаться с 0 и
       Поле является                                                                                   увеличиваться на 1, для
       обязательным         Пример:
                            <input type='hidden' name='wsb_invoice_item_name[0]' value='Товар 1'>      каждой последующей
                            <input type='hidden' name='wsb_invoice_item_name[1]' value='Товар 2'>      позиции
                            …
                            <input type='hidden' name='wsb_invoice_item_name[N-1]' value='Товар N'>

       wsb_invoice_item_q   Количество единиц товара, целое число обозначающие,                        Индекс {n}, должен
       uantity[{n}]         количество единиц товара каждого наименования                              начинаться с 0 и
       Поле является                                                                                   увеличиваться на 1, для
       обязательным         Пример:
                                                                                                       каждой последующей
                            <input type='hidden' name='wsb_invoice_item_quantiny[0]' value='2'>
                            <input type='hidden' name='wsb_invoice_item_quantiny[1]' value='1'>        позиции
                            …
                            <input type='hidden' name='wsb_invoice_item_quantiny[N-1]' value='1'>

       wsb_invoice_item_pr Цена единицы товара, целое число определяющее                               Индекс {n}, должен
       ice[{n}]            стоимость каждой единицы товара (указывается в                              начинаться с 0 и
       Поле является       белорусских рублях)                                                         увеличиваться на 1, для
       обязательным
                                                                                                       каждой последующей
                            Пример:
                                                                                                       позиции
                            <input type='hidden' name='wsb_invoice_item_price[0]' value='10000'>
                            <input type='hidden' name='wsb_invoice_item_price[1]' value='2000'>
                            …
                            <input type='hidden' name='wsb_invoice_item_price[N-1]' value='4000'>

       wsb_tax              Поле, значением которого является сумма налога, в                          Данное поле является не
                            белорусских рублях, добавляемая к общей сумме заказа                       обязательным.

                            Пример:
                            <input type='hidden' name='wsb_tax' value='1000'>

       wsb_shipping_name    Поле определяющие наименование(способа) доставки                           Данное поле является не
                                                                                                       обязательным.
                            Пример:
                            <input type='hidden' name='wsb_shipping_name' value='Доставка курьером'>
                            <input type='hidden' name='wsb_shipping_price' value='2000'>

       wsb_shipping_price   Поле, значением которого является сумма доставки, в                        Данное поле является не
                            белорусских рублях, добавляемая к общей сумме заказа                       обязательным.
       wsb_discount_name    Поле названия скидки                                                       Данное поле является не
                                                                                                       обязательным.
                            Пример:
                            <input type='hidden' name='wsb_discount_name' value='Дисконтная карта'>
                            <input type='hidden' name='wsb_discount_price' value='580'>

       wsb_discount_price   Поле, значением которого является сумма скидки, в                          Данное поле является не
                            белорусских рублях, вычитаемая из общей суммы заказа                       обязательным.
       wsb_total            Данное поле является вычисляемым. Значение этого поля                      Оплата не будет
       Поле является        является общей суммой оплаты заказа.                                       произведена, если wsb_total
       обязательным
                                                                                                       и посчитанное значения
                            Правила вычисления общей суммы:                                            товаров не будут совпадать.
                            wsb_total =                                                                Покупателю будет
                                      wsb_invoice_item_quantiny[0] * wsb_invoice_item_price[0] +
                                                                                                       отображена ошибка.
                                      wsb_invoice_item_quantiny[1] * wsb_invoice_item_price[1] +
                                      ...
                                      wsb_invoice_item_quantiny[N] * wsb_invoice_item_price[N] +
                                      wsb_tax +
                                      wsb_shipping_price -
                                      wsb_discount_price

                            Пример:
                            <input type='hidden' name='wsb_total' value='19580'>



WebPay™ developer guide                                                                                                          12
Разработка платежного модуля
        Формирование заказа для оплаты



                                                     Дополнительные поля
       wsb_email           Электронный адрес покупателя.                                          Значение данного поля
                                                                                                  будет автоматически
                           Пример:
                                                                                                  подставлено в
                           <input type='hidden' name='wsb_email' value='yourname@yoursite.com'>
                                                                                                  соответствующие поле
                                                                                                  формы оплаты
       wsb_phone           Контактный телефон покупателя.                                         Значение данного поля
                                                                                                  будет автоматически
                           Пример:                                                                подставлено в
                           <input type='hidden' name='wsb_phone' value='8171231231'>
                                                                                                  соответствующие поле
       wsb_icn             Внутренний уникальный идентификатор пластиковой                        См. Повторные платежи,
                           карточки                                                               Пополнение банковских
                                                                                                  карточек
       wsb_card            Урезанный (триммированный) номер банковской карточки.                  См. Повторные платежи,
                                                                                                  Пополнение банковских
                                                                                                  карточек



     Пример формы оплаты

      <form action="https://secure.sandbox.webpay.by:8843/" method="post">
      <input type="hidden" name="*scart">
      <input type="hidden" name="wsb_version" value="2">
      <input type="hidden" name="wsb_language_id" value="russian">
      <input type="hidden" name="wsb_storeid" value="11111111" >
      <input type="hidden" name="wsb_store" value="Название Вашего магазина" >
      <input type="hidden" name="wsb_order_num" value="ORDER-12345678" >
      <input type="hidden" name="wsb_test" value="1" >
      <input type="hidden" name="wsb_currency_id" value="BYR" >
      <input type="hidden" name="wsb_seed" value="1242649174">
      <input type="hidden" name="wsb_return_url" value="http://your site url.com/success.php">
      <input type="hidden" name="wsb_cancel_return_url" value="http://your site url.com/cancel.php">
      <input type="hidden" name="wsb_notify_url" value="http://your site url.com/notify.php">
      <input type="hidden" name="wsb_email" value="no@body.tld" >
      <input type="hidden" name="wsb_phone" value="22-333-333" >
      <input type="hidden" name="wsb_invoice_item_name[]" value="Товар 1">
      <input type="hidden" name="wsb_invoice_item_quantity[]" value="2">
      <input type="hidden" name="wsb_invoice_item_price[]" value="10000">
      <input type="hidden" name="wsb_invoice_item_name[]" value="Товар 2">
      <input type="hidden" name="wsb_invoice_item_quantity[]" value="1">
      <input type="hidden" name="wsb_invoice_item_price[]" value="500">
      <input type="hidden" name="wsb_total" value="21950" >
      <input type="hidden" name="wsb_signature" value="40aa8af3ce7a1f7c3635ac2227475094a59d574c" >
      <input type="hidden" name="wsb_tax" value="1050">
      <input type="hidden" name="wsb_shipping_name" value="Стоимость доставки" >
      <input type="hidden" name="wsb_shipping_price" value="980" >
      <input type="hidden" name="wsb_discount_name" value="Скидка на товар" >
      <input type="hidden" name="wsb_discount_price" value="580" >
      <input type="submit" value="Купить">
      </form>




WebPay™ developer guide                                                                                                    13
Разработка платежного модуля
        Формирование заказа для оплаты



      Электронная подпись заказа
      Электронная подпись формируется для предотвращения изменений в форме платежа и
      должна присутствовать в каждой форме заказа. Все заказы без электронной подписи не будут
      рассматриваться системой WebPay™.


      Для формирования электронной подписи необходимо установить значение поля «Secret Key» в
      настройках Вашего биллинг аккаунта (см. Установка секретного ключа).


      В каждой форме заказа необходимо указывать поля
      wsb_seed – случайная последовательность символов (можно использовать текущее значение
      времени, к примеру unixtime)
      wsb_signature – непосредственно сама электронная подпись. Она должна быть сформирована
      согласно следующему правилу, значения следующих полей:
                wsb_seed
                wsb_storeid
                wsb_order_num
                wsb_test
                wsb_currency_id
                wsb_total
                «Secret Key»
           должны быть объединены в одну строку, порядок объединения не должен быть нарушен.
      Далее в зависимости от указанной версии протокола (wsb_version), считается MD5 (если
      версия не указана), либо SHA1 (для версии 2) объединенной строки.



      Пример формирования электронной подписи (на языке программирования PHP):
       $wsb_seed = 1242649174;
       $wsb_storeid = 11111111;
       $wsb_order_num = “ORDER-12345678”;
       $wsb_test = 1;
       $wsb_currency_id = “BYR”;
       $wsb_total = 21950;
       $SecretKey = “12345678901234567890”;

       //Значение объединенной строки: 124264917411111111ORDER-123456781BYR2195012345678901234567890

       // для версии протокола 2 (wsb_version = 2)
       $wsb_signature = sha1($wsb_seed.$wsb_storeid.$wsb_order_num.$wsb_test.$wsb_currency_id.$wsb_total.
       $SecretKey); // 7a0142975bc660d219b793c650346af7ffce2473

       // если версия не указана
       $wsb_signature = md5($wsb_seed.$wsb_storeid.$wsb_order_num.$wsb_test.$wsb_currency_id.$wsb_total.
       $SecretKey); // 4decb461a593852da78af8fb4ef9e8e5




WebPay™ developer guide                                                                                     14
Разработка платежного модуля
        Оплата заказа



Оплата заказа
      После формирования полей заказа и нажатия кнопки «Оплатить», покупатель должен быть
      перенаправлен на страницу оплаты системы WebPay™ (тестовой, либо реальной), где
      ему будет предоставлена возможность ввести реквизиты своей банковской
      карточки




WebPay™ developer guide                                                                     15
Разработка платежного модуля
        Оплата заказа




      После успешной оплаты заказа, покупатель должен нажать кнопку «Завершить платеж и
      вернуться», в этом случае форма оплаты перенаправит его по URL-адресу указанному в поле
      wsb_return_url.
      При ошибке оплаты, и нажатии кнопки «Закончить» покупатель будет перенаправлен на URL-
      адрес указанный в поле wsb_cancel_return_url. В каждом из этих случаев, к URL-адресу будут
      дописаны значения wsb_order_num, а в случае успешной оплаты, будет так-же дописано
      значение номера транзакции в системе WebPay™.


      ВАЖНО
              Возможны ситуации, при которых покупатель, не нажмет кнопку «Вернуться» на форме
              оплаты. Для уведомления о успешной операции система WebPay™, через некоторое
              время отсылает специальное извещение (см. Извещение об оплате)

Извещение об оплате
     При возврате на страницу интернет-ресурса в случае успешной оплаты (используется значение
     указанное в поле wsb_return_url), биллинг передает в параметрах GET запроса, номер заказа
     (значение поля wsb_order_num) и номер транзакции (поле wsb_tid) соответсвующий
     проведенному платежу.
     Если покупатель не нажал кнопку «Вернуться» с формы оплаты, биллинг известит интернет-
     ресурс о проведенной операции по адресу wsb_notify_url (если он указан в поле формы, либо
     задан в настройках аккаунта биллинга).
     Интернет-ресурс в случае оповещения, должен ответить кодом 200 ("HTTP/1.0 200 OK"), если
     сервер интернет-ресурса не отвечает положительно, а с момента начала отсылки
     уведомляющих запросов прошел 1 час, на адрес магазина отсылается электронное письмо,
     предупреждающее о сбое. Через 30 дней, если интернет-ресурс так и не смог принять
     уведомление, отсылка запросов прекращается, о чем интернет-ресурс также извещается
     электронным письмом.
     При разработке, необходимо учесть, что может придти извещение о платеже (wsb_notify_url),
     так и покупатель может вернуться на страницу интернет-ресурса указанному в поле
     (wsb_return_url)



Проверка платежа
      Прежде чем доставить товар (оказать услугу), интернет-ресурс, обязан проверить
      совершенный покупателем платеж.

      При возврате покупателя на интернет-ресурс
      Для проверки платежа при возврате на страницу интернет-ресурса увазанному в поле
      wsb_return_url, необходимо выполнить API команду биллинга «get_transaction».
      Ниже приводится пример кода, для выполнения API команды в системе webpay.by. Необходимо
      учитывать, что запрос к тестовой среде необходимо отсылать на адрес
      https://sandbox.webpay.by, а к в реальной среде https://billing.webpay.by


WebPay™ developer guide                                                                          16
Разработка платежного модуля
        Проверка платежа




      Пример запроса на проверку платежа (PHP)
       //////////////////////////////////////////////////
       // API Request (webpay.by)

       $postdata = '*API=&API_XML_REQUEST='.urlencode('
                   <?xml version="1.0" encoding="ISO-8859-1" ?>
                   <wsb_api_request>
                         <command>get_transaction</command>
                         <authorization>
                               <username>your_username</username>
                               <password>your_md5_password</password>
                         </authorization>
                         <fields>
                               <transaction_id>123456789
                               </transaction_id>
                         </fields>
                   </wsb_api_request>
       ');
       $curl = curl_init("https://sandbox.webpay.by");
       curl_setopt ($curl, CURLOPT_HEADER, 0);
       curl_setopt ($curl, CURLOPT_POST, 1);
       curl_setopt ($curl, CURLOPT_POSTFIELDS, $postdata);
       curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
       curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);
       $response = curl_exec ($curl);
       curl_close ($curl);
       echo $response;


      В результате выполнения запроса приходит XML-документ, содержащий следующие поля:

           •    transaction_id     - номер транзакции
           •    batch_timestamp - время совершения транзакции
           •    currency_id        - валюта транзакции ( Примечание: представляет собой
                буквенный, трех-значный код в соответствии с ISO 4217 )
           •    amount             - сумма транзакции
           •    payment_method - метод совершения транзакции (возможные значения: cc -
                банковская карта, test - совершена без реального процессинга карты)
           •    payment_type       - тип транзакции
           •    order_id           - номер заказа в системе webpay.by
           •    rrn                - номер транзакции в системе Visa/MasterCard
           •    wsb_signature      - электронная подпись *

            * Электронная подпись вычисляется в случае если в настройках биллинга указан
      Secret Key (см. Электронная подпись)

           wsb_signature представляет собой hex-последовательность и является результатом
      выполнения функции MD5. В качестве аргумента функции MD5 служит текстовая
      последовательность, полученная путем простой конкатенации следующих полей:

           •    transaction_id

WebPay™ developer guide                                                                     17
Разработка платежного модуля
        Проверка платежа



           •    batch_timestamp
           •    currency_id
           •    amount
           •    payment_method
           •    payment_type
           •    order_id
           •    rrn
           •    "Secret Key"

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

      При извещении о платеже
      После совершения удачного платежа, система webpay.by будет отсылать специально
      сформированный POST-запрос по адресу указанному в поле wsb_notify_url интернет-ресурса.
      В этом запросе содержится информация по платежу. Полученную информацию интернет-
      ресурс должен проверить в соответствии с требованиями выполнения заказа и ответить на
      запрос кодом: "HTTP/1.0 200 OK"

      Поля, содержащиеся в запросе:

           •    batch_timestamp - время совершения транзакции
           •    currency_id        - валюта транзакции ( Примечание: представляет собой
                буквенный, трех-значный код в соответствии с ISO 4217 )
           •    amount             - сумма транзакции
           •    payment_method - метод совершения транзакции (возможные значения: cc -
                банковская карта, test - совершена без реального процессинга карты)
           •    order_id           - номер заказа в системе webpay.by
           •    site_order_id      - номер (имя) заказа, присвоенное магазином
           •    transaction_id     - номер транзакции
           •    payment_type       - тип транзакции
           •    rrn                - номер транзакции в системе Visa/MasterCard
           •    wsb_signature      - электронная подпись *


            * Электронная подпись вычисляется в случае если в настройках биллинга указан
      Secret Key (см. Электронная подпись)

           wsb_signature представляет собой hex-последовательность и является результатом
      выполнения функции MD5. В качестве аргумента функции MD5 служит текстовая
      последовательность, полученная путем простой конкатенации следующих полей:

           •    batch_timestamp
           •    currency_id
           •    amount
           •    payment_method
           •    order_id
           •    site_order_id
           •    transaction_id

WebPay™ developer guide                                                                     18
Разработка платежного модуля
        Проверка платежа



           •       payment_type
           •       rrn
           •       "Secret Key"

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


      Типы транзакций
      По типу транзакции (поле payment_type) делятся на следующие группы:

               1       - Completed (Завершенная)
               2       - Declined (Отклоненная)
               3       - Pending (В обработке)
               4       - Authorized (Авторизованная)
               5       - Refunded (Возвращенная)
               6       - System (Системная)
               7       - Voided (Сброшенная после авторизации)

               ВАЖНО:
               При написании кода обработки дополнительных извещений, следует учитывать тип
               транзакции. Данный тип уведомления предназначен для извещения интернет-ресурса о
               успешно завершенных транзакциях и о транзакциях, которые в последствии отменены
               самим интернет-ресурсом либо банком в соответствии с договором (возврат денег
               покупателю).

      Таким образом, успешной оплате соответствуют следующие типы:

               1       - Completed (Завершенная)
               4       - Authorized (Авторизованная)

      А отмененным платежам (возврату денег), следующие:

               5       - Refunded (Возвращенная)
               7       - Voided (Сброшенная после авторизации)




WebPay™ developer guide                                                                       19
Разработка платежного модуля
        Проверка платежа




 3       Повторные платежи, пополнение банковских карточек

      * Документация высылается по дополнительному запросу




WebPay™ developer guide                                      20

Mais conteúdo relacionado

Semelhante a Web pay development guide

Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Anatoly Kireev
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET
Media Gorod
 
Web forms tutorial
Web forms tutorialWeb forms tutorial
Web forms tutorial
evpolov
 
Виталий Дудка. Платформа для создания интернет-магазина Преимущества и возмож...
Виталий Дудка. Платформа для создания интернет-магазина Преимущества и возмож...Виталий Дудка. Платформа для создания интернет-магазина Преимущества и возмож...
Виталий Дудка. Платформа для создания интернет-магазина Преимущества и возмож...
Виталий Дудка
 
установка и настройка решения Cash24 платежный шлюз для word press
установка и настройка решения Cash24 платежный шлюз для word pressустановка и настройка решения Cash24 платежный шлюз для word press
установка и настройка решения Cash24 платежный шлюз для word press
tmrln03
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
Media Gorod
 
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
CodeFest
 

Semelhante a Web pay development guide (20)

Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
 
3 Все о разработке интернет проектов
3 Все о разработке интернет проектов3 Все о разработке интернет проектов
3 Все о разработке интернет проектов
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET
 
Доклад Д.Суслова (1С-Битрикс) - 22.03.2012
Доклад Д.Суслова (1С-Битрикс) - 22.03.2012Доклад Д.Суслова (1С-Битрикс) - 22.03.2012
Доклад Д.Суслова (1С-Битрикс) - 22.03.2012
 
Дмитрий Попов, Itees
Дмитрий Попов, IteesДмитрий Попов, Itees
Дмитрий Попов, Itees
 
Web forms tutorial
Web forms tutorialWeb forms tutorial
Web forms tutorial
 
Битрикс-Framework
Битрикс-FrameworkБитрикс-Framework
Битрикс-Framework
 
Что нового в 11.0?
Что нового в 11.0?Что нового в 11.0?
Что нового в 11.0?
 
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...
 
Виталий Дудка. Платформа для создания интернет-магазина Преимущества и возмож...
Виталий Дудка. Платформа для создания интернет-магазина Преимущества и возмож...Виталий Дудка. Платформа для создания интернет-магазина Преимущества и возмож...
Виталий Дудка. Платформа для создания интернет-магазина Преимущества и возмож...
 
1С-Битрикс: От Старта к Большому бизнесу
1С-Битрикс: От Старта к Большому бизнесу1С-Битрикс: От Старта к Большому бизнесу
1С-Битрикс: От Старта к Большому бизнесу
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
 
Платежная система
Платежная системаПлатежная система
Платежная система
 
Bitrix and 1c
Bitrix and 1cBitrix and 1c
Bitrix and 1c
 
установка и настройка решения Cash24 платежный шлюз для word press
установка и настройка решения Cash24 платежный шлюз для word pressустановка и настройка решения Cash24 платежный шлюз для word press
установка и настройка решения Cash24 платежный шлюз для word press
 
Сканирование WEB-приложений с аутентификацией
Сканирование WEB-приложений с аутентификациейСканирование WEB-приложений с аутентификацией
Сканирование WEB-приложений с аутентификацией
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
 
Управляем сайтом: Быстро. Просто. Эффективно.
Управляем сайтом: Быстро. Просто. Эффективно.Управляем сайтом: Быстро. Просто. Эффективно.
Управляем сайтом: Быстро. Просто. Эффективно.
 
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
CodeFest 2013. Биллевич В. — SDK мобильного сервиса. Добавление новой функцио...
 
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
 

Web pay development guide

  • 1. WebPay™ Developer Guide Руководство разработчика
  • 2. Оглавление Оглавление Оглавление Оглавление.....................................................................................................................................................................................2 Введение........................................................................................................................................................................................3 Об этом руководстве.................................................................................................................................................................3 Целевая аудитория...................................................................................................................................................................3 Порядок разработки..................................................................................................................................................................3 История версий.........................................................................................................................................................................3 Введение в среду разработки Sandbox........................................................................................................................................4 Параметры тестовой среды.....................................................................................................................................................4 Интерфейс Web-приложения...................................................................................................................................................4 Основной экран приложения...............................................................................................................................................5 Заполнение параметров ..................................................................................................................................................6 Установка секретного ключа...............................................................................................................................................7 Просмотр финансовых операций.......................................................................................................................................8 Разработка платежного модуля..................................................................................................................................................10 Формирование заказа для оплаты.........................................................................................................................................10 Таблица 2.1 Поля формы оплаты.....................................................................................................................................10 Пример формы оплаты.....................................................................................................................................................13 Электронная подпись заказа.............................................................................................................................................14 Оплата заказа.........................................................................................................................................................................15 Извещение об оплате.............................................................................................................................................................16 Проверка платежа...................................................................................................................................................................16 При возврате покупателя на интернет-ресурс.................................................................................................................16 При извещении о платеже.................................................................................................................................................18 Типы транзакций................................................................................................................................................................19 Повторные платежи, пополнение банковских карточек.............................................................................................................20 WebPay™ developer guide 2
  • 3. Введение Введение Введение Об этом руководстве Данное руководство описывает процесс разработки платежного модуля1 для приема платежей в сети Интернет c помощью системы WebPay™ и использование тестовой среды (sandbox2) для тестирования разрабатываемого модуля. Целевая аудитория Данный документ написан для Web разработчиков и специалистов желающих протестировать разработанный платежный модуль, перед подключением к системе WebPay™. Порядок разработки 1. Внимательно ознакомиться с настоящим руководством 2. Зайти и Web-приложение Sandbox (https://sandbox.webpay.by/) используя параметры полученные в письме от службы поддержки компании «Веб Пэй» 3. Ознакомиться с интерфейсом Sandbox и заполнить необходимые поля (см. Заполнение параметров) 4. Приступить к разработке платежного модуля согласно данной документации 5. Произвести тестирование модуля 6. По окончанию тестирования обратиться в службу поддержки компании «Веб Пэй», для осуществления проверки специалистами компании 7. При получении замечаний, доработать модуль, исправив полученные замечания 8. Получить письмо с новыми параметрами, для перевода платежного модуля из тестовой системы, в реальную платежную систему 9. Внести изменения в платежный модуль История версий История версий документа WebPay development guide. Дата изменения Описание изменений 25 мая 2009 Версия документа 1.0.0 1 Программное обеспечение, разрабатываемое на сервере подключаемого клиента на языке программирования 2 Sandbox – среда для тестирования разрабатываемых модулей. WebPay™ developer guide 3
  • 4. Введение История версий 1 Введение в среду разработки Sandbox WebPay™ Sandbox — это самостоятельное Web-приложение, являющиеся прототипом реальной системы и предназначено для тестирования и ознакомления с возможностями реальной системы WebPay™. По своим функциональным возможностям она ничем не отличается от рабочей копии, за исключением того, что не выполняет реальный процессинг банковских карточек, т.е. никакие действия не приводят к реальному перемещению средств на карточках. Разработку и тестирование платежных модулей всегда необходимо проводить в тестовой среде. Параметры тестовой среды URL адрес тестовой среды https://sandbox.webpay.by Имя пользователя высылается в письме Пароль высылается в письме Уникальный идентификатор магазина высылается в письме Интерфейс Web-приложения Интерфейс Web-приложения тестовой системы Sandbox и реальной системы отличаются только наличием специального баннера, указывающего на то, что данная среда является средой тестирования. Перед началом разработки, рекомендуется зайти в Web-приложение, ознакомиться с его содержимым и заполнить основные параметры Вашего биллинг аккаунта. WebPay™ developer guide 4
  • 5. Введение в среду разработки Sandbox Интерфейс Web-приложения Основной экран приложения После входа в Web-приложение, Вам будет отображена следующая страница На данной странице, отображается основная статистика по Вашему биллинг аккаунту, тут же Вы сможете отобразить статистику за выбранный интервал времени. Слева отображена панель навигации, которая предоставляет возможности управлять Вашим аккаунтом. WebPay™ developer guide 5
  • 6. Введение в среду разработки Sandbox Интерфейс Web-приложения Заполнение параметров Перед началом работы, Вам необходимо заполнить основные параметры биллинга, для этого необходимо перейти на страницу «Профайл» и заполнить обязательные поля. На этой странице, необходимо заполнить все поля помеченные * (звездочкой). Поле «Company Contact Email» необходимо для отсылки Вам уведомления о произошедших транзакциях на Вашем биллинге. Следующая страница «Настройки компании». На этой странице, необходимо задать имя или IP-адрес почтового сервера (SMTP Host) и параметры авторизации почтового сервера. При задании этих полей, всем покупателям Вашего магазина будет отсылаться уведомление от Вашего имени. Рекомендуется заводить отдельный почтовый аккаунт, для отправки уведомлений. На поле «Secret Key» остановимся по подробнее. WebPay™ developer guide 6
  • 7. Введение в среду разработки Sandbox Интерфейс Web-приложения Установка секретного ключа Секретный ключ, необходим для формирования электронной подписи каждого Вашего платежа (см. Электронная подпись заказа). Этот параметр является обязательным к заполнению и без него не возможно будет оплачивать Ваши товары или услуги. Для установки «Секретного ключа» необходимо заполнить поле Secret key. Это поле может содержать случайную последовательность символов WebPay™ developer guide 7
  • 8. Введение в среду разработки Sandbox Интерфейс Web-приложения Просмотр финансовых операций Для просмотра всех финансовых операций, необходимо воспользоваться пунктом меню «Платежи» На данной странице отображены все финансовый платежи (транзакции). Каждая такая транзакция привязана к Инвойсу (Invoice), у инвойса, может быть несколько транзакций, таких как: • Authorized – состояние авторизации платежа (денежные средства заблокированы на банковской карточке покупателя). В этом состоянии покупатель не видит списанной с него суммы, но данная сумма еще не перечислена на Ваш банковский счет. • Completed – денежные средства списаны с банковской карточки • System — системная транзакция. В поле Invoice содержится номер к которому привязаны транзакции. Для просмотра всех транзакции связанных с этим номером, а также значения с которыми был совершен платеж, необходимо нажать на ссылку. В отрытой странице Вам будет представлена информация о данном инвойсе. WebPay™ developer guide 8
  • 9. Введение в среду разработки Sandbox Интерфейс Web-приложения WebPay™ developer guide 9
  • 10. Введение в среду разработки Sandbox Интерфейс Web-приложения 2 Разработка платежного модуля Разработка платежного модуля осуществляется на стороне сервера подключаемого клиента и предполагает создание, либо внесение изменений в исходный код скриптов дорабатываемого Web-приложения. Принцип формирования и оплаты заказа 1) Формирование заказа. Создание html-страницы с обыкновенной html-формой. В качестве полей должны быть указаны и заполнены поля необходимы для совершения оплаты (см. Поля формы оплаты) 2) Переход на форму оплаты системы WebPay™ (https://secure.sandbox.webpay.by:8843), для ввода реквизитов пластиковой карточки (переход осуществляется POST запросом) 3) Ввод данных пластиковой карточки 4) Оплата заказа 5) Возврат на html-страницу модуля оплаты (в случае если покупатель не нажмет кнопку вернуться на форме оплаты, будет послано специальное извещение см. Извещение о оплате ) 6) Проверка параметров платежа 7) Оказание услуги (доставка товара) Формирование заказа для оплаты Для оплаты заказа необходимо сформировать форму со специальными полями, значения и описание полей представлены в Таблице 2.1 и POST методом перенаправить покупателя на страницу оплаты. Для тестирования это должен быть адрес https://secure.sandbox.webpay.by , для совершения реальных платежей https://secure.webpay.by Таблица 2.1 Поля формы оплаты Название поля Описание поля Примечание Основные поля формы оплаты *scart Поле не содержит значения и обозначает тип запроса Поле является обязательным Пример: <input type='hidden' name='*scart'> wsb_storeid Идентификатор магазина в системе WebPay™ Cодержит уникальный Поле является идентификатор магазина. обязательным Пример: <input type='hidden' name='wsb_storeid' value='123456789'> Данный идентификатор создается при регистрации в системе WebPay™ и высылается в письме. wsb_store Название магазина, которое будет отображаться на форме Максимальная длина поля Поле является оплаты. 64 символа обязательным WebPay™ developer guide 10
  • 11. Разработка платежного модуля Формирование заказа для оплаты Пример: <input type='hidden' name='wsb_store' value='Тестовый магазин'> wsb_order_num Идентификатор заказа, присваиваемый магазином Максимальная длина поля Поле является 64 символа обязательным Пример: <input type='hidden' name='wsb_order_num' value='ORDER_1234'> wsb_currency_id Идентификатор валюты. Буквенный трехзначный код На данный момент значение Поле является валюты согласно ISO4271 это поля должно быть BYR обязательным Пример: <input type='hidden' name='wsb_currency_id' value='BYR'> wsb_version Версия формы оплаты Текущий номер версии = 2 Пример: <input type='hidden' name='wsb_version' value='2'> wsb_language_id Идентификатор языка формы оплаты На данный момент поддерживаются два языка Пример: <input type='hidden' name='wsb_language_id' value='russian'> формы оплаты - русский (russian) - английский (english) Если данное поле не указано, то форма оплаты будет определять язык из параметров браузера покупателя. wsb_seed Случайная последовательность символов участвующих в см. Электронная подпись Поле является формировании электронной подписи заказа заказа обязательным Пример: <input type='hidden' name='wsb_seed' value='11123232001'> wsb_signature Контрольное значение (электронная подпись) заказа см. Электронная подпись Поле является результат выполнения функции sha1 (для версии 2. см. заказа обязательным поле wsb_version), либо md5, если версия протокола не указана. Данное значение является hex-последовательностью Пример: <input type='hidden' name='wsb_signature' value='8d4395dab7598c5f4b94d5bc4780f4af'> wsb_return_url URL адрес на который возвращается покупатель в случае К данному URL добавляются Поле является успешной оплаты значения Идентификатора обязательным заказа (wsb_order_num) и Пример: <input type='hidden' name='wsb_return_url' специальное значение value='http://yoursite.com/compete'> Номера транзакции в системе WebPay™. wsb_cancel_return_u URL адрес на который возвращается покупатель в случае К данному URL добавляются rl не успешной оплаты значения Идентификатора Поле является заказа (wsb_order_num) обязательным Пример: <input type='hidden' name='wsb_cancel_return_url' value='http://yoursite.com/cancel'> wsb_notify_url Данный URL вызывается вне зависимости от того, был ли К данному URL добавляются переход по URL в поле wsb_return_url или нет. Основное значения Идентификатора назначение это URL, это оповестить сайт о успешной заказа (wsb_order_num) и оплате, в случае, если пользователь не нажал кнопку специальное значение «Завершить» на форме оплаты. Номера транзакции в системе WebPay™. (см. Пример: <input type='hidden' name='wsb_notify_url' Извещение об оплате) value='http://yoursite.com/notify'> wsb_test Поле указывающие на проведение тестовой оплаты В тестовой среде Sandbox значение данного поля 1 — производить тестовую оплату игнорируется и всегда WebPay™ developer guide 11
  • 12. Разработка платежного модуля Формирование заказа для оплаты 0, или не указано поле — проводить реальную оплату принимается равным 1 Пример: <input type='hidden' name='wsb_test' value='1'> Список товаров к оплате wsb_invoice_item_n Наименование единицы товара Индекс {n}, должен ame[{n}] начинаться с 0 и Поле является увеличиваться на 1, для обязательным Пример: <input type='hidden' name='wsb_invoice_item_name[0]' value='Товар 1'> каждой последующей <input type='hidden' name='wsb_invoice_item_name[1]' value='Товар 2'> позиции … <input type='hidden' name='wsb_invoice_item_name[N-1]' value='Товар N'> wsb_invoice_item_q Количество единиц товара, целое число обозначающие, Индекс {n}, должен uantity[{n}] количество единиц товара каждого наименования начинаться с 0 и Поле является увеличиваться на 1, для обязательным Пример: каждой последующей <input type='hidden' name='wsb_invoice_item_quantiny[0]' value='2'> <input type='hidden' name='wsb_invoice_item_quantiny[1]' value='1'> позиции … <input type='hidden' name='wsb_invoice_item_quantiny[N-1]' value='1'> wsb_invoice_item_pr Цена единицы товара, целое число определяющее Индекс {n}, должен ice[{n}] стоимость каждой единицы товара (указывается в начинаться с 0 и Поле является белорусских рублях) увеличиваться на 1, для обязательным каждой последующей Пример: позиции <input type='hidden' name='wsb_invoice_item_price[0]' value='10000'> <input type='hidden' name='wsb_invoice_item_price[1]' value='2000'> … <input type='hidden' name='wsb_invoice_item_price[N-1]' value='4000'> wsb_tax Поле, значением которого является сумма налога, в Данное поле является не белорусских рублях, добавляемая к общей сумме заказа обязательным. Пример: <input type='hidden' name='wsb_tax' value='1000'> wsb_shipping_name Поле определяющие наименование(способа) доставки Данное поле является не обязательным. Пример: <input type='hidden' name='wsb_shipping_name' value='Доставка курьером'> <input type='hidden' name='wsb_shipping_price' value='2000'> wsb_shipping_price Поле, значением которого является сумма доставки, в Данное поле является не белорусских рублях, добавляемая к общей сумме заказа обязательным. wsb_discount_name Поле названия скидки Данное поле является не обязательным. Пример: <input type='hidden' name='wsb_discount_name' value='Дисконтная карта'> <input type='hidden' name='wsb_discount_price' value='580'> wsb_discount_price Поле, значением которого является сумма скидки, в Данное поле является не белорусских рублях, вычитаемая из общей суммы заказа обязательным. wsb_total Данное поле является вычисляемым. Значение этого поля Оплата не будет Поле является является общей суммой оплаты заказа. произведена, если wsb_total обязательным и посчитанное значения Правила вычисления общей суммы: товаров не будут совпадать. wsb_total = Покупателю будет wsb_invoice_item_quantiny[0] * wsb_invoice_item_price[0] + отображена ошибка. wsb_invoice_item_quantiny[1] * wsb_invoice_item_price[1] + ... wsb_invoice_item_quantiny[N] * wsb_invoice_item_price[N] + wsb_tax + wsb_shipping_price - wsb_discount_price Пример: <input type='hidden' name='wsb_total' value='19580'> WebPay™ developer guide 12
  • 13. Разработка платежного модуля Формирование заказа для оплаты Дополнительные поля wsb_email Электронный адрес покупателя. Значение данного поля будет автоматически Пример: подставлено в <input type='hidden' name='wsb_email' value='yourname@yoursite.com'> соответствующие поле формы оплаты wsb_phone Контактный телефон покупателя. Значение данного поля будет автоматически Пример: подставлено в <input type='hidden' name='wsb_phone' value='8171231231'> соответствующие поле wsb_icn Внутренний уникальный идентификатор пластиковой См. Повторные платежи, карточки Пополнение банковских карточек wsb_card Урезанный (триммированный) номер банковской карточки. См. Повторные платежи, Пополнение банковских карточек Пример формы оплаты <form action="https://secure.sandbox.webpay.by:8843/" method="post"> <input type="hidden" name="*scart"> <input type="hidden" name="wsb_version" value="2"> <input type="hidden" name="wsb_language_id" value="russian"> <input type="hidden" name="wsb_storeid" value="11111111" > <input type="hidden" name="wsb_store" value="Название Вашего магазина" > <input type="hidden" name="wsb_order_num" value="ORDER-12345678" > <input type="hidden" name="wsb_test" value="1" > <input type="hidden" name="wsb_currency_id" value="BYR" > <input type="hidden" name="wsb_seed" value="1242649174"> <input type="hidden" name="wsb_return_url" value="http://your site url.com/success.php"> <input type="hidden" name="wsb_cancel_return_url" value="http://your site url.com/cancel.php"> <input type="hidden" name="wsb_notify_url" value="http://your site url.com/notify.php"> <input type="hidden" name="wsb_email" value="no@body.tld" > <input type="hidden" name="wsb_phone" value="22-333-333" > <input type="hidden" name="wsb_invoice_item_name[]" value="Товар 1"> <input type="hidden" name="wsb_invoice_item_quantity[]" value="2"> <input type="hidden" name="wsb_invoice_item_price[]" value="10000"> <input type="hidden" name="wsb_invoice_item_name[]" value="Товар 2"> <input type="hidden" name="wsb_invoice_item_quantity[]" value="1"> <input type="hidden" name="wsb_invoice_item_price[]" value="500"> <input type="hidden" name="wsb_total" value="21950" > <input type="hidden" name="wsb_signature" value="40aa8af3ce7a1f7c3635ac2227475094a59d574c" > <input type="hidden" name="wsb_tax" value="1050"> <input type="hidden" name="wsb_shipping_name" value="Стоимость доставки" > <input type="hidden" name="wsb_shipping_price" value="980" > <input type="hidden" name="wsb_discount_name" value="Скидка на товар" > <input type="hidden" name="wsb_discount_price" value="580" > <input type="submit" value="Купить"> </form> WebPay™ developer guide 13
  • 14. Разработка платежного модуля Формирование заказа для оплаты Электронная подпись заказа Электронная подпись формируется для предотвращения изменений в форме платежа и должна присутствовать в каждой форме заказа. Все заказы без электронной подписи не будут рассматриваться системой WebPay™. Для формирования электронной подписи необходимо установить значение поля «Secret Key» в настройках Вашего биллинг аккаунта (см. Установка секретного ключа). В каждой форме заказа необходимо указывать поля wsb_seed – случайная последовательность символов (можно использовать текущее значение времени, к примеру unixtime) wsb_signature – непосредственно сама электронная подпись. Она должна быть сформирована согласно следующему правилу, значения следующих полей: wsb_seed wsb_storeid wsb_order_num wsb_test wsb_currency_id wsb_total «Secret Key» должны быть объединены в одну строку, порядок объединения не должен быть нарушен. Далее в зависимости от указанной версии протокола (wsb_version), считается MD5 (если версия не указана), либо SHA1 (для версии 2) объединенной строки. Пример формирования электронной подписи (на языке программирования PHP): $wsb_seed = 1242649174; $wsb_storeid = 11111111; $wsb_order_num = “ORDER-12345678”; $wsb_test = 1; $wsb_currency_id = “BYR”; $wsb_total = 21950; $SecretKey = “12345678901234567890”; //Значение объединенной строки: 124264917411111111ORDER-123456781BYR2195012345678901234567890 // для версии протокола 2 (wsb_version = 2) $wsb_signature = sha1($wsb_seed.$wsb_storeid.$wsb_order_num.$wsb_test.$wsb_currency_id.$wsb_total. $SecretKey); // 7a0142975bc660d219b793c650346af7ffce2473 // если версия не указана $wsb_signature = md5($wsb_seed.$wsb_storeid.$wsb_order_num.$wsb_test.$wsb_currency_id.$wsb_total. $SecretKey); // 4decb461a593852da78af8fb4ef9e8e5 WebPay™ developer guide 14
  • 15. Разработка платежного модуля Оплата заказа Оплата заказа После формирования полей заказа и нажатия кнопки «Оплатить», покупатель должен быть перенаправлен на страницу оплаты системы WebPay™ (тестовой, либо реальной), где ему будет предоставлена возможность ввести реквизиты своей банковской карточки WebPay™ developer guide 15
  • 16. Разработка платежного модуля Оплата заказа После успешной оплаты заказа, покупатель должен нажать кнопку «Завершить платеж и вернуться», в этом случае форма оплаты перенаправит его по URL-адресу указанному в поле wsb_return_url. При ошибке оплаты, и нажатии кнопки «Закончить» покупатель будет перенаправлен на URL- адрес указанный в поле wsb_cancel_return_url. В каждом из этих случаев, к URL-адресу будут дописаны значения wsb_order_num, а в случае успешной оплаты, будет так-же дописано значение номера транзакции в системе WebPay™. ВАЖНО Возможны ситуации, при которых покупатель, не нажмет кнопку «Вернуться» на форме оплаты. Для уведомления о успешной операции система WebPay™, через некоторое время отсылает специальное извещение (см. Извещение об оплате) Извещение об оплате При возврате на страницу интернет-ресурса в случае успешной оплаты (используется значение указанное в поле wsb_return_url), биллинг передает в параметрах GET запроса, номер заказа (значение поля wsb_order_num) и номер транзакции (поле wsb_tid) соответсвующий проведенному платежу. Если покупатель не нажал кнопку «Вернуться» с формы оплаты, биллинг известит интернет- ресурс о проведенной операции по адресу wsb_notify_url (если он указан в поле формы, либо задан в настройках аккаунта биллинга). Интернет-ресурс в случае оповещения, должен ответить кодом 200 ("HTTP/1.0 200 OK"), если сервер интернет-ресурса не отвечает положительно, а с момента начала отсылки уведомляющих запросов прошел 1 час, на адрес магазина отсылается электронное письмо, предупреждающее о сбое. Через 30 дней, если интернет-ресурс так и не смог принять уведомление, отсылка запросов прекращается, о чем интернет-ресурс также извещается электронным письмом. При разработке, необходимо учесть, что может придти извещение о платеже (wsb_notify_url), так и покупатель может вернуться на страницу интернет-ресурса указанному в поле (wsb_return_url) Проверка платежа Прежде чем доставить товар (оказать услугу), интернет-ресурс, обязан проверить совершенный покупателем платеж. При возврате покупателя на интернет-ресурс Для проверки платежа при возврате на страницу интернет-ресурса увазанному в поле wsb_return_url, необходимо выполнить API команду биллинга «get_transaction». Ниже приводится пример кода, для выполнения API команды в системе webpay.by. Необходимо учитывать, что запрос к тестовой среде необходимо отсылать на адрес https://sandbox.webpay.by, а к в реальной среде https://billing.webpay.by WebPay™ developer guide 16
  • 17. Разработка платежного модуля Проверка платежа Пример запроса на проверку платежа (PHP) ////////////////////////////////////////////////// // API Request (webpay.by) $postdata = '*API=&API_XML_REQUEST='.urlencode(' <?xml version="1.0" encoding="ISO-8859-1" ?> <wsb_api_request> <command>get_transaction</command> <authorization> <username>your_username</username> <password>your_md5_password</password> </authorization> <fields> <transaction_id>123456789 </transaction_id> </fields> </wsb_api_request> '); $curl = curl_init("https://sandbox.webpay.by"); curl_setopt ($curl, CURLOPT_HEADER, 0); curl_setopt ($curl, CURLOPT_POST, 1); curl_setopt ($curl, CURLOPT_POSTFIELDS, $postdata); curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0); $response = curl_exec ($curl); curl_close ($curl); echo $response; В результате выполнения запроса приходит XML-документ, содержащий следующие поля: • transaction_id - номер транзакции • batch_timestamp - время совершения транзакции • currency_id - валюта транзакции ( Примечание: представляет собой буквенный, трех-значный код в соответствии с ISO 4217 ) • amount - сумма транзакции • payment_method - метод совершения транзакции (возможные значения: cc - банковская карта, test - совершена без реального процессинга карты) • payment_type - тип транзакции • order_id - номер заказа в системе webpay.by • rrn - номер транзакции в системе Visa/MasterCard • wsb_signature - электронная подпись * * Электронная подпись вычисляется в случае если в настройках биллинга указан Secret Key (см. Электронная подпись) wsb_signature представляет собой hex-последовательность и является результатом выполнения функции MD5. В качестве аргумента функции MD5 служит текстовая последовательность, полученная путем простой конкатенации следующих полей: • transaction_id WebPay™ developer guide 17
  • 18. Разработка платежного модуля Проверка платежа • batch_timestamp • currency_id • amount • payment_method • payment_type • order_id • rrn • "Secret Key" Поля должны быть сконкатенированны в указанном порядке. При извещении о платеже После совершения удачного платежа, система webpay.by будет отсылать специально сформированный POST-запрос по адресу указанному в поле wsb_notify_url интернет-ресурса. В этом запросе содержится информация по платежу. Полученную информацию интернет- ресурс должен проверить в соответствии с требованиями выполнения заказа и ответить на запрос кодом: "HTTP/1.0 200 OK" Поля, содержащиеся в запросе: • batch_timestamp - время совершения транзакции • currency_id - валюта транзакции ( Примечание: представляет собой буквенный, трех-значный код в соответствии с ISO 4217 ) • amount - сумма транзакции • payment_method - метод совершения транзакции (возможные значения: cc - банковская карта, test - совершена без реального процессинга карты) • order_id - номер заказа в системе webpay.by • site_order_id - номер (имя) заказа, присвоенное магазином • transaction_id - номер транзакции • payment_type - тип транзакции • rrn - номер транзакции в системе Visa/MasterCard • wsb_signature - электронная подпись * * Электронная подпись вычисляется в случае если в настройках биллинга указан Secret Key (см. Электронная подпись) wsb_signature представляет собой hex-последовательность и является результатом выполнения функции MD5. В качестве аргумента функции MD5 служит текстовая последовательность, полученная путем простой конкатенации следующих полей: • batch_timestamp • currency_id • amount • payment_method • order_id • site_order_id • transaction_id WebPay™ developer guide 18
  • 19. Разработка платежного модуля Проверка платежа • payment_type • rrn • "Secret Key" Поля должны быть сконкатенированны в указанном порядке. Типы транзакций По типу транзакции (поле payment_type) делятся на следующие группы: 1 - Completed (Завершенная) 2 - Declined (Отклоненная) 3 - Pending (В обработке) 4 - Authorized (Авторизованная) 5 - Refunded (Возвращенная) 6 - System (Системная) 7 - Voided (Сброшенная после авторизации) ВАЖНО: При написании кода обработки дополнительных извещений, следует учитывать тип транзакции. Данный тип уведомления предназначен для извещения интернет-ресурса о успешно завершенных транзакциях и о транзакциях, которые в последствии отменены самим интернет-ресурсом либо банком в соответствии с договором (возврат денег покупателю). Таким образом, успешной оплате соответствуют следующие типы: 1 - Completed (Завершенная) 4 - Authorized (Авторизованная) А отмененным платежам (возврату денег), следующие: 5 - Refunded (Возвращенная) 7 - Voided (Сброшенная после авторизации) WebPay™ developer guide 19
  • 20. Разработка платежного модуля Проверка платежа 3 Повторные платежи, пополнение банковских карточек * Документация высылается по дополнительному запросу WebPay™ developer guide 20