初始頁,提交基本信息到api頁面,javascript
<?php /* * * 功能:支付寶手機網站支付接口接口調試入口頁面 * 版本:3.4 * 修改日期:2016-03-08 * 說明: * 如下代碼只是爲了方便商戶測試而提供的樣例代碼,商戶能夠根據本身網站的須要,按照技術文檔編寫,並不是必定要使用該代碼。 */ ?> <!DOCTYPE html> <html> <head> <title>支付寶手機網站支付接口接口</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style> *{ margin:0; padding:0; } ul,ol{ list-style:none; } body{ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif; } .hidden{ display:none; } .new-btn-login-sp{ padding: 1px; display: inline-block; width: 75%; } .new-btn-login { background-color: #02aaf1; color: #FFFFFF; font-weight: bold; border: none; width: 100%; height: 30px; border-radius: 5px; font-size: 16px; } #main{ width:100%; margin:0 auto; font-size:14px; } .red-star{ color:#f00; width:10px; display:inline-block; } .null-star{ color:#fff; } .content{ margin-top:5px; } .content dt{ width:100px; display:inline-block; float: left; margin-left: 20px; color: #666; font-size: 13px; margin-top: 8px; } .content dd{ margin-left:120px; margin-bottom:5px; } .content dd input { width: 85%; height: 28px; border: 0; -webkit-border-radius: 0; -webkit-appearance: none; } #foot{ margin-top:10px; position: absolute; bottom: 15px; width: 100%; } .foot-ul{ width: 100%; } .foot-ul li { width: 100%; text-align:center; color: #666; } .note-help { color: #999999; font-size: 12px; line-height: 130%; margin-top: 5px; width: 100%; display: block; } #btn-dd{ margin: 20px; text-align: center; } .foot-ul{ width: 100%; } .one_line{ display: block; height: 1px; border: 0; border-top: 1px solid #eeeeee; width: 100%; margin-left: 20px; } .am-header { display: -webkit-box; display: -ms-flexbox; display: box; width: 100%; position: relative; padding: 7px 0; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; background: #1D222D; height: 50px; text-align: center; -webkit-box-pack: center; -ms-flex-pack: center; box-pack: center; -webkit-box-align: center; -ms-flex-align: center; box-align: center; } .am-header h1 { -webkit-box-flex: 1; -ms-flex: 1; box-flex: 1; line-height: 18px; text-align: center; font-size: 18px; font-weight: 300; color: #fff; } </style> </head> <body text=#000000 bgColor="#ffffff" leftMargin=0 topMargin=4> <header class="am-header"> <h1>支付寶手機網站支付接口快速通道</h1> </header> <div id="main"> <form name=alipayment action=alipayapi.php method=post target="_blank"> <div id="body" style="clear:left"> <dl class="content"> <dt>商戶訂單號 :</dt> <dd> <input id="WIDout_trade_no" name="WIDout_trade_no" /> </dd> <hr class="one_line"> <dt>訂單名稱 :</dt> <dd> <input id="WIDsubject" name="WIDsubject" /> </dd> <hr class="one_line"> <dt>付款金額 :</dt> <dd> <input id="WIDtotal_fee" name="WIDtotal_fee" /> </dd> <hr class="one_line"> <dt>商品展現網址 :</dt> <dd> <input id="WIDshow_url" name="WIDshow_url" /> </dd> <hr class="one_line"> <dt>商品描述:</dt> <dd> <input id="WIDbody" name="WIDbody" /> </dd> <hr class="one_line"> <dt></dt> <dd id="btn-dd"> <span class="new-btn-login-sp"> <button class="new-btn-login" type="submit" style="text-align:center;">確 認</button> </span> <span class="note-help">若是您點擊「確認」按鈕,即表示您贊成該次的執行操做。</span> </dd> </dl> </div> </form> <div id="foot"> <ul class="foot-ul"> <li> 支付寶版權全部 2015-2018 ALIPAY.COM </li> </ul> </div> </div> </body> <script language="javascript"> function GetDateNow() { var vNow = new Date(); var sNow = ""; sNow += String(vNow.getFullYear()); sNow += String(vNow.getMonth() + 1); sNow += String(vNow.getDate()); sNow += String(vNow.getHours()); sNow += String(vNow.getMinutes()); sNow += String(vNow.getSeconds()); sNow += String(vNow.getMilliseconds()); document.getElementById("WIDout_trade_no").value = sNow; document.getElementById("WIDsubject").value = "測試"; document.getElementById("WIDtotal_fee").value = "0.01"; } GetDateNow(); </script> </html>
進入API頁,php
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>支付寶手機網站支付接口接口</title> </head> <?php /* * * 功能:手機網站支付接口接入頁 * 版本:3.3 * 修改日期:2012-07-23 * 說明: * 如下代碼只是爲了方便商戶測試而提供的樣例代碼,商戶能夠根據本身網站的須要,按照技術文檔編寫,並不是必定要使用該代碼。 * 該代碼僅供學習和研究支付寶接口使用,只是提供一個參考。 *************************注意************************* * 若是您在接口集成過程當中遇到問題,能夠按照下面的途徑來解決 *一、開發文檔中心(https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.2Z6TSk&treeId=60&articleId=103693&docType=1) *二、商戶幫助中心(https://cshall.alipay.com/enterprise/help_detail.htm?help_id=473888) *三、支持中心(https://support.open.alipay.com/alipay/support/index.htm) * 若是不想使用擴展功能請把擴展功能參數賦空值。 */ require_once("alipay.config.php"); require_once("lib/alipay_submit.class.php"); /**************************請求參數**************************/ //商戶訂單號,商戶網站訂單系統中惟一訂單號,必填 $out_trade_no = $_POST['WIDout_trade_no']; //訂單名稱,必填 $subject = $_POST['WIDsubject']; //付款金額,必填 $total_fee = $_POST['WIDtotal_fee']; //收銀臺頁面上,商品展現的超連接,必填 $show_url = $_POST['WIDshow_url']; //商品描述,可空 $body = $_POST['WIDbody']; /************************************************************/ //構造要請求的參數數組,無需改動 $parameter = array( "service" => $alipay_config['service'], "partner" => $alipay_config['partner'], "seller_id" => $alipay_config['seller_id'], "payment_type" => $alipay_config['payment_type'], "notify_url" => $alipay_config['notify_url'], "return_url" => $alipay_config['return_url'], "_input_charset" => trim(strtolower($alipay_config['input_charset'])), "out_trade_no" => $out_trade_no, "subject" => $subject, "total_fee" => $total_fee, "show_url" => $show_url, "body" => $body, //其餘業務參數根據在線開發文檔,添加參數.文檔地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.2Z6TSk&treeId=60&articleId=103693&docType=1 //如"參數名" => "參數值" 注:上一個參數末尾須要「,」逗號。 ); //創建請求 $alipaySubmit = new AlipaySubmit($alipay_config); $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "確認"); echo $html_text; ?> </body> </html>
獲取表單數據和配置數據,發起移動支付請求。css
<?php /* * * 配置文件 * 版本:3.4 * 修改日期:2016-03-08 * 說明: * 如下代碼只是爲了方便商戶測試而提供的樣例代碼,商戶能夠根據本身網站的須要,按照技術文檔編寫,並不是必定要使用該代碼。 * 該代碼僅供學習和研究支付寶接口使用,只是提供一個參考。 * 安全校驗碼查看時,輸入支付密碼後,頁面呈灰色的現象,怎麼辦? * 解決方法: * 一、檢查瀏覽器配置,不讓瀏覽器作彈框屏蔽設置 * 二、更換瀏覽器或電腦,從新登陸查詢。 */ //↓↓↓↓↓↓↓↓↓↓請在這裏配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ //合做身份者ID,簽約帳號,以2088開頭由16位純數字組成的字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm $alipay_config['partner'] = '2088221883850827'; //收款支付寶帳號,以2088開頭由16位純數字組成的字符串,通常狀況下收款帳號就是簽約帳號 $alipay_config['seller_id'] = $alipay_config['partner']; // MD5密鑰,安全檢驗碼,由數字和字母組成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm $alipay_config['key'] = '4t3m3qnwiq4lzqvv66sfu2vy9r3skkcn'; // 服務器異步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網能夠正常訪問 $alipay_config['notify_url'] = "http://localhost/alipaywapdirect/notify_url.php"; // 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網能夠正常訪問 $alipay_config['return_url'] = "http://localhost/alipaywapdirect/return_url.php"; //簽名方式 $alipay_config['sign_type'] = strtoupper('MD5'); //字符編碼格式 目前支持utf-8 $alipay_config['input_charset']= strtolower('utf-8'); //ca證書路徑地址,用於curl中ssl校驗 //請保證cacert.pem文件在當前文件夾目錄中 $alipay_config['cacert'] = getcwd().'\\cacert.pem'; //訪問模式,根據本身的服務器是否支持ssl訪問,若支持請選擇https;若不支持請選擇http $alipay_config['transport'] = 'http'; // 支付類型 ,無需修改 $alipay_config['payment_type'] = "1"; // 產品類型,無需修改 $alipay_config['service'] = "alipay.wap.create.direct.pay.by.user"; //↑↑↑↑↑↑↑↑↑↑請在這裏配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ?>
上面是配置內容,html
支付後,調整處處理頁面,java
<?php /* * * 功能:支付寶頁面跳轉同步通知頁面 * 版本:3.3 * 日期:2012-07-23 * 說明: * 如下代碼只是爲了方便商戶測試而提供的樣例代碼,商戶能夠根據本身網站的須要,按照技術文檔編寫,並不是必定要使用該代碼。 * 該代碼僅供學習和研究支付寶接口使用,只是提供一個參考。 *************************頁面功能說明************************* * 該頁面可在本機電腦測試 * 可放入HTML等美化頁面的代碼、商戶業務邏輯程序代碼 * 該頁面可使用PHP開發工具調試,也可使用寫文本函數logResult,該函數已被默認關閉,見alipay_notify_class.php中的函數verifyReturn */ require_once("alipay.config.php"); require_once("lib/alipay_notify.class.php"); ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <?php //計算得出通知驗證結果 $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyReturn(); if($verify_result) {//驗證成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //請在這裏加上商戶的業務邏輯程序代碼 //——請根據您的業務邏輯來編寫程序(如下代碼僅做參考)—— //獲取支付寶的通知返回參數,可參考技術文檔中頁面跳轉同步通知參數列表 //商戶訂單號 $out_trade_no = $_GET['out_trade_no']; //支付寶交易號 $trade_no = $_GET['trade_no']; //交易狀態 $trade_status = $_GET['trade_status']; if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') { //判斷該筆訂單是否在商戶網站中已經作過處理 //若是沒有作過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序 //若是有作過處理,不執行商戶的業務程序 } else { echo "trade_status=".$_GET['trade_status']; } echo "驗證成功<br />"; //——請根據您的業務邏輯來編寫程序(以上代碼僅做參考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { //驗證失敗 //如要調試,請看alipay_notify.php頁面的verifyReturn函數 echo "驗證失敗"; } ?> <title>支付寶手機網站支付接口</title> </head> <body> </body> </html>
對接到ecshop中同樣的道理,web
1.傳入訂單號,訂單金額等信息。
2.配置好支付寶帳號信息。
3.支付後,對支付結果進行處理,提示支付成功,或者支付失敗。數據庫
修復支付後,狀態不變問題。api
<?php /* * * 功能:支付寶頁面跳轉同步通知頁面 * 版本:3.3 * 日期:2012-07-23 * 說明: * 如下代碼只是爲了方便商戶測試而提供的樣例代碼,商戶能夠根據本身網站的須要,按照技術文檔編寫,並不是必定要使用該代碼。 * 該代碼僅供學習和研究支付寶接口使用,只是提供一個參考。 *************************頁面功能說明************************* * 該頁面可在本機電腦測試 * 可放入HTML等美化頁面的代碼、商戶業務邏輯程序代碼 * 該頁面可使用PHP開發工具調試,也可使用寫文本函數logResult,該函數已被默認關閉,見alipay_notify_class.php中的函數verifyReturn */ require_once("alipay.config.php"); require_once("lib/alipay_notify.class.php"); ?> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> <style type="text/css"> #page{ width: 98%; height: 10em; margin:1em auto; font-size:1em; line-height:1.5em; } #page2{ width: 98%; height: 10em; margin:1em auto; ; font-size:1em; line-height:1.5em; } </style> <title>支付寶即時到帳交易接口</title> </head> <body> <?php //計算得出通知驗證結果 $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyReturn(); if($verify_result) {//驗證成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //請在這裏加上商戶的業務邏輯程序代碼 //——請根據您的業務邏輯來編寫程序(如下代碼僅做參考)—— //獲取支付寶的通知返回參數,可參考技術文檔中頁面跳轉同步通知參數列表 //商戶訂單號 $out_trade_no = $_GET['out_trade_no']; //支付寶交易號 $trade_no = $_GET['trade_no']; //交易狀態 $trade_status = $_GET['trade_status']; //判斷該筆訂單是否在商戶網站中已經作過處理 //若是沒有作過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序 //若是有作過處理,不執行商戶的業務程序 if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS'){ // 更改支付狀態 // 訂單確認時間 // 訂單支付時間 define('IN_ECS', true); require_once('../includes/init.php'); // 原來是這裏出了問題 $r = $GLOBALS['db']->query("UPDATE ".$GLOBALS['ecs']->table('order_info')." SET pay_status = 2 , confirm_time = ".time()." , pay_time = ".time()." where order_sn = '".$out_trade_no."'"); ?> <div id='page'> <div style="text-align:center;color:red;font-size:2em;font-weight: bold;"> <br /> <br /> <br /> 祝賀您!您的訂單支付已經成功!!!3秒後自動跳轉動商城首頁 </div> </div> <?php }else{ //支付失敗 ?> <div id='page2'> <div style="text-align:center;font-weight: bold; font-size:2em;color:red;"> <br /> <br /> <br /> 很抱歉,您的訂單支付失敗!3秒後自動跳轉動商城首頁 </div> </div> <?php } } else { //驗證失敗 //如要調試,請看alipay_notify.php頁面的verifyReturn函數 ?> <div id='page2'> <div style="text-align:center;font-weight: bold;font-size:2em;"><span style="color:red;">支付失敗</span><br /> 支付過程當中出現驗證錯誤,若是你的支付寶金額已被扣除,請聯繫開發商 </div> </div> <?php } ?> <script type="text/javascript"> window.setTimeout("window.location='http://local.easymall.com/mobile/'",3000); </script> </body> </html>
ecshop
操做數據庫,數組
// 更改支付狀態 // 訂單確認時間 // 訂單支付時間 define('IN_ECS', true); require_once('../includes/init.php'); // 原來是這裏出了問題 $r = $GLOBALS['db']->query("UPDATE ".$GLOBALS['ecs']->table('order_info')." SET pay_status = 2 , confirm_time = ".time()." , pay_time = ".time()." where order_sn = '".$out_trade_no."'");