国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

ThinkPHP實(shí)現(xiàn)微信支付(jsapi支付)流程教程詳解_php實(shí)例

2020-03-22 19:00:42
字體:
供稿:網(wǎng)友
這次給大家?guī)鞹hinkPHP實(shí)現(xiàn)jsapi支付詳解,ThinkPHP實(shí)現(xiàn)jsapi支付的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來看一下。

當(dāng)時(shí)的環(huán)境是沒有使用框架的,直接在一個(gè)域名指向的目錄下邊新建目錄之后訪問該目錄實(shí)現(xiàn)的,但應(yīng)用到框架中,還是有一些問題,在ThinkPHP中,由于路由規(guī)則與支付授權(quán)目錄有出入,所以會(huì)報(bào)錯(cuò)。本篇講講在TP中集成微信支付的流程。

鵝廠出的SDK和文檔,就是讓你看不懂,使勁繞,這酸爽用了就知道。文檔和SDK不是應(yīng)該越簡(jiǎn)單通俗易懂越好么?難道只有使勁重構(gòu)才能顯示出鵝廠程序猿技術(shù)的高超咩?額...是不是暴露了我菜鳥的屬性...其實(shí)SDK蠻好用,只是上一篇文章中也看到了,在支付完成回調(diào)函數(shù)中,著實(shí)讓人繞的暈頭轉(zhuǎn)向。

對(duì)于不想被官方繞的,想在TP中使用微信支付的可以看看一個(gè)大神自己根據(jù)官方文檔重構(gòu)精簡(jiǎn)打造而成的適用于TP的支付SDK,源碼我下載下來看過了,代碼寫的很優(yōu)雅簡(jiǎn)介,流程也很簡(jiǎn)單,通俗易懂。詳見博文:http://baijunyao.com/article/78

我自己還是皺著眉頭,使用了官方的SDK,也成功實(shí)現(xiàn)了支付,下面跟大家分享一下流程:

1.SDK下載和修改

這個(gè)就不過多講了,不知道的可以看看我的上一篇文章:PHP實(shí)現(xiàn)微信支付(jsapi支付)流程,里邊詳細(xì)詳述了下載下來的文件哪些是需要修改的。

2.公眾號(hào)設(shè)置

A. 還是需要設(shè)置網(wǎng)頁(yè)授權(quán)域名,這個(gè)沒啥特殊的;

B. 這里要注意一下支付授權(quán)目錄,使用TP很多人都使用的是重寫模式(REWRITE模式)或者在使用REWRITE模式的同時(shí),使用偽靜態(tài)模式,這時(shí)候生成的鏈接為: http://serverName/Home/Blog/read/id/1 ;

如果使用的是PATHINFO模式的話,生成的鏈接就是:http://serverName/index.php/Home/Blog/read/id/1,比如在Home模塊下的Blog控制器中的某個(gè)方法進(jìn)行支付,我們支付的授權(quán)目錄應(yīng)該是 http://serverName/Home/Blog/ 或者 http://serverName/index.php/Home/Blog/,這個(gè)根據(jù)自己的TP的設(shè)置的URL模式而定。

3.支付流程

(1)統(tǒng)一下單

下單的支付參數(shù)配置,這個(gè)跟上一篇講的基本不變,重點(diǎn)注意的是支付回調(diào)驗(yàn)證鏈接,因?yàn)橐啻握{(diào)用,我就直接在Application/Common/Common/function.php中將參數(shù)配置封裝起來了,我的SDK放在項(xiàng)目根目錄下的Api目錄下,所以引入SDK的時(shí)候不是使用Vendor函數(shù)。

/**  * 微信支付  * @param string $openId  openid  * @param string $goods  商品名稱  * @param string $attach  附加參數(shù),我們可以選擇傳遞一個(gè)參數(shù),比如訂單ID  * @param string $order_sn 訂單號(hào)  * @param string $total_fee 金額  */ function wxpay($openId,$goods,$order_sn,$total_fee,$attach){  require_once APP_ROOT."/Api/wxpay/lib/WxPay.Api.php";  require_once APP_ROOT."/Api/wxpay/payment/WxPay.JsApiPay.php";  require_once APP_ROOT.'/Api/wxpay/payment/log.php';  //初始化日志  $logHandler= new CLogFileHandler(APP_ROOT."/Api/wxpay/logs/".date('Y-m-d').'.log');  $log = Log::Init($logHandler, 15);  $tools = new JsApiPay();  if(empty($openId)) $openId = $tools->GetOpenid();  $input = new WxPayUnifiedOrder();  $input->SetBody($goods);     //商品名稱  $input->SetAttach($attach);     //附加參數(shù),可填可不填,填寫的話,里邊字符串不能出現(xiàn)空格  $input->SetOut_trade_no($order_sn);   //訂單號(hào)  $input->SetTotal_fee($total_fee);   //支付金額,單位:分  $input->SetTime_start(date("YmdHis"));  //支付發(fā)起時(shí)間  $input->SetTime_expire(date("YmdHis", time() + 600));//支付超時(shí)  $input->SetGoods_tag("test3");  //$input->SetNotify_url("http://".$_SERVER['HTTP_HOST']."/payment.php"); //支付回調(diào)驗(yàn)證地址  $input->SetNotify_url("http://".$_SERVER['HTTP_HOST']."/payment.php/WexinApi/WeixinPay/notify");  $input->SetTrade_type("JSAPI");    //支付類型  $input->SetOpenid($openId);     //用戶openID  $order = WxPayApi::unifiedOrder($input); //統(tǒng)一下單  $jsApiParameters = $tools->GetJsApiParameters($order);  return $jsApiParameters; }

注意,注意,敲黑板劃重點(diǎn)了:

支付回調(diào)驗(yàn)證鏈接,必須是沒有權(quán)限驗(yàn)證的,如果你自己訪問那個(gè)鏈接,還需要登錄注冊(cè)驗(yàn)證的,就不要嘗試了,必須要可以無障礙訪問的鏈接,而且也不要有一連串的參數(shù)傳遞。

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南乐县| 维西| 鄂托克前旗| 宁武县| 公主岭市| 鹿邑县| 化德县| 玛多县| 嘉禾县| 河曲县| 托克逊县| 夏邑县| 沽源县| 龙州县| 沿河| 昭平县| 米泉市| 衡水市| 鱼台县| 吉首市| 无极县| 昂仁县| 康平县| 秀山| 肃宁县| 灵丘县| 新龙县| 洪雅县| 霍山县| 天台县| 运城市| 永修县| 剑河县| 新昌县| 蓬安县| 抚顺县| 上虞市| 政和县| 乐昌市| 宜良县| 神木县|