thinkphp5.0整合支付寶支付,thinkphp5.0整合微信支付,行動app支付
thinkphp5.0整合支付寶行動支付代碼功能實作
app接入支付寶支付時,如果用戶手機沒有安裝支付寶客戶端,則會呼叫支付寶的行動支付h5頁。
如果安裝了支付寶支付,則會喚醒支付寶客戶端進行支付,用戶提現最佳。
支付寶文檔地址:
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7386797.0.0.Y4jDIe&treeId=59&articleId=103563&docType=1
🎟服務端進行組合,最後傳回給客戶端一個處理後的字串。
產生的標準的字串有提供:
partner="2088101568358171"&seller_id="xxx@alipay.com"&out_trade_no="0819145412-6177"&subject="A&body="測試測試測試檢測測試ify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&sign="lBBK%2F0w5LOajrMrr74EI30m dw% 2Ba3JnfHXoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJIe2pbjm%2F3kb%2FuGkpG%2BwYQYI51%2BhA3YBbvZ2FuGkpG%2BwYQYI51%2BhA3YBbvZZ134KbvZ17
代碼部分: //支付寶支付 function this->is_login();
require_once EXTEND_PATH.'Alipay/alipaycore.php';
$order_id = input("request.order_id"); if($order_id = = 0){<br> ajaxmsg('非法資料',0);<br> }<br> ")->find();<br> //建立請求<br> $out_trade_no = $order_info['order_sn'];<br> $ <br> $body = '訂單付款'; / /商品詳情<br> $alipay_config = Config::get('alipay_config');<br> //請求項, 'partner'=>$alipay_config['partner'],/ /合作者身分ID<br> 'seller_id'=>$alipay_config['seller_id'],<br> 'subject'=>'訂單支付',//商品名稱<br> 'body'=>$body,//商品詳情<br> ) $alipay_config['notify_url'],//伺服器非同步通知頁路徑<br> 'service'=>$ alipay_config['service'],//介面名稱<br> 'payment_type'=>$alipay_config['payment_type'],//付款類型],//參數編碼字元集<br> );<br> //將post接收到的陣列所有元素,依照「參數=參數值」的模式以「&」字元拼接成字串。 <br> $data = createLinkstring($parameter);<br><br> //列印待簽章字串。工程目錄下的log資料夾中的log.txt。 <br> logResult($data);<br><br> //將待簽章字串使用aSign($data, $alipay_config[ 'private_key']));<br><br> //將簽章所得到的sign及簽章型別sign_type拼接在待簽章字串後方。 <br> $data = $data.'&sign='.'"'.$rsa_sign.'"'.'&sign_type='.'"'.$alipay 客戶端,建議在客戶端使用私鑰對應的公鑰做一次驗簽,保證不是他人傳輸。 <br> //echo $data;<br> $list['form'] = $data;<br> <br> //支付寶支付通知<br> public function alipay_notify_url ()<br> {<br> $alipay_config = Config::get('alipay_config');
notify($alipay_config); if($alipayNotify->getResponse($_POST[ 'notify_id']))//判斷成功之後使用getResponse方法判斷是否是支付寶發來的非同步通知。 <br> {<br> if($alipayNotify->getSignVeryfy //-請依照您的業務邏輯來編寫程式(以下程式碼僅供參考)-<br> $out_trade_no = $_POST['out_trade_no'];<br><br> 號碼<br> $trade_no = $_POST['trade_no'];<br> $trade_status = $_POST['trade_status'];<br><br> //判斷該筆訂單是否已在商家網站中已處理過處理<br> //如上所處理,並依訂單編號(out_trade_no)在商家網站的訂單中程序<br> //若有使用,並未執行商家的業務程序<br> //退款日期超過退款期限後(如三個月可退款),支付寶系統發送此交易狀態通知<br> //請務必中使用的<br> }<br> $order_info = Db::name("order")->where("order_sn='{$out_trade_no}'")- >find();<br> if($order_info['status'] == 0){ //更新付款狀態及付款時間<br> ['id']}")->save(<br> array(<br> 'pay_ways'=>2,<br> "pay_sn"=>$trade_no,<br> 'pay_time'=>time(),<br> 'stauts'=>1<br> ));<br> $this->fenxiao_account($out_trade <br> }<br> echo "success"; //請不要修改或刪除<br> }<br> else //驗證簽名失敗<br> {<br> echo "sign fail";<br> }<br> }<br> else //驗證是否來自支付寶的通知失敗<br> {<br> echo "response fail";<br> }<br> } <br>我寫的就是一個標準的下訂單的流程,主要是<br>要能喚醒支付寶客戶端,喚醒支付寶是第一步,說明協議,帳號,密鑰方式都一致。 <br>第二步是要支付成功後接受支付寶的通知,更細自己服務端的資料庫。 <br>防止重複更新訂單和用戶資金帳戶。 <br>
程式碼我已經貼上去了,把我整合好的原始碼包直接放到extend目錄即可,在controller裡面直接呼叫即可。
注意設定檔要寫對,尤其是公鑰和私鑰的產生方式,注意上傳到支付寶平台中心。
技術交流群:495654168
Alipay.zip ( 140.02 KB 下載:24 次 )