Advertisement
Guest User

Untitled

a guest
Sep 13th, 2018
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.80 KB | None | 0 0
  1. <?php
  2.  
  3. // Return encrypt data in base64
  4. function encryptDataInBase64($input, $key) {
  5. $alg = MCRYPT_RIJNDAEL_128; // AES
  6. $mode = MCRYPT_MODE_ECB; // ECB
  7. // PKCS5Padding
  8. $block_size = mcrypt_get_block_size($alg, $mode);
  9. $pad = $block_size - (strlen($input) % $block_size);
  10. $input .= str_repeat(chr($pad), $pad);
  11. $crypttext = mcrypt_encrypt($alg, $key, $input, $mode);
  12. $encryptDataInBase64 = base64_encode($crypttext);
  13. return $encryptDataInBase64;
  14. }
  15.  
  16. // Return hash in base64
  17. function hashDataInBase64($input) {
  18. $output = hash("sha256", $input, true);
  19. $hashDataInBase64 = base64_encode($output);
  20. return $hashDataInBase64;
  21. }
  22.  
  23. // Create signature
  24. function createSignature($input, $key) {
  25. $alg = MCRYPT_RIJNDAEL_128; // AES
  26. $mode = MCRYPT_MODE_ECB; // ECB
  27. // PKCS5Padding
  28. $block_size = mcrypt_get_block_size($alg, $mode);
  29. $pad = $block_size - (strlen($input) % $block_size);
  30. $input .= str_repeat(chr($pad), $pad);
  31. // Perform encryption
  32. $crypttext = mcrypt_encrypt($alg, $key, $input, $mode);
  33. // Perform digest or hash on output of encryption
  34. $output = hash("sha256", $crypttext, true);
  35. // Perform base64 on output of digest / hash
  36. $signature = base64_encode($output);
  37. return $signature;
  38. }
  39.  
  40. // Delete empty array values
  41. function arrayEmptyClear($array) {
  42. if (!is_array($array))
  43. return false;
  44. foreach ($array as $i => $j) {
  45. if (is_array($j)) {
  46. $array[$i] = arrayEmptyClear($j);
  47. if (count($array[$i]) == false)
  48. unset($array[$i]);
  49. } else {
  50. if ($j === "" || $j === null || $j == false) {
  51. unset($array[$i]);
  52. }
  53. }
  54. }
  55. return $array;
  56. }
  57.  
  58. // Random number
  59. $randomNumber = rand(1, 999999);
  60.  
  61. // Merchant Details
  62. $url = "https://securemasterpay.com/FE/rest/tx/purchase/w/execute";
  63. $merchantId = "";
  64. $merchantAccountId = "";
  65. $accountUsername = "";
  66. $accountPassword = "";
  67. $key = "";
  68.  
  69. // All request parameters
  70. $requestParams = [
  71. // Merchant Credentials
  72. "merchantIdHash" => hashDataInBase64($merchantId),
  73. "merchantAccountIdHash" => hashDataInBase64($merchantAccountId),
  74. "encryptedAccountUsername" => encryptDataInBase64($accountUsername, $key),
  75. "encryptedAccountPassword" => encryptDataInBase64($accountPassword, $key),
  76. // Additional Data
  77. "lang" => "EN",
  78. "requestTime" => date("Y-m-d H:i:s"),
  79. // Transaction Info
  80. "transactionInfo" => [
  81. "apiVersion" => "1.0.0",
  82. "requestId" => "Request_" . date("dmY\THis_") . $randomNumber,
  83. "txSource" => "1",
  84. "recurrentType" => "1",
  85. "perform3DS" => "0",
  86. "statementText" => "Test Purchase " . date("d.m.Y ") . $randomNumber,
  87. "cancelUrl" => "http://127.0.0.1/cancel",
  88. "returnUrl" => "http://127.0.0.1/return",
  89. "notificationUrl" => "http://127.0.0.1/notification",
  90. // Order Data
  91. "orderData" => [
  92. "orderId" => "Order_" . date("dmY\THis_") . $randomNumber,
  93. "orderDescription" => "Test Purchase " . $randomNumber,
  94. "amount" => "1.00",
  95. "currencyCode" => "USD",
  96. /*
  97. * Example
  98. // Billing Address
  99. "billingAddress" => [
  100. "firstName" => "John",
  101. "lastName" => "Doe",
  102. "address1" => "Chajkovskogo str.",
  103. "address2" => "29",
  104. "city" => "Saint Petersburg",
  105. "zipcode" => "191123",
  106. "stateCode" => "RU",
  107. "countryCode" => "RU",
  108. "mobile" => "78123098735",
  109. "phone" => "78123098735",
  110. "email" => "support@wirecapital.com",
  111. "fax" => "78123098735"
  112. ],
  113. // Shipping Address
  114. "shippingAddress" => "",
  115. // Personal Address
  116. "personalAddress" => "",
  117. */
  118. ]
  119. ]
  120. ];
  121.  
  122. // Signature
  123. $requestParams["signature"] = createSignature($requestParams["requestTime"] .
  124. $requestParams["merchantIdHash"] .
  125. $requestParams["merchantAccountIdHash"] .
  126. $requestParams["encryptedAccountUsername"] .
  127. $requestParams["encryptedAccountPassword"] .
  128. $requestParams["transactionInfo"]["apiVersion"] .
  129. $requestParams["transactionInfo"]["requestId"] .
  130. $requestParams["transactionInfo"]["txSource"] .
  131. $requestParams["transactionInfo"]["recurrentType"] .
  132. $requestParams["transactionInfo"]["orderData"]["orderId"] .
  133. $requestParams["transactionInfo"]["orderData"]["orderDescription"] .
  134. $requestParams["transactionInfo"]["orderData"]["amount"] .
  135. $requestParams["transactionInfo"]["orderData"]["currencyCode"] .
  136. /*
  137. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["firstName"] .
  138. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["lastName"] .
  139. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["address1"] .
  140. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["address2"] .
  141. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["city"] .
  142. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["zipcode"] .
  143. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["stateCode"] .
  144. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["countryCode"] .
  145. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["mobile"] .
  146. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["phone"] .
  147. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["email"] .
  148. $requestParams["transactionInfo"]["orderData"]["billingAddress"]["fax"] .
  149. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["firstName"] .
  150. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["lastName"] .
  151. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["address1"] .
  152. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["address2"] .
  153. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["city"] .
  154. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["zipcode"] .
  155. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["stateCode"] .
  156. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["countryCode"] .
  157. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["mobile"] .
  158. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["phone"] .
  159. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["email"] .
  160. $requestParams["transactionInfo"]["orderData"]["shippingAddress"]["fax"] .
  161. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["firstName"] .
  162. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["lastName"] .
  163. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["address1"] .
  164. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["address2"] .
  165. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["city"] .
  166. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["zipcode"] .
  167. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["stateCode"] .
  168. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["countryCode"] .
  169. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["mobile"] .
  170. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["phone"] .
  171. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["email"] .
  172. $requestParams["transactionInfo"]["orderData"]["personalAddress"]["fax"] .
  173. *
  174. */
  175. $requestParams["transactionInfo"]["statementText"] .
  176. $requestParams["transactionInfo"]["cancelUrl"] .
  177. $requestParams["transactionInfo"]["returnUrl"] .
  178. $requestParams["transactionInfo"]["notificationUrl"], $key);
  179.  
  180. // Request
  181. $request = base64_encode(json_encode(arrayEmptyClear($requestParams), JSON_FORCE_OBJECT | JSON_UNESCAPED_SLASHES));
  182.  
  183. // Redirect to KPG
  184. header("Content-Type: text/html; charset=utf-8");
  185. echo '<!DOCTYPE html>
  186. <html lang="EN">
  187. <head>
  188. <title>Transaction is in progress. Please wait..</title>
  189. <script src="../js/jquery.min.js"></script>
  190. <script>
  191. $(window).load(function() {
  192. $(".loader").fadeOut("slow");
  193. });
  194. </script>
  195. </head>
  196. <body>
  197. <form id="payForm" action="' . $url . '" method="POST">
  198. <input type="hidden" name="request" value="' . $request . '" />
  199. </form>
  200. <script>
  201. document.getElementById("payForm").submit();
  202. </script>
  203. </body>
  204. </html>';
  205. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement