Вы создаете веб-приложение для электронной коммерции, и вам необходимо поддержать несколько способов оплаты (Visa, Mastercard ... и т. Д.), Чтобы ваши клиенты могли легко оплачивать свои заказы. Вместо того, чтобы реализовать это самостоятельно, вы решите полагаться на доверенного стороннего поставщика, чтобы предоставить вам эти услуги.
Известная компания из Бельгии, которая предоставляет платежные услуги, является Ogone. Они предоставляют более 40 международных и местных способов оплаты. Они обрабатывают транзакции оплаты между вашими клиентами, вашим интернет -магазином и поставщиками методов оплаты (например, Visa).
Конечно, вы должны заплатить небольшую сумму за каждую транзакцию, обрабатываемую Ogone, но это покупает вам интегрированную защиту от мошенничества, безопасность, инструменты для управления вашими платежами ... и многое другое. Стоимость реализации всего этого самостоятельно намного больше.
Таким образом, вы регистрируетесь на учетную запись Ogone и решите интегрировать их систему в свое веб -приложение.
Как мы можем это понять? Давайте узнаем ...
Перво -наперво, перейдите на веб -сайт Ogone и зарегистрируйтесь для бесплатной тестовой учетной записи. В верхнем правом углу сайта вы «найдете кнопку с надписью« Создайте бесплатную тестовую учетную запись ».
Рисунок 1 - Испытательная учетная запись

Нажмите на него и заполните полученную форму. Убедитесь, что данные, которые вы вводите в этой форме, верны. После отправки вашего запроса на новую тестовую учетную запись сотрудник Ogone проверит ваши данные, и в зависимости от результата будет утверждать или отклонить ваш запрос. Этот процесс может занять несколько часов. Довольно раздражает, но обойти это никакого пути.
Как только ваша учетная запись будет одобрена, вы получите электронное письмо, которое содержит ваш пароль. Теперь вы готовы войти в администрацию торговца Ogone.
Прежде чем вы сможете начать использовать тестовую учетную запись, вам необходимо настроить следующие настройки:
Чтобы настроить параметры подписки, нажмите на учетную запись опции, отображаемая в меню в левой стороне экрана.
Рисунок 2 - Меню торговцев

На странице учетной записи вам будет представлено несколько вариантов, выберите опцию «Ваша подписка». Теперь вам нужно выбрать тип подписки. Выберите «Приключение» и нажмите кнопку с надписью «Подтвердите и перейдите к вашим параметрам».
Здесь вы можете добавить ряд параметров в свою подписку, такие как обнаружение мошенничества, хостинг изображений, выставление счетов ... и т. Д. Для этой демонстрации нам не нужны дополнительные параметры, поэтому просто нажмите «Подтвердить», чтобы сохранить свои настройки.
После того, как вы настроили свой тип подписки, вы можете продолжить, добавив методы оплаты, которые вы хотите предложить своим клиентам. Нажмите на методы оплаты опциона в меню администрирования торговцев (рисунок 2). После того, как вы добавили Visa в список «Выбранные методы оплаты», вам необходимо отредактировать этот способ оплаты и установить ее на активированную.
Рисунок 3 - Активировать метод оплаты визы

Просто нажмите на параметр «Изменить», показанную на рисунке 3, отметьте метод оплаты как активированная (активация: да) и нажмите «Отправить». Вы можете использовать номер карты 4111 1111 1111 1111 для тестирования выплат визы. Просто введите все, что для истечения срока действия и 3 цифрового кода безопасности.
И последнее, но не менее важно, вам нужно настроить некоторые технические настройки, которые определяют, как будут обрабатываться онлайн -платежи. Перейдите, нажав на опцию техническую информацию, отображаемую в меню (рисунок 2).
Полученная страница разделена на следующие вкладки:
Просто нажмите на эти ссылки, чтобы увидеть скриншоты, как я настроил свою тестовую учетную запись Ogone. Я установил подпись SHA-1-IN и SHA-1-Out в «Microsoftaspnet4». Мы вернемся к этому позже.
Теперь вы создали и настроили свою тестовую учетную запись Ogone. Вы готовы сделать свой первый онлайн -платеж.
Я создал простой проект веб -приложений ASP.NET, который демонстрирует, как вы можете интегрировать платежи Ogone в свой веб -сайт ASP.NET.
Рисунок 4 - Решение

Это веб -приложение содержит только несколько страниц:
Примечание : как вы можете видеть, проект также содержит несколько файлов кода. Мы обсудим их в следующих разделах. Эти файлы содержат необходимый код для обработки процесса оплаты с Ogone. Не стесняйтесь улучшить дизайн, я просто включил минимум кода, чтобы заставить вещи работать.
Не нажимайте на кнопку «Пуск», отображаемая ниже, это просто скриншот. Вот как выглядит страница default.aspx:
Рисунок 5 - страница default.aspx

Ссылка (или идентификатор порядка) генерируется для однозначного идентификации заказа, который оплачивается. Огоне отслеживает эти ссылки. Вы не можете обработать одну и ту же ссылку дважды. Вот почему я решил использовать случайно сгенерированную GUID для этого примера. Мне пришлось сократить GUID до 30 символов, потому что Ogone не допускает больше, чем этот предел.
Очевидно, что помимо этой ссылки вам также необходимо указать сумму, которая должна быть оплачена. Пример кода также отправляет адрес электронной почты рассматриваемого клиента. Таким образом, Ogone может отправить электронное письмо с клиентом, что его оплата была успешно обработана.
Давайте посмотрим на код, скрытый за событием нажатия кнопки:
Листинг 1 - Запрос на оплату Ogone
// Persist order to database
// ...
OgoneRequest ogoneRequest = new OgoneRequest ( ) ;
ogoneRequest . RequestPayment ( this . _reference , amount , customerEmail ) ;
// Clear shopping cart
// ...Вы можете начать платеж, создав новый экземпляр класса OgonereQuest и вызовите метод запроса Paypayment (...). Этот метод требует 3 параметров, а именно ссылки на заказ, сумму, которая необходимо оплатить, и адрес электронной почты клиента.
Листинг 2 - конструктор OgonereQuest
public OgoneRequest ( )
{
OgoneUrl = ConfigurationManager . AppSettings [ "Ogone_Url" ] ;
Psid = ConfigurationManager . AppSettings [ "Ogone_PSID" ] ;
ShaKey = ConfigurationManager . AppSettings [ "Ogone_SHA1_IN" ] ;
Currency = ConfigurationManager . AppSettings [ "Ogone_Currency" ] ;
Language = ConfigurationManager . AppSettings [ "Ogone_Language" ] ;
AcceptUrl = ConfigurationManager . AppSettings [ "Ogone_AcceptUrl" ] ;
ExceptionUrl = ConfigurationManager . AppSettings [ "Ogone_ExceptionUrl" ] ;
CancellationUrl = ConfigurationManager . AppSettings [ "Ogone_CancellationUrl" ] ;
}Конструктор класса OgonereQuest инициализирует некоторые свойства, читая некоторые значения из файла конфигурации приложения (web.config). Вам необходимо указать URL-адрес для вызова для запуска процесса оплаты, вашего Ogone PSID (имя пользователя), ключ SHA1-in, который вы указали на администрации продавца, URL-адреса перенаправления ... и т. Д.
Листинг 3 - Метод запроса PREECHPAYMENT (...)
public void RequestPayment ( string reference , double amount , string email )
{
// Multiply by one hundred and round to zero decimals
amount = Math . Round ( amount * 100 , 0 ) ;
RemotePost post = new RemotePost { Url = this . OgoneUrl } ;
post . Add ( "pspid" , this . Psid ) ;
post . Add ( "orderid" , reference ) ;
post . Add ( "amount" , amount . ToString ( ) ) ;
post . Add ( "currency" , this . Currency ) ;
post . Add ( "language" , this . Language ) ;
post . Add ( "email" , email ) ;
// Hash
post . Add ( "SHASign" , Ogone . GenerateHash (
reference + amount + this . Currency +
this . Psid + this . ShaKey ) ) ;
// Redirection URLs
post . Add ( "accepturl" , this . AcceptUrl ) ;
post . Add ( "exceptionurl" , this . ExceptionUrl ) ;
post . Add ( "cancelurl" , this . CancellationUrl ) ;
post . Post ( ) ;
}Метод requestPayment (...) инициирует новый процесс оплаты, делая пост HTTP с использованием класса RemotePost. Вся необходимая информация включена в пост, такой как ваш PSID, сумма, которая должна быть оплачена, язык, знак SHA1 ... и т. Д.
Вам необходимо вычислить хэш SHA1, используя подпись SHA1-in, которую вы настроили в администрировании торговцев. Ogone утверждает, что вам также необходимо включить ссылку, сумму, валюту и ваш PSID в этот хэш. Позже вернемся к расчету хэшей SHA1.
Примечание : HTTP -пост отправляет вдоль некоторых URL -адресов перенаправления, которые Ogone будет использовать, когда платеж будет произведен, отменен ... и т. Д. Если вы не предоставите их, то будут использоваться URL -адреса по умолчанию, настроенные в администрации торговцев (вкладка «обратная связь с транзакцией» под технической информацией).
Рисунок 6 - Подтверждение оплаты

После начала процесса оплаты вы будете перенаправлены на новую страницу, как показано на рисунке выше. Вы можете изменить макет этой страницы, указав дополнительные параметры в посте HTTP. Посмотрите на исходный код, сопровождающий эту статью и официальную документацию Ogone для получения дополнительной информации по этому вопросу.
Если пользователь нажимает кнопку «Отмена», то процесс оплаты будет закончен, и он будет перенаправлен на страницу PhoutateCancelled.aspx. На этой странице просто показано сообщение о том, что пользователь отменил процесс оплаты.
Но мы настроили нашу учетную запись Ogone таким образом, что вся соответствующая информация, касающаяся процесса оплаты, включена в строку запроса. Например:
http: // localhost: 3767/paymentcancelled.aspx? orderid = 246cf6f0-8bad-4edb-806c-eed3fb & currence = eur & summ = 19,99 и pm = creditcard & acceptance = & status = 1 & Cardno = & ed = & cn = & trxdate = 04%2f08%2f10 & payid = 6806803 & ncerror = & brand = ... и т. Д.
Вы можете извлечь информацию, такую как оригинальная ссылка на заказ, сумма, метод оплаты (например, VISA), статус успеха оплаты ... и т. Д. Вы можете зарегистрировать или отказаться от этой информации, если хотите. Это зависит от вас. Ogone также включает хеш SHA1, составленный с помощью подписи SHA1-Out, настроенной в администрации торговцев. Этот хэш позволяет вам проверить личность человека, который сделал запрос и обоснованность данных, представленных в строке запроса.
Если процесс оплаты успешно завершен, то Ogone перенаправляет пользователя на страницу PulationAccepted.aspx. Строка запроса также будет включать те же данные. Во время события загрузки страницы статус платежа и обоснованность хеша SHA проверяются. Если оба верны, оплата принимается.
Листинг 4 - Обработчик событий нагрузки страницы платеж
OgonePaymentStatus status = OgoneResponse . Status ;
// Invalid Sha key returned from Ogone?
bool paymentSucceeded = OgoneResponse . IsShaSignValid && Ogone . IsPaymentStatusValid ( status ) ;Замечание : Ogone включает параметр, называемый статусом (целое число) в строке запроса. Этот статус информирует вас о статусе платежа. Пример кода для этой статьи завершил некоторые из этих значений в перечисление, называемое OgonePaymentStatus. Проверьте официальную документацию Ogone для списка всех возможных значений. Метод iSpaymentStatusValid (...) проверяет, является ли параметр входящего состояния одним из значений, которые сообщают нам о том, что платеж был произведен.
Тип класса OgonerSponse - это просто небольшая обертка, которая обрабатывает дело с параметрами строки запроса, которые включает Ogone, когда он перенаправляет пользователя обратно на ваш сайт.
В листинге 5 показан небольшая выдержка из этого класса. Свойство isshasignvalid считывает подпись Sha1-Out из файла конфигурации приложения (web.config) и пересчитывает знак SHA. Для этого вы должны включить другие данные, такие как сумма, ссылка на заказ, валюта ... и т. Д. (Проконсультируйтесь с официальной документацией Ogone для получения дополнительной информации).
Если вычисленный знак SHA соответствует тому, что включен в строку запроса, мы имеем дело с запросом, который происходит из Ogone, и данные в параметрах строки запроса действительны.
Листинг 5 - класс OgonerSponse
public static class OgoneResponse
{
public static string OrderId { get { return HttpContext . Current . Request [ "orderid" ] ; } }
public static string Amount { get { return HttpContext . Current . Request [ "amount" ] ; } }
public static string ShaSign { get { return HttpContext . Current . Request [ "shasign" ] ; } }
public static bool IsShaSignValid
{
get
{
string key = OrderId + Currency + Amount + PaymentMethod + AcceptanceCode +
( int ) Status + CardNumber + PaymentId + NcError + Brand +
ConfigurationManager . AppSettings [ "Ogone_SHA1_OUT" ] ;
return ShaSign == Ogone . GenerateHash ( key ) ;
}
}
} Листинг 6 показывает вам один возможный способ, как вы можете рассчитать хэш SHA1 для строки. Строка преобразуется в массив байтов, а затем кодируется с использованием SHA1CryptoServiceProvider. Полученный хэш затем превращается в шестнадцатеричный формат.
Листинг 6 - Расчет хэшей SHA1
public static string GenerateHash ( string input )
{
byte [ ] bytes = new ASCIIEncoding ( ) . GetBytes ( input ) ;
SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider ( ) ;
byte [ ] hash = sha . ComputeHash ( bytes ) ;
StringBuilder result = new StringBuilder ( ) ;
for ( int i = 0 ; i < 20 ; i ++ )
{
string temp = hash [ i ] . ToString ( "X2" ) ;
if ( temp . Length == 1 )
{
temp = "0" + temp ;
}
result . Append ( temp ) ;
}
return result . ToString ( ) ;
}И с этим статья заканчивается ...
Я надеюсь, что вам понравился этот урок о том, как интегрировать платежные услуги Ogone с вашим веб-приложением электронной коммерции. Чтобы подтвердить то, что мы рассмотрели с точки зрения разработчика: