Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- header("Content-Type:text/html; charset=utf-8"); //轉至utf8
- //接收由html傳回的參數。
- $item_name = $_POST['ItemName']; //商品名稱
- $total_amt = $_POST['TotalAmount']; //商品金額
- $trade_desc = $_POST['TradeDesc']; //商品敘述
- $merchant_tradedate = $_POST['MerchantTradeDate']; //自訂時間,方便比對CheckSumValue
- $trade_no = $_POST['MerchantTradeNo'];
- /* //測試數值是否正確
- echo "item_name=$item_name"."<br>";
- echo "total_amt=$total_amt"."<br>";
- echo "trade_desc=$trade_desc"."<br>";
- echo "merchant_tradedate=$merchant_tradedate"."<br>";
- */
- //------------------------------------------固定的參數------------------------------------------------------
- //hashkey
- $hash_key = "************";
- //hashiv
- $hash_iv = "************";
- //1. 請選擇介接網址 (正式環境)
- $gateway_url = "https://payment.allpay.com.tw/Cashier/AioCheckOut";
- //2. 確認廠商編號 (由AllPay提供) Varchar(10) char(20)
- $merchant_id = "*******";
- //3. 廠商交易編號 (廠商交易編號不可重覆。英數字。) Varchar(20)
- //$trade_no = "1414226706"; //此編號命名有規則,需參考官方規範。
- //4. 廠商交易時間 Varchar(20)
- //$merchant_tradedate = date("Y/m/d H:i:s"); //
- //5. 交易類型 Varchar(20) 請帶 aio
- $payment_type="aio";
- //6. 交易金額 Money
- //$total_amt;
- //7. 交易描述 Varchar(200)
- //$trade_desc = "test_shop";
- //8. 商品名稱 Varchar(200) 如果商品名稱有多筆,需在金流選擇頁一行一行顯示商品名稱的話,商品名稱請以井號分隔(#)
- //$item_name = "test1";
- //9. 回傳網址 Varchar(200) 當消費者付款完成後,會將付款結果回傳到該網址。
- $return_url = "http://www.allpay.com.tw/receive.php";
- //10. 選擇預設付款方式 Varchar(20)
- $choose_payment = "WebATM";
- //11. 檢查碼
- //12. Client端回傳網址 Varchar(200) 此網址為付款完成後,銀行將頁面導回到歐付寶時,歐付寶會顯示付款完成頁,該頁面上會有[回到廠商]的按鈕,會員點選按鈕後,會將頁面導回到此設定的網址
- $client_back_url = "http://www.allpay.com.tw/Shopping/Detail";
- //13. 商品銷售網址 Varchar(200)
- //14. 備註欄位。 Varchar(100) 目前都請放空白。
- //15. 選擇預設付款子項目 Varchar(20) 若正確設定此欄位,使用者則無法看見金流選擇頁,直接使用設定的付款方式,但信用卡(Credit)與儲值消費(TopUpUsed)無此功能。
- //16. Client端回傳付款結果網址 Varchar(200) 此網址為付款完成後,銀行將頁面導回到歐付寶時,會將頁面導回到此設定的網址,並帶回付款結果的參數,沒帶此參數則會顯示歐付寶的顯示付款完成頁。OrderResultURL
- $orderResultURL = "http://www.allpay.com.tw/client.php";
- //----------------------------------------------------------檢查碼--------------------------------------------------------------
- //此陣列索引名稱皆為大寫,傳入變數皆為小寫。
- $form_array = array(
- "MerchantID" => $merchant_id, //2
- "MerchantTradeNo" => $trade_no, //3
- "MerchantTradeDate" => $merchant_tradedate, //自訂定輸入
- "PaymentType" => "aio", //5
- "TotalAmount" => $total_amt, //自訂輸入
- "TradeDesc" => $trade_desc, //自訂輸入
- "ItemName" => $item_name, //自訂輸入
- "ReturnURL" => $return_url, //9
- "ChoosePayment" => $choose_payment, //10
- "ClientBackURL" => $client_back_url, //12
- "OrderResultURL" => $orderResultURL //16
- ); //共11個欄位
- /*
- 檢碼核制如下:
- 將傳遞參數依照第一個英文字母,由A到Z的順序來排序(遇到第一個英名字母相同時,以第二個英名字母來比較,以此類推),並且以&方式將所有參數串連後,再將參數最前面加上HashKey、最後面加上HashIV,並將整串字串進行URL encode後再轉為小寫,再以MD5加密方式來產生CheckMacValue。
- */
- ksort($form_array);
- $encode_str = "HashKey=" . $hash_key . "&" . urldecode(http_build_query($form_array)) . "&HashIV=" . $hash_iv;
- echo "將前後加上屬於自己的HashKey及HashIV的str: <br>".$encode_str."<br><br>";
- $encode_str = urlencode($encode_str);
- echo "已urlencode str: <br>".$encode_str."<br><br>";
- $encode_str = strtolower($encode_str);
- echo "轉小寫 str: <br>".$encode_str."<br><br>";
- $CheckMacValue = strtoupper(md5($encode_str));
- $form_array["CheckMacValue"] = $CheckMacValue;
- //判斷檢查碼是否正確
- echo "檢查碼CheckMacValue:<br>".$CheckMacValue."<br><br>";
- //檢視表單內容
- echo "<br>訂單內容<br><br>";
- foreach ($form_array as $key => $val){
- echo $key."=>".$val."<br>";
- }
- echo "<br><br>";
- $html_form_code = '<form target="_blank" method=post action="' . $gateway_url . '">';
- foreach ($form_array as $key => $val) {
- $html_form_code .= "<input type='text' name='" . $key . "' value='" . $val . "'><BR>";
- }
- $html_form_code .= "<input type='submit' value='送出'>";
- $html_form_code .= "</form>";
- echo $html_form_code;
- //已POST方式傳出 , 且導向到Allpay的付費頁面 ???
- /*
- $post_str = urldecode(http_build_query($form_array));
- echo $post_str;
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $gateway_url);
- curl_setopt($ch, CURLOPT_POST, true); // 啟用POST
- curl_setopt($ch, CURLOPT_POSTFIELDS,$post_str);
- curl_exec($ch);
- curl_close($ch);
- */
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement