В данном разделе приведены примеры скриптов Robokassa. Рассмотрим, какие параметры и переменные используются в скриптах и какие значения для них могут быть использованы.
              
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
          
          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;
            }
          }
                        
                1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21/ 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 needecho "<a href='/ru/$url'>Payment link</a>";
              
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
          
          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 sMyCrc = 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;
            }
          }
                        
                1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23// 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 signatureecho "OK$inv_id\n";// perform some action (change order state to paid)
              
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
                
                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;
                  }
                }
                          
                1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26/ 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 proceedsecho "Thank you for using our service\n";
              
1
2
3
4
5
6
7
8
9
                
                    // HTML form. Path to action.php handler
                    // необходимо указать адрес php скрипта
                    <form action="http://site.ru/action.php" method="POST">
                    <meta charset="utf-8" />
                    <input type="text" name="out_sum" placeholder="Сумма платежа" required>
                    <input type=submit value='Оплатить'>
                    </form>
                          
                1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38<?phpif (!empty($_POST["out_sum"])) {$out_sum = trim(htmlspecialchars(strip_tags($_POST["out_sum"])));$mrh_login = "udentifier"; // идентификатор магазина$mrh_pass1 = "password_1"; // пароль #1$inv_id = ""; // номер счета$items = array ('items' =>array (0 =>array ('name' => 'name','quantity' => 1,'sum' => trim(htmlspecialchars(strip_tags($_POST["out_sum"]))),'payment_method' => 'full_payment','payment_object' => 'commodity','tax' => 'none',),),);$arr_encode = json_encode($items); // Преобразовываем JSON в строку$receipt = urlencode($arr_encode);$receipt_urlencode = urlencode($receipt);$inv_desc = "description"; // описание заказа$crc = md5("$mrh_login:$out_sum:$inv_id:$receipt:$mrh_pass1"); // формирование подписи// Перенаправляем пользователя на страницу оплатыHeader("Location: https://auth.robokassa.ru/Merchant/Index.aspx?MrchLogin=$mrh_login&OutSum=$out_sum&InvId=$inv_id&Receipt=$receipt_urlencode&Desc=$inv_desc&SignatureValue=$crc");}