Использование SDK для приложений Windows Store и Windows Phone

Реализация
Для проведения платежа необходимо использовать объект Processing, принимающий объект, который должен реализовать интерфейс IConfiguration.
Объект Processing предоставляет четыре события:

  • Success — возникает в случае успешного проведения платежа.
  • Decline — возникает в случае отказа в проведении.
  • Error — если в момент проведения платежа возникли какие-то ошибки, например, недоступна сеть.
  • ThreeDs — необходимо пройти дополнительную проверку по 3-D Secure.
В последнем случае необходимо показать пользователю страницу банка-эмитента для ввода кода или пароля, и обработать ответ. Можно все сделать вручную, а можно воспользоваться методом NavigateToAcsUrl, принимающим в качестве параметров пользовательский элемент управления — браузер (для каждой платформы он свой) и объект PayResponse.

Наконец, для вызова метода Pay, ему необходимо передать PayRequest, содержащий следующие поля:

  • Amount — сумма платежа.
  • Currency — валюта (поддерживаются рубли, американские доллары и евро).
  • OrderId — ID заказа, который вы генерируете в своей системе.
  • CardExpMonth — месяц окончания действия карты.
  • CardExpYear — год окончания действия карты.
  • CardCvv — CVC2 / CVV2.
  • CardHolderName — имя держателя карты.
  • CardNumber — номер карты.
  • Email — e-mail плательщика.
Пример кода для приложения Windows Store:

private void Pay()
{
    var conf = new Configuration
    {
        MerchantId = 1,
        Key = "PrivateKey",
    };

    var request = new PayRequest
    {
        Amount = 30m,
        Currency = Currency.Rub,
        OrderId = "335636462808",
        CardExpMonth = 1,
        CardExpYear = 2018,
        CardCvv = 100,
        CardHolderName = "CARD HOLDER",
        CardNumber = "4111111111111111",
        Email = "cardholder@example.com",
    };

    var po = new Processing(conf);
    po.ThreeDs += po_ThreeDs;
    po.Success += po_Success;
    po.Decline += po_Decline;
    po.Error += po_Error;

    po.Pay(request);

}

void po_Error(object sender, Exceptions.PaymentSDKException e)
{

}

void po_Decline(object sender, PayResponse e)
{

}

void po_Success(object sender, PayResponse e)
{

}

void po_ThreeDs(object sender, PayResponse e)
{
    ((Processing)sender).NavigateToAcsUrl(Browser, e);
}

class Configuration : IConfiguration
{
    public int MerchantId { get; set; }
    public string Key { get; set; }
}