Advertisement
Guest User

Untitled

a guest
Nov 1st, 2014
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.34 KB | None | 0 0
  1. <?php
  2. header("Content-Type:text/html; charset=utf-8"); //轉至utf8
  3.  
  4. //接收由html傳回的參數。
  5. $item_name = $_POST['ItemName']; //商品名稱
  6. $total_amt = $_POST['TotalAmount']; //商品金額
  7. $trade_desc = $_POST['TradeDesc']; //商品敘述
  8. $merchant_tradedate = $_POST['MerchantTradeDate']; //自訂時間,方便比對CheckSumValue
  9. $trade_no = $_POST['MerchantTradeNo'];
  10. /* //測試數值是否正確
  11. echo "item_name=$item_name"."<br>";
  12. echo "total_amt=$total_amt"."<br>";
  13. echo "trade_desc=$trade_desc"."<br>";
  14. echo "merchant_tradedate=$merchant_tradedate"."<br>";
  15. */
  16.  
  17. //------------------------------------------固定的參數------------------------------------------------------
  18. //hashkey
  19. $hash_key = "************";
  20. //hashiv
  21. $hash_iv = "************";
  22.  
  23. //1. 請選擇介接網址 (正式環境)
  24. $gateway_url = "https://payment.allpay.com.tw/Cashier/AioCheckOut";
  25.  
  26. //2. 確認廠商編號 (由AllPay提供) Varchar(10) char(20)
  27. $merchant_id = "*******";
  28.  
  29. //3. 廠商交易編號 (廠商交易編號不可重覆。英數字。) Varchar(20)
  30. //$trade_no = "1414226706"; //此編號命名有規則,需參考官方規範。
  31.  
  32. //4. 廠商交易時間 Varchar(20)
  33. //$merchant_tradedate = date("Y/m/d H:i:s"); //
  34.  
  35. //5. 交易類型 Varchar(20) 請帶 aio
  36. $payment_type="aio";
  37.  
  38. //6. 交易金額 Money
  39. //$total_amt;
  40.  
  41. //7. 交易描述 Varchar(200)
  42. //$trade_desc = "test_shop";
  43.  
  44. //8. 商品名稱 Varchar(200) 如果商品名稱有多筆,需在金流選擇頁一行一行顯示商品名稱的話,商品名稱請以井號分隔(#)
  45. //$item_name = "test1";
  46.  
  47. //9. 回傳網址 Varchar(200) 當消費者付款完成後,會將付款結果回傳到該網址。
  48. $return_url = "http://www.allpay.com.tw/receive.php";
  49.  
  50. //10. 選擇預設付款方式 Varchar(20)
  51. $choose_payment = "WebATM";
  52.  
  53. //11. 檢查碼
  54.  
  55. //12. Client端回傳網址 Varchar(200) 此網址為付款完成後,銀行將頁面導回到歐付寶時,歐付寶會顯示付款完成頁,該頁面上會有[回到廠商]的按鈕,會員點選按鈕後,會將頁面導回到此設定的網址
  56. $client_back_url = "http://www.allpay.com.tw/Shopping/Detail";
  57.  
  58. //13. 商品銷售網址 Varchar(200)
  59.  
  60. //14. 備註欄位。 Varchar(100) 目前都請放空白。
  61.  
  62. //15. 選擇預設付款子項目 Varchar(20) 若正確設定此欄位,使用者則無法看見金流選擇頁,直接使用設定的付款方式,但信用卡(Credit)與儲值消費(TopUpUsed)無此功能。
  63.  
  64. //16. Client端回傳付款結果網址 Varchar(200) 此網址為付款完成後,銀行將頁面導回到歐付寶時,會將頁面導回到此設定的網址,並帶回付款結果的參數,沒帶此參數則會顯示歐付寶的顯示付款完成頁。OrderResultURL
  65. $orderResultURL = "http://www.allpay.com.tw/client.php";
  66.  
  67.  
  68. //----------------------------------------------------------檢查碼--------------------------------------------------------------
  69.  
  70.  
  71. //此陣列索引名稱皆為大寫,傳入變數皆為小寫。
  72. $form_array = array(
  73. "MerchantID" => $merchant_id, //2
  74. "MerchantTradeNo" => $trade_no, //3
  75. "MerchantTradeDate" => $merchant_tradedate, //自訂定輸入
  76. "PaymentType" => "aio", //5
  77. "TotalAmount" => $total_amt, //自訂輸入
  78. "TradeDesc" => $trade_desc, //自訂輸入
  79. "ItemName" => $item_name, //自訂輸入
  80. "ReturnURL" => $return_url, //9
  81. "ChoosePayment" => $choose_payment, //10
  82. "ClientBackURL" => $client_back_url, //12
  83. "OrderResultURL" => $orderResultURL //16
  84. ); //共11個欄位
  85.  
  86. /*
  87. 檢碼核制如下:
  88. 將傳遞參數依照第一個英文字母,由A到Z的順序來排序(遇到第一個英名字母相同時,以第二個英名字母來比較,以此類推),並且以&方式將所有參數串連後,再將參數最前面加上HashKey、最後面加上HashIV,並將整串字串進行URL encode後再轉為小寫,再以MD5加密方式來產生CheckMacValue。
  89. */
  90.  
  91. ksort($form_array);
  92. $encode_str = "HashKey=" . $hash_key . "&" . urldecode(http_build_query($form_array)) . "&HashIV=" . $hash_iv;
  93.  
  94. echo "將前後加上屬於自己的HashKey及HashIV的str: <br>".$encode_str."<br><br>";
  95.  
  96. $encode_str = urlencode($encode_str);
  97.  
  98. echo "已urlencode str: <br>".$encode_str."<br><br>";
  99.  
  100. $encode_str = strtolower($encode_str);
  101.  
  102. echo "轉小寫 str: <br>".$encode_str."<br><br>";
  103.  
  104. $CheckMacValue = strtoupper(md5($encode_str));
  105.  
  106. $form_array["CheckMacValue"] = $CheckMacValue;
  107.  
  108. //判斷檢查碼是否正確
  109. echo "檢查碼CheckMacValue:<br>".$CheckMacValue."<br><br>";
  110.  
  111.  
  112. //檢視表單內容
  113. echo "<br>訂單內容<br><br>";
  114. foreach ($form_array as $key => $val){
  115. echo $key."=>".$val."<br>";
  116. }
  117.  
  118. echo "<br><br>";
  119.  
  120. $html_form_code = '<form target="_blank" method=post action="' . $gateway_url . '">';
  121. foreach ($form_array as $key => $val) {
  122. $html_form_code .= "<input type='text' name='" . $key . "' value='" . $val . "'><BR>";
  123. }
  124. $html_form_code .= "<input type='submit' value='送出'>";
  125. $html_form_code .= "</form>";
  126. echo $html_form_code;
  127.  
  128.  
  129. //已POST方式傳出 , 且導向到Allpay的付費頁面 ???
  130. /*
  131. $post_str = urldecode(http_build_query($form_array));
  132. echo $post_str;
  133.  
  134. $ch = curl_init();
  135. curl_setopt($ch, CURLOPT_URL, $gateway_url);
  136. curl_setopt($ch, CURLOPT_POST, true); // 啟用POST
  137. curl_setopt($ch, CURLOPT_POSTFIELDS,$post_str);
  138. curl_exec($ch);
  139. curl_close($ch);
  140. */
  141. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement