1.php
打開Submit.php文件,把如下代碼去掉;require_once("alipay_core.function.php");require_once("alipay_md5.function.php");html
一樣,打開Notify.php文件,把如下兩段代碼去掉require_once("alipay_core.function.php");require_once("alipay_md5.function.php");ajax
2.數據庫
01. 在配置文件中Conf/Config.php文件中對支付寶相關參數進行配置服務器
'alipay_config'=>array(
'partner' =>'208****73', //這裏是你在成功申請支付寶接口後獲取到的PID;
'key'=>'p3****g48',//這裏是你在成功申請支付寶接口後獲取到的Key
'sign_type'=>strtoupper('MD5'),
'input_charset'=> strtolower('utf-8'),
'cacert'=> getcwd().'\\cacert.pem',
'transport'=> 'http',
//這裏是賣家的支付寶帳號,也就是你申請接口時註冊的支付寶帳號
'sign_type'=>'MD5',
),
'alipay' =>array(
//這裏是賣家的支付寶帳號,也就是你申請接口時註冊的支付寶帳號
'seller_email'=>'123@qq.com',
//這裏是異步通知頁面url,提交到項目的Pay控制器的notifyurl方法;
'notify_url'=>'http://www.xxx.com/Pay/notifyurl',
//這裏是頁面跳轉通知url,提交到項目的Pay控制器的returnurl方法;
'return_url'=>'http://www.xxx.com/Pay/returnurl',
//支付成功跳轉到的頁面,我這裏跳轉到項目的User控制器,myorder方法,並傳參payed(已支付列表)
'successpage'=>'User/myorder?ordtype=payed',
//支付失敗跳轉到的頁面,我這裏跳轉到項目的User控制器,myorder方法,並傳參unpay(未支付列表)
'errorpage'=>'User/myorder?ordtype=unpay',
),異步
02 .PayController 控制器中定義相關方法ide
html:函數
<input onkeyup="value=value.replace(/[^\d]/g,'') "
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
type="text" datatype="*" placeholder="請輸入充值金額" value="" id="pay" name="pay"> post
<div onclick="save();" class="p-btn">確認</div>ui
function save(){
。。。。
$.ajax({
url:"{:U('User/payorder')}",
data:{"phone":phone,"pay":pay,"hideuid":hideuid},
type:'post',
success:function (data) {
if(data.success ==1){
layer.alert(data.message+'點擊肯定前往支付',{icon:6},function () {
window.location.href = Think.U('Portal/Pay/chongzhi','ordernumber='+data.newnum);
});
}
}
});
}
UserController:
payorder 方法:保存訂單表數據,返回新增的訂單號,使ajax 跳轉到chongzhi 頁面(在該頁面中,點擊支付,前往topay 支付)
PayController:
// 前往支付 啊
生成訂單號 createOrderNo ,返回 2017052300001 00001 同一天,根據number(即訂單數,不管訂單下幾個參會人) +1便可(一樣適用於一個訂單下多人蔘與)
鎖就是數據庫鎖,最多見的體現就是事務。查詢對象時須要防止同時操做的話也須要加鎖
lock lock
支付寶服務器異步通知頁面方法
(同步接口)支付成功後 跳轉回該頁面
充值後修改狀態:
finishchongzhi
總結:
1.把執行支付操做(toalipay),處理異步返回結果(notifyurl_phone),處理跳轉返回結果(returnurl_phone)三個支付接口的核心頁面寫到一個PayAction控制器中。
2.提交支付的頁面中,能夠在提交以前先把一些參數要傳遞的內容先經過隱藏域的方法組合好,好比金額先計算好,訂單名稱,訂單描述等先用字符串組合好。而後提交表單,這樣,在toalipay方法中只要直接構造傳遞參數,直接進行提交就好了。
3.支付返回後的處理由於要在異步和跳轉兩個方法中都要進行相應的判斷和處理,因此,把這些判斷和處理寫到一個自定義函數中,這樣只要調用函數便可,使得代碼更加清晰明瞭。
4.notify_url和return_url兩種模式的返回url必須使用http://xxxxxxx這樣的絕對路徑,由於裏是從支付寶平臺返回到你的項目頁面,不能使用相對路徑。