Ознакомиться примерами реализации кода, можно здесь.
Формирование 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";
Скачать архив с примерами реализации кода, можно здесь.
Формирование 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?" +
"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;
}
}
Для работы потребуется Django версии 1.3.1 или выше. Используйте Django-Robokassa версии 0.9.3, если проект на django 1.2.x или django 1.1.x.
Всю информацию по настройке и использованию можно получить здесь.
Перед началом работ обязательно изучите нашу документацию. Приложение реализует протокол взаимодействия, описанный в этом документе.
Периодичность выхода дайджеста - 1 раз в месяц. На указанный e-mail отправлено письмо-подтверждение.