亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

ThinkPHP框架下微信支付功能總結踩坑筆記

2024-05-05 00:08:18
字體:
來源:轉載
供稿:網友

本文實例講述了ThinkPHP框架下微信支付功能總結。分享給大家供大家參考,具體如下:

摘要

 

  • 此文主要為個人解決 ThinkPHP3.2.3 下微信支付所遇到的一些坑的解決方案,僅供參考
  • 詳情請參考 原文 : 微信公眾平臺開發教程之ThinkPHP框架下微信支付功能

踩坑記錄

為便于參考,此處附錄部分 weixinpay.class代碼截圖

ThinkPHP,微信支付

①. 驗證不嚴謹,損失教訓

  • 補充時間:【2017-01-02】
  • 情況描述

【我尊重你,但不認同你】
  恰逢元旦期間,遭到微信支付被大牛攻破的情況,損失近 80k,好在公司并沒有追究,畢竟一直在趕時間,測試不全面(壓根沒測試人員),慶幸的的對方 24小時未收款,基本全部退還
  問題集中在驗證不足的紅包發放上,不屬于我的編碼范圍,分析后,明白一點,盡全力不要使用前端的數據提交,需要進行后端的數據判斷,考慮盡量多的情況。

②. “total_fee” 參數報錯

  • 補充時間:【2017-02-05】
  • 情況描述

 今天發現一種情況,如果打開微信支付密碼的界面后,未支付而從待付款進行再支付,會有時候報錯一個“total_fee” 參數報錯,找到一種解決方法,即將 “out_trade_no” 以時間戳來重新配置,個人猜測或許是因為一次支付未完成后因為某種原因限制再付款 …

代碼參考如下:

