齊博X1:在線支付接口的使用
在線付款,有一個專用的函數(shù)進(jìn)行封裝好了微信與支付寶兩種
舉例子來講解吧
通過上面的函數(shù),就可以實現(xiàn)在線支付.
money 是 支付金額,單位元
return_url 支付成功后,返回到指定的網(wǎng)址
banktype 這一項,可以留空, 也可指定用支付寶或微信支付,上面是判斷 在微信端,就用微信支付, 否則就用支付寶付款 . 都不設(shè)置,就可以讓用戶自己選擇,留空才可以自由選擇余額抵扣.
numcode 訂單號,可以為空
callback_class 服務(wù)端異步處理,就是說支付成功后,用戶即使關(guān)閉了當(dāng)前網(wǎng)頁,服務(wù)端還可以實現(xiàn)后臺異步處理數(shù)據(jù). 如果不設(shè)置的話,用戶關(guān)閉了當(dāng)前網(wǎng)頁.就不會進(jìn)行異步處理數(shù)據(jù). 會出現(xiàn)所謂的掉單. 所以推薦設(shè)置, 不設(shè)置也可以.
post_olpay 函數(shù)的第二項設(shè)置為true的話,代表立即跳轉(zhuǎn)到支付界面,設(shè)置為false的話,就返回支付網(wǎng)址,用戶自己做跳轉(zhuǎn)
callback_class 這一項再重點講解一下
這里設(shè)置異步處理執(zhí)行的類及方法.格式是 完整的 全路徑類名比如 app\xxx\xxx\Order分隔符@方法名pay@參數(shù)$id
最后還要用mymd5函數(shù)進(jìn)行加密處理,避免用戶惡意修改
用戶支付成功以后,就會給用戶的余額充值, 用戶帳戶上有余額了, 再執(zhí)行后續(xù)的相關(guān)操作. 所有財務(wù)操作,都是直接判斷與處理用戶的余額的. 實際上來說, 在線支付,就是給用戶帳戶充值, 所以上面的 money 參數(shù) ,用戶即使惡意修改,也沒意義的. 因為他就對應(yīng)給余額充值多少. 真正的應(yīng)用邏輯處理,你要根據(jù)用戶的余額進(jìn)行判斷處理. 余額不足就要中斷. 余額充足的話, 就進(jìn)行處理, 處理成功,就一定要扣余款 .切記切記!!
所以上面的 return_url 返回地址,也是不需要加密的, 因為最終處理數(shù)據(jù)的時候,是根據(jù)用戶的余額做處理的.
return_url 返回支付成功以后,處理的方法,可以跟 callback_class 共用一個類一個方法. 在那里做處理的時候,就跟據(jù)用戶的余額是否足夠進(jìn)行處理. 處理成功后,必須要給數(shù)據(jù)庫做個標(biāo)志, 避免反復(fù)執(zhí)行.
最后做個總結(jié),就是在線支付,實際就是對用戶的余額進(jìn)行充值. 支付成功,就是充值成功 ,然后應(yīng)用那里,就是對用戶的余額進(jìn)行判斷,進(jìn)行處理并扣余額, 最后還要給該訂單做個已處理的標(biāo)志, 避免反復(fù)處理.
在線支付實際就是給用戶的余額充值, 用戶余額充當(dāng)中介作用. 應(yīng)用的邏輯判斷都是圍繞余額進(jìn)行的. 而余額的充值部分拋給了系統(tǒng)處理.不需要開發(fā)者考慮.開發(fā)者只須要判斷用戶余額是否足夠展開做相關(guān)處理.
在支付成功后,處理的余額的時候, 還必須要用到扣余額的函數(shù)
add_rmb
比如
add_rmb($order_info['uid'],-abs($order_info['pay_money']),0,'購物消費');
另外還有很關(guān)鍵的一點,就是判斷當(dāng)前用戶,不能使用cookie的, 必須要跟上面?zhèn)鞯膮?shù)id得到用戶的uid,比如可以這樣得到
通過$id
?得到?$uid
?再用函數(shù)?get_user($uid)['rmb']
?得到用戶的余額,進(jìn)行判斷處理, 余額充足,就執(zhí)行處理,最后扣除相當(dāng)?shù)挠囝~.
點擊查看大圖
