PageRenderTime 45ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/sale/payment/eximb/payment.php

https://gitlab.com/alexprowars/bitrix
PHP | 106 lines | 94 code | 12 blank | 0 comment | 10 complexity | 2cddba5820912aaa727fe4773631d0d6 MD5 | raw file
  1. <?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();?><?
  2. include(GetLangFileName(dirname(__FILE__)."/", "/payment.php"));
  3. if(!function_exists("bx_hmac"))
  4. {
  5. function bx_hmac($algo, $data, $key, $raw_output = false)
  6. {
  7. $algo = mb_strtolower($algo);
  8. $pack = "H".mb_strlen($algo("test"));
  9. $size = 64;
  10. $opad = str_repeat(chr(0x5C), $size);
  11. $ipad = str_repeat(chr(0x36), $size);
  12. if (mb_strlen($key) > $size) {
  13. $key = str_pad(pack($pack, $algo($key)), $size, chr(0x00));
  14. } else {
  15. $key = str_pad($key, $size, chr(0x00));
  16. }
  17. $lenKey = mb_strlen($key) - 1;
  18. for ($i = 0; $i < $lenKey; $i++) {
  19. $opad[$i] = $opad[$i] ^ $key[$i];
  20. $ipad[$i] = $ipad[$i] ^ $key[$i];
  21. }
  22. $output = $algo($opad.pack($pack, $algo($ipad.$data)));
  23. return ($raw_output) ? pack($pack, $output) : $output;
  24. }
  25. }
  26. $amount = CSalePaySystemAction::GetParamValue("SHOULD_PAY");
  27. $amount = number_format($amount, 2, ".", "");
  28. $currency = CSalePaySystemAction::GetParamValue("CURRENCY");
  29. if($currency == '')
  30. $currency = "UAH";
  31. $order = CSalePaySystemAction::GetParamValue("ORDER_ID");
  32. if(mb_strlen($order) < 6)
  33. {
  34. $n = 6 - mb_strlen($order);
  35. for($i = 0; $i < $n; $i++)
  36. $order = "0".$order;
  37. }
  38. $desc = trim(CSalePaySystemAction::GetParamValue("ORDER_DESC").CSalePaySystemAction::GetParamValue("ORDER_ID"));
  39. $m_name = CSalePaySystemAction::GetParamValue("MERCH_NAME");
  40. $m_url = CSalePaySystemAction::GetParamValue("MERCH_URL");
  41. $merchant = CSalePaySystemAction::GetParamValue("MERCHANT");
  42. $terminal = CSalePaySystemAction::GetParamValue("TERMINAL");
  43. $email = CSalePaySystemAction::GetParamValue("EMAIL");
  44. $backref = htmlspecialcharsbx(CSalePaySystemAction::GetParamValue("SHOP_RESULT"));
  45. $mac = CSalePaySystemAction::GetParamValue("MAC");
  46. if(CSalePaySystemAction::GetParamValue("IS_TEST") <> '')
  47. $server_url = "https://3ds.eximb.com:443/cgi-bin/cgi_test";
  48. else
  49. $server_url = "https://3ds.eximb.com/cgi-bin/cgi_link";
  50. $trtype = 0;
  51. $country = "";
  52. $merch_gmt = "";
  53. $time = "";
  54. $var = unpack("H*r", ToUpper(mb_substr(md5(uniqid(30)), 0, 8)));
  55. $nonce = $var[r];
  56. $key = pack("H*", $mac);
  57. $time = gmdate("YmdHis", time());
  58. $sign = bx_hmac("sha1",
  59. ($amount <> '' ? mb_strlen($amount).$amount : "-").
  60. ($currency <> '' ? mb_strlen($currency).$currency : "-").
  61. ($order <> '' ? mb_strlen($order).$order : "-").
  62. ($desc <> '' ? mb_strlen($desc).$desc : "-").
  63. ($m_name <> '' ? mb_strlen($m_name).$m_name : "-").
  64. ($m_url <> '' ? mb_strlen($m_url).$m_url : "-").
  65. ($merchant <> '' ? mb_strlen($merchant).$merchant : "-").
  66. ($terminal <> '' ? mb_strlen($terminal).$terminal : "-").
  67. ($email <> '' ? mb_strlen($email).$email : "-").
  68. ($trtype <> '' ? mb_strlen($trtype).$trtype : "-").
  69. "--".
  70. ($time <> '' ? mb_strlen($time).$time : "-").
  71. ($nonce <> '' ? mb_strlen($nonce).$nonce : "-").
  72. ($backref <> '' ? mb_strlen($backref).$backref : "-")
  73. ,
  74. $key
  75. );
  76. ?>
  77. <form name="cardform" action="<?=$server_url?>" method="post">
  78. <input type="hidden" name="TRTYPE" VALUE="<?=$trtype?>">
  79. <input type="hidden" name="AMOUNT" value="<?=$amount?>">
  80. <input type="hidden" name="CURRENCY" value="<?=$currency?>">
  81. <input type="hidden" name="ORDER" value="<?=$order?>">
  82. <input type="hidden" name="DESC" value="<?=htmlspecialcharsbx($desc)?>">
  83. <input type="hidden" name="MERCH_NAME" value="<?=htmlspecialcharsbx($m_name)?>">
  84. <input type="hidden" name="MERCH_URL" value="<?=htmlspecialcharsbx($m_url)?>">
  85. <input type="hidden" name="MERCHANT" value="<?=htmlspecialcharsbx($merchant)?>">
  86. <input type="hidden" name="TERMINAL" value="<?=htmlspecialcharsbx($terminal)?>">
  87. <input type="hidden" name="EMAIL" value="<?=htmlspecialcharsbx($email)?>">
  88. <input type="hidden" name="LANG" value="">
  89. <input type="hidden" name="BACKREF" value="<?=$backref?>">
  90. <input type="hidden" name="NONCE" value="<?=$nonce?>">
  91. <input type="hidden" name="P_SIGN" value="<?=$sign?>">
  92. <input type="hidden" name="TIMESTAMP" value="<?=$time?>">
  93. <input type="submit" class="btn btn-primary" value="<?=GetMessage("PAY_BUTTON")?>" name="send_button">
  94. </form>