Top.Mail.Ru
Подпишитесь на наш телеграм канал

Примеры скриптов на PHP, ASP.NET, Python.

04.11.2020

Вы можете использовать весь функционал нашего сервиса без собственного сайта, подключить к нему сайт на той или иной системе управления – или, если вы разбираетесь в программировании, сделать всё самостоятельно. Рассмотрим примеры скриптов на PHP, ASP.NET и Python (проекты на Django).


PHP

Ознакомиться примерами реализации кода, можно здесь.

Формирование URL переадресации пользователя на оплату.


// your registration data
$mrh_login = "test";     // your login here
$mrh_pass1 = "securepass1"; // merchant pass1 here


// order properties
$inv_id = 5;           // shop's invoice number
                  // (unique for shop's lifetime)
$inv_desc = "desc"; // invoice desc
$out_summ = "5.12"; // invoice summ


// build CRC value
$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1");

// build URL
$url = "https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=$mrh_login&"
  "OutSum=$out_summ&InvId=$inv_id&Description=$inv_desc&SignatureValue=$crc";


// print URL if you need
echo "<a href='/ru/$url'>Payment link</a>";


Получение уведомления об исполнении операции (ResultURL)


// as a part of ResultURL script


// your registration data
$mrh_pass2 = "securepass2"; // merchant pass2 here


// HTTP parameters:
$out_summ = $_REQUEST["OutSum"];
$inv_id = $_REQUEST["InvId"];
$crc = strtoupper($_REQUEST["SignatureValue"]);


// build own CRC
$my_crc = strtoupper(md5("$out_summ:$inv_id:$mrh_pass2"));


if ($my_crc != $crc)
{
 echo "bad sign\n";
 exit();
}


// print OK signature
echo "OK$inv_id\n";


// perform some action (change order state to paid)


Проверка параметров в скрипте завершения операции SuccessURL)


// as a part of SuccessURL script


// your registration data
$mrh_pass1 = "securepass1"; // merchant pass1 here

// HTTP parameters:
$out_summ = $_REQUEST["OutSum"];
$inv_id = $_REQUEST["InvId"];
$crc = $_REQUEST["SignatureValue"];


$crc = strtoupper($crc); // force uppercase


// build own CRC
$my_crc = strtoupper(md5("$out_summ:$inv_id:$mrh_pass1"));


if ($my_crc != $crc)
{
 echo "bad sign\n";
 exit();
}


// you can check here, that resultURL was called
// (for better security)


// OK, payment proceeds
echo "Thank you for using our service\n";


ASP.NET

Скачать архив с примерами реализации кода, можно здесь.

Формирование URL-переадресации пользователя на оплату.


using System;

using System.Text;

using System.Globalization;

using System.Security.Cryptography;


public partial class Init : System.Web.UI.Page

{

 protected void Page_Load(object sender, EventArgs e)

 {

  // your registration data

  string sMrchLogin = "test";

  string sMrchPass1 = "securepass1";

  // order properties

  decimal nOutSum = 5.12M;

  int nInvId = 5;

  string sDesc = "desc";


  string sOutSum = nOutSum.ToString("0.00", CultureInfo.InvariantCulture);

  string sCrcBase = string.Format("{0}:{1}:{2}:{3}",

                               sMrchLogin, sOutSum, nInvId, sMrchPass1);


  // build CRC value

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

byte[] bSignature = md5.ComputeHash(Encoding.ASCII.GetBytes(sCrcBase));


  StringBuilder sbSignature = new StringBuilder();

  foreach (byte b in bSignature)

     sbSignature.AppendFormat("{0:x2}", b);


  string sCrc = sbSignature.ToString();


  // LinkButtonPay is System.Web.UI.WebControls.LinkButton;

   LinkButtonPay.Text = "Payment link";

  // build URL

  LinkButtonPay.PostBackUrl = "https://auth.robokassa.ru/Merchant/Index.aspx?&quot +

                                 "MerchantLogin=" + sMrchLogin +

                                 "&OutSum=" + sOutSum +

                                 "&InvId=" + nInvId +

                                 "&Description=" + sDesc +

                                 "&SignatureValue=" + sCrc;

 }

}

Получение уведомления об исполнении операции ResultURL


using System;
using System.Web;
using System.Text;
using System.Globalization;
using System.Security.Cryptography;


public partial class Result : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
  {
   // your registration data
   string sMrchPass2 = "securepass2";


   // HTTP parameters
   string sOutSum = GetPrm("OutSum");
   string sInvId = GetPrm("InvId");
   string sCrc = GetPrm("SignatureValue");


   string sCrcBase = string.Format("{0}:{1}:{2}",
                                sOutSum, sInvId, sMrchPass2);

   // build own CRC
   MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
   byte[] bSignature = md5.ComputeHash(Encoding.ASCII.GetBytes(sCrcBase));

   StringBuilder sbSignature = new StringBuilder();
   foreach (byte b in bSignature)
      sbSignature.AppendFormat("{0:x2}", b);


    string sCrc = sbSignature.ToString();


   if (sMyCrc.ToUpper() != sCrc.ToUpper())

    {

    Response.Write("bad sign");

    return;

   }


   Response.Write(string.Format("OK{0}", sInvId));

   // perform some action (change order state to paid)

  }


   private string GetPrm(string sName)

   {

   string sValue;

   sValue = HttpContext.Current.Request.Form[sName] as string;


   if (string.IsNullOrEmpty(sValue))

    sValue = HttpContext.Current.Request.QueryString[sName] as string;


    if (string.IsNullOrEmpty(sValue))

    sValue = String.Empty;


   return sValue;

   }

 }


Проверка параметров в скрипте завершения операции (SuccessURL)


using System;
using System.Web;
using System.Text;
using System.Globalization;
using System.Security.Cryptography;


public partial class Success : System.Web.UI.Page

{

 protected void Page_Load(object sender, EventArgs e)

  {

   // your registration data

  string sMrchPass1 = "securepass1";


   // HTTP parameters

  string sOutSum = GetPrm("OutSum");

  string sInvId = GetPrm("InvId");

  string sCrc = GetPrm("SignatureValue");


  string sCrcBase = string.Format("{0}:{1}:{2}",

       sOutSum, sInvId, sMrchPass1);


  // build own CRC

  MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

  byte[] bSignature = md5.ComputeHash(Encoding.ASCII.GetBytes(sCrcBase));


  StringBuilder sbSignature = new StringBuilder();

  foreach (byte b in bSignature)

    sbSignature.AppendFormat("{0:x2}", b);

  


  string sMyCrc = sbSignature.ToString();


  if (sMyCrc.ToUpper() != sCrc.ToUpper())

  {

   Response.Write("bad sign");

   return;

   }


   // you can check here, that ResultURL was called

  // (for better security)


  // OK, payment proceeds

  Response.Write("Thank you for using our service");

 }


  private string GetPrm(string sName)

 {

  string sValue;

   sValue = HttpContext.Current.Request.Form[sName] as string;


  if (string.IsNullOrEmpty(sValue))

    sValue = HttpContext.Current.Request.QueryString[sName] as string;


   if (string.IsNullOrEmpty(sValue))

    sValue = String.Empty;


  return sValue;

  }

}


Python (проекты на Django).

Для работы потребуется Django версии 1.3.1 или выше. Используйте Django-Robokassa версии 0.9.3, если проект на django 1.2.x или django 1.1.x.

Всю информацию по настройке и использованию можно получить здесь.

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


Понравилась статья?
Средняя оценка: 1
Количество голосов: 1

Остались вопросы?
Мы работаем круглосуточно
Звоните: 8-800-500-25-57