$total_fee = floatval($order_amount)*100;$order=array(  'body'=>'testMsg',// 商品描述(需要根據自己的業務修改)  'total_fee'=>$total_fee,// 訂單金額 以(分)為單位(需要根據自己的業務修改)  'out_trade_no'=>$out_trade_no.'M'.time(),// 訂單號(需要根據自己的業務修改)  'product_id'=>'1',// 商品id(需要根據自己的業務修改)  'trade_type'=>'JSAPI',// JSAPI公眾號支付  'openid'=>$openid// 獲取到的openid);

③. 批量支付問題

  • 補充時間:【2017-02-08】
  • 情況描述

  今天在做批量支付時發現,會有 total_fee 報錯
  個人最初簡單的想法是將所有待支付的批量訂單拼接為 state 參數傳入微信,然后再進入 notify() 方法中進行分離整理,此時發現微信有參數長度的限制,大概最多 50 個字符 ,不可以無限制的拼接
  后來的解決方案是進行新訂單的創建,由此新訂單號去查詢關聯的其他批量訂單信息,并且已完成需求

④. 回調函數的注意

  • 情況描述

  注意該路徑必須要與配置文件中的回調路徑一致,此回調函數,是根據微信是否真正完成支付后的數據更新鏈接,一般在此處進行訂單狀態的修改
  先前發現,因為微信服務的設計,會多次回調 notify() 以判斷是否真正的支付成功,而簡單的 update 操作是無法檢測的,為了同自己的平臺相關聯,同理需要進行狀態的判斷,否則不可避免的會多次執行 notify() 中的邏輯處理

注意:

1. 比如,我在此處異步執行的是將訂單號的支付狀態參數由 0 置為 1,判斷如果是已支付訂單,則不再執行后續更新邏輯.
2. 個人測試發現,此處 session 和 cookie 的設置都失效,僅做參考

⑤. D() 方法失效問題

  • 補充時間:【2017-02-09】
  • 情況描述

  今天發現,當在微信完成支付后進行的回調中,針對于 ThinkPHP 框架里的 D() 方法是無法執行的,測試發現同樣的代碼不是這樣微信回調就可以執行,畢竟之前記得是沒有問題的
  此時考慮的解決方法是使用 model 的實例化 new 方法進行曲線優化,發現可行…

⑤. 鬼知道是什么情況

  • 補充時間:【2017-05-02】
  • 情況描述

   這兩天再次進行代碼的迭代,根據自己之前的印象繼續折騰微信支付,發現這可真真的是個坑,我認為剛開通微信支付的服務號很有可能不滿足某些代碼開發需求,配置完成的數據,半天都不能接收到正確的反饋
  待到第二天再準備繼續攻克時發現,未動的代碼又實現了需求
  舉個例子:
  前一天回調的路徑放在 M 模塊下怎么都不執行,手賤參考以前的回調路徑放到 Home下就可以了,首先排除低級的個人代碼問題,因為第二天無聊又改回去了 M,竟然又好了…

補充一部分測試的代碼:

/** * 微信支付監聽接口 判斷是否完成了微信支付操作 */public function notify(){  // ↓↓↓下面的file_put_contents是用來簡單查看異步發過來的數據 測試完可以刪除;↓↓↓  // 獲取xml  /*$xml=file_get_contents('php://input', 'r');  //轉成php數組 禁止引用外部xml實體  libxml_disable_entity_loader(true);  $data= json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA));  file_put_contents('.notify.log', $data);*/  // ↑↑↑上面的file_put_contents是用來簡單查看異步發過來的數據 測試完可以刪除;↑↑↑  // 導入微信支付sdk  Vendor('Weixinpay.Weixinpay');  $wxpay=new /Weixinpay();  $result = $wxpay->notify();  if ($result) {    $out_trade_no = explode('M',$result['out_trade_no'])[0] ;    $this->toUpdatePayInfo($out_trade_no);    //TODO 進行頁面跳轉  }}

⑥. ThinkPHP 跨模塊調用方法失效問題

  • 補充時間:【2017-05-03】
  • 情況描述

  有種情況的出現是,同樣的代碼在實際支付回調的函數中不執行,然而自己做了個測試路徑傳入固定訂單號發現執行順利,前提是所處環境完全一致(都在線上進行),就如同上次使用D()方法測試可以執行,放在實際的微信回調后就打死也不執行
  而這次吸取了教訓,使用的 new model 實例化方法,因為其中的一個 model 類在初始化時調用了部分數據,結果微信支付回調時卡在實例化這行代碼上,雖然測試的代碼是沒問題的,自己也說不清楚,鬼知道到底是怎么回事
  不過發現 A() 跨模塊方法還是可以用的,至少現在是可行的…
后期發現如下的類似方法也能執行

//TODO 獲取對應訂單的交易價$cartPayController = new /M/Controller/CartpayController();$order_amount = $cartPayController->wxPayOrder($out_trade_no,0);

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91热精品视频| 久久久久久91香蕉国产| 成人精品视频在线| 亚洲免费小视频| www.日韩视频| 97超级碰在线看视频免费在线看| 亚洲精品一区在线观看香蕉| 精品久久久久久久大神国产| 久久久久久com| 国产69久久精品成人| 国产91对白在线播放| 精品女同一区二区三区在线播放| 国产综合在线观看视频| 精品中文字幕久久久久久| 欧美激情性做爰免费视频| 国产精品美女在线观看| 久久久av亚洲男天堂| 日韩精品999| 亚洲综合中文字幕在线观看| 亚洲黄色在线观看| 国产一区二区日韩| 久久免费国产精品1| 97精品在线视频| 日韩视频中文字幕| 日韩av理论片| 国产精品久久久久福利| 国产日韩欧美成人| 日韩av中文字幕在线免费观看| 亚洲无线码在线一区观看| 久久天天躁夜夜躁狠狠躁2022| 亚洲精品一区二区三区婷婷月| 日韩最新av在线| 精品国产一区二区三区久久狼5月| 国产精品免费一区二区三区都可以| 亚洲欧美日韩另类| 亚洲欧美国内爽妇网| 成人久久久久爱| 亚洲精品美女久久久久| 亚洲视频视频在线| 欧美视频在线观看免费| 中文字幕精品在线| 国产一区二区三区直播精品电影| 精品免费在线视频| 亚洲美女av黄| 日韩电影中文字幕在线观看| 亚洲国产天堂久久综合| 国产欧美亚洲精品| 91精品视频观看| 久久99热这里只有精品国产| 国产免费久久av| 97在线观看视频国产| 欧美日韩国产va另类| 日本精品一区二区三区在线播放视频| 538国产精品视频一区二区| 欧美精品18videos性欧美| 欧美性猛交丰臀xxxxx网站| 亚洲网站视频福利| 国产成+人+综合+亚洲欧洲| 九九久久久久久久久激情| 欧美一级电影免费在线观看| 久99久在线视频| 欧美日韩在线看| 精品爽片免费看久久| 国产精品久久久久77777| 亚洲欧洲一区二区三区久久| 国产激情久久久久| 精品久久久久久亚洲精品| 久久久久国色av免费观看性色| 一区三区二区视频| 78色国产精品| 2020欧美日韩在线视频| 日本不卡高字幕在线2019| 国产精品一香蕉国产线看观看| 国产亚洲一区精品| 日韩网站免费观看高清| 97av在线视频| 久久久久久久一区二区三区| 国产成人精品久久二区二区| 亚洲天堂网站在线观看视频| 色播久久人人爽人人爽人人片视av| 久久久久久香蕉网| 国产精品扒开腿做爽爽爽的视频| 亚洲免费伊人电影在线观看av| 欧美激情国产高清| 三级精品视频久久久久| 日本高清+成人网在线观看| 日韩av电影在线免费播放| 精品动漫一区二区三区| 亚洲高清色综合| 日本一区二区三区在线播放| 日韩欧美精品在线观看| 在线成人激情视频| 91丨九色丨国产在线| 亚洲欧美激情四射在线日| 亚洲第一精品电影| 欧美性少妇18aaaa视频| 91在线精品播放| 九九久久综合网站| 日韩理论片久久| 欧美精品18videos性欧美| 欧美在线视频播放| 日本精品免费一区二区三区| 亚洲第一色中文字幕| 在线亚洲男人天堂| 日韩精品在线免费播放| 久久久国产一区二区| 欧美日韩国产丝袜另类| 久久久久久久久中文字幕| 国产精品女人网站| 国产v综合ⅴ日韩v欧美大片| 国产精品午夜国产小视频| 国产精品极品尤物在线观看| 91在线中文字幕| 亚洲国产精品久久久久秋霞蜜臀| 国产一区二区三区在线播放免费观看| 欧美老女人在线视频| 亚洲国产成人久久综合一区| 2019日本中文字幕| 亚洲色图校园春色| 欧美成人三级视频网站| 国产91色在线|免| 日韩一级裸体免费视频| 日韩在线中文字| 亚洲视屏在线播放| 国产精品欧美风情| 国产精品99久久99久久久二8| 国产精品福利片| 亚洲va码欧洲m码| 狠狠躁夜夜躁人人爽天天天天97| 91在线免费观看网站| 久久99亚洲热视| 国产精品18久久久久久麻辣| 国产成人97精品免费看片| 久久露脸国产精品| 国产精品扒开腿爽爽爽视频| 黄网动漫久久久| 精品亚洲一区二区三区四区五区| 久久在精品线影院精品国产| 久久视频在线视频| 欧美性69xxxx肥| 久久久97精品| 亚洲精品成人久久久| 最近中文字幕2019免费| 亚洲成人av片| 国产日韩欧美另类| 中文字幕最新精品| 日韩欧美亚洲一二三区| 国产精品日韩电影| 亚洲一区二区久久久久久| 国产精品va在线播放| 国产亚洲成av人片在线观看桃| 国产成人精品综合久久久| 亚洲丁香久久久| 岛国av一区二区三区| 欧美一级片久久久久久久| 中文字幕一区二区三区电影| 久久这里有精品视频| 日韩精品小视频| 亚洲国内精品在线| 亚洲免费视频网站| 狠狠操狠狠色综合网| 欧美一级淫片aaaaaaa视频| 欧美另类99xxxxx| 91精品国产高清久久久久久91|