1. 程式人生 > >thinkphp5+easywechat:微信公眾號內支付

thinkphp5+easywechat:微信公眾號內支付

 前幾天寫了一下使用tp5和easywechat整合微信掃碼支付的方法(可以點這裡檢視),裡面已經說過咱們安裝easywechat了,這裡就不在重複說明了,直接寫整合的步驟了:

    1,相關的配置請參考之前的第一篇文字

    2,頁面樣子如下:

QQ截圖20171125204422.png

頁面程式碼就不貼了,就只是寫了下按鈕的程式碼如下:

  1. <ahref="{:url('mobile/recharge/pay',['amount'=>1])}" type="button" style="width: 98%;height: 40px;background: #2ba245;border: 0;color: #fff;font-size: 16px;">使用微信支付
    </a>

這裡為了掩飾,直接使用a連結跳轉,amount就是需要支付的金額,這裡的邏輯可以根據自己的情況處理,直接的傳遞金額還是不要的好,跳轉到pay之後,向微信請求生成預支付訂單,並獲取調取微信支付的相關內容:

Recharge.php中function pay的程式碼如下:

  1. namespace app\payment\controller;
  2. use EasyWeChat\Foundation\Application;
  3. use EasyWeChat\Payment\Order;
  4. classWxpay extends Prepay
  5. {
  6. publicfunction pay(){
  7. $money
    = I('money',0);
  8. //建立支付訂單
  9. $params = $this->create_order($money);
  10. if($params !==false){
  11. $options =[
  12. // 前面的appid什麼的也得保留哦
  13. 'app_id'=>'xxxx',
  14. // ...
  15. // payment
  16. 'payment'=>[
  17. 'merchant_id'=>'your-mch-id',
  18. 'key'=>'key-for-signature',
  19. 'cert_path'=> getcwd()."\\Cert\\wechat\\apiclient_cert.pem"
    ,// XXX: 絕對路徑!!!!
  20. 'key_path'=> getcwd()."\\Cert\\wechat\\apiclient_key.pem",// XXX: 絕對路徑!!!!
  21. 'notify_url'=>'http://www.xxx.com/wxnotify/notify.html',// 你也可以在下單時單獨設定來想覆蓋它
  22. ],
  23. ];
  24. $wxApp =newApplication($options);
  25. $payment = $wxApp->payment;
  26. $attributes =[
  27. 'trade_type'=>'JSAPI',// JSAPI,NATIVE,APP...
  28. 'body'=>'元寶充值-'. $money ."-". $params['uid'],
  29. 'detail'=> $params['out_trade_no'],
  30. 'out_trade_no'=> $params['out_trade_no'],
  31. 'total_fee'=> $money *100,// 單位:分
  32. // 'notify_url' => 'http://xxx.com/order-notify', // 支付結果通知網址,如果不設定則會使用配置裡的預設地址
  33. 'openid'=> $this->uinfo['openid'],// trade_type=JSAPI,此引數必傳,使用者在商戶appid下的唯一標識,
  34. // ...
  35. ];
  36. $order =newOrder($attributes);
  37. $result = $payment->prepare($order);
  38. if($result->return_code =='SUCCESS'&& $result->result_code =='SUCCESS'){
  39. $prepayId = $result->prepay_id;
  40. $json = $payment->configForPayment($prepayId);
  41. $this->assign('jsondata',$json);
  42. return $this->fetch('yb-prepay');
  43. }else{
  44. return $this->error('調起支付失敗,稍後再試');
  45. }
  46. }else{
  47. return $this->error('充值訂單建立失敗,稍後再試');
  48. }
  49. }
  50. }
對應的前臺html程式碼:
  1. <html>
  2. <head>
  3. <metahttp-equiv="content-type"content="text/html;charset=utf-8"/>
  4. <metaname="viewport"content="width=device-width, initial-scale=1"/>
  5. <title>發起支付-支付</title>
  6. <scripttype="text/javascript">
  7. //呼叫微信JS api 支付
  8. function jsApiCall()
  9. {
  10. WeixinJSBridge.invoke(
  11. 'getBrandWCPayRequest',{$jsondata},
  12. function(res){
  13. WeixinJSBridge.log(res.err_msg);
  14. alert(res.err_code+res.err_desc+res.err_msg);
  15. }
  16. );
  17. }
  18. function callpay()
  19. {
  20. if(typeofWeixinJSBridge=="undefined"){
  21. if( document.addEventListener ){
  22. document.addEventListener('WeixinJSBridgeReady', jsApiCall,false);
  23. }elseif(document.attachEvent){
  24. document.attachEvent('WeixinJSBridgeReady', jsApiCall);
  25. document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
  26. }
  27. }else{
  28. jsApiCall();
  29. }
  30. }
  31. callpay();
  32. </script>
  33. </head>
  34. <body>
  35. <divalign="center">
  36. 正在發起支付,請稍後...
  37. </div>
  38. </body>
  39. </html>
html程式碼就看你自己發揮了,總之把微信返回的jsondata返回到前端,然後callpay()調起支付就好了,效果如下: IMG_20171125_210249.png

至於回撥,參考之前的第一篇即可,處理方式是一樣的(一、thinkphp5使用easywechat整合微信掃碼支付),其實用easywechat很簡單,構建支付引數之後執行即可,公眾號內支付一定要支付引數要包含openid,獲取openid的方法很多這裡暫時就不討論了,更多使用可以去看easywechat的手冊,希望對於你幫助。

相關推薦

thinkphp5+easywechat公眾支付

 前幾天寫了一下使用tp5和easywechat整合微信掃碼支付的方法(可以點這裡檢視),裡面已經說過咱們安裝easywechat了,這裡就不在重複說明了,直接寫整合的步驟了:     1,相關的配置請參考之前的第一篇文字     2,頁面樣子如下: 頁面程式碼

文章排版公眾新增4個新功能

改變 完成 png 新增 基本配置 dfa 縮小 理想 經理 微信公眾號排版對於新媒體運營是一個必知的課題。 就像中國人必須會說國語一樣。 說起排版,現在的排版都流行簡潔風格,那麽這裏也延續簡潔風。 我給大家列出了公眾號排版的一些基本配置,如有雷同,那就對了! 字號 建議

文章抓取公眾文章抓取常識之臨時連結、永久連結

未經允許請勿轉載 曾經嘗試過抓取微信文章的小夥伴,一定很熟悉搜狗微信。搜狗微信是騰訊官方提供的搜尋引擎,專門用來搜尋微信公眾號發表的文章(不包含服務號)。 對於想要獲取微信文章進行研究學習的小夥伴,首先探索的途徑通常是搜狗微信。那麼關於搜狗微信以及微信相關的抓取,需

如何在公眾實現圖書館座位預約功能

科技改變了你我的生活,讓我們的生活更加便利和高效。目前,智慧校園成為各方關注物件,科技的春風終於吹到了校園裡,各方廠家都想為更加高效便利的校園生活出一份力,不但為老師減輕負擔,也能讓孩子生活的更舒適。 說起校園生活那就不得不提預約這件事了,因為人數眾多,做什麼事情都要排隊預約想必每個人都

公眾喚起h5支付

1.呼叫統一下單的介面URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder 2.呼叫統一下單必傳引數:   appid:需要進行支付功能的公眾號的appId   mch_id:微信分配的商戶號   nonce_str:隨機字串,自己生成,要求在32位

乾貨推薦公眾如何漲粉

今天是2018年11月15 你離本月KPI考核僅剩15天 你離本年度KPI考核僅僅剩46天 本月or 今年,你的公眾號,漲了多少粉? 好多運營者都覺得 大號粉絲也是一點點積累起來的! 沒錯,但是人家前期漲粉是一波一波漲起來的! 而且! 這一波的量都不會低於四位

使用 laravel + easyWechat公眾支付

準備 1.微信服務號  相應的  appId  和 appsecret 2.微信支付商戶號 的 (商戶號的id)  mch_id   (商戶支付的金鑰)  key 商戶的key要到微信支付商戶平臺上檢視

淺析支付公眾網頁授權

本文是【淺析微信支付】系列文章的第四篇,主要講解微信支付前如何獲取獲取網頁授權及使用者資訊獲取。 淺析微信支付系列已經更新三篇了喲~,沒有看過的朋友們可以看一下哦。 1、開發前的準備 首先,如果沒有看過本系列 淺析微信支付:開發前的準備 的朋友需要看

公眾嵌的H5頁面

    前言:之前寫微信端購物商城的頁面時,使用過flex佈局,方便靈活,對手機端相容性良好,同時可應對複雜的巢狀佈局,很是方便。但是,針對兩欄式的微信端頁面,除了flex佈局,還有較為簡單的position:relative;和padding-left:90px;佈局方法,

yershop商城系統Thinkphp開發(四)——篇1公眾靜默授權註冊及獲取使用者資訊

微信登陸包括兩部分:1.常用的靜默授權;2.獲取使用者身份資訊 開發環境: Thinkphp3.2.3beta+onethink、yershop 新浪SAE伺服器,點此註冊 認證微信服務號 靜默授權 基礎配置 1.認證微信服務號 2.介面許可

laravel使用easyWeChat實現公眾支付

網上看了很多資料,沒有找到合適自己的,就乾脆自己寫一個吧 框架為laravel5.4,easyWeChat是4.0版本。 使用composer require "overtrue/larav

公眾H5支付-JAVA版

微信開發之微信公眾號H5支付-JAVA版   引子   從事JAVA開發一年多了,一直都在看部落格園,CSDN的部落格,從很多前人哪裡學習了很多,突然覺得自己也要盡一份力,寫點部落格自己給自己做做記錄,也給要開發微信人提提醒少遇點坑。   很多人開發微信的時候,總是在抱怨微

公眾h5支付 以及獲取code(前端部分)

記錄微信公眾號h5支付(前端部分) 前一段時間換了一家公司,剛來給了一個專案,h5移動端頁面,涉及登陸註冊、微信繫結、購買等。微信支付之前沒做過,不過比較簡單,在這裡記錄一下。 先上官網文件 微信支付 微信獲取code 第一步,先拿到code,拿到code傳給後臺。

公眾網頁支付詳解

$.ajax({ type: "post", url: "https://xueyi.gzyouquan.com/Miniapp/api/accountOrder/getsun.do", dataType:

php公眾JSAPI支付

首先是生成簽名方法 //生成簽名 private function MakeSign($params, $KEY) { //簽名步驟一:按字典序排序陣列引數 ksort($params);

php 公眾呼叫支付

記得原來弄過幾次每次說要整理哈沒有時間,今天一定要整理哈 方便下次使用。 這個是基於 tp 框架寫的。 首先我們從訂單提交來說。 表單提交之後我們會生成一個訂單id 參考的是白哥的部落格。 大概這個樣子  其實不用那麼多引數 傳一個訂單號就行了 後面在查一次。

vue做公眾分享,支付

在前段時間做了一個微信公眾號,因為我又是新手,沒什麼經驗,拿起vue就開始,導致一坑再坑,簡直闊怕!!! 對於此次專案,我主要用到的是vue的整框架和必要的外掛,但是我沒用vuex,用vuex的話會方便很多很多 1.首先從認證獲取openid說起; 因為我

vue開發專案公眾授權支付開發

router.beforeEach((to, from, next) => {  /**   * 檢測當前是否需要登入驗證   * 1. 確定當前頁面是否需要登入   */  if (!__getItem('isOauth')) {    // 微信授權    if (!getUrlKey('code'

公眾H5支付

//將統一下單引數進行字典序排序,進行簽名 /** * 微信支付簽名演算法(詳見:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3). * * @param params 引數資訊 * @param signT

公眾實現支付功能(基於官方sdk實現)--備忘001

首先要明白微信支付相關的三個賬號1:一定要認真閱讀官方開發文件,不然好多坑啊官方sdk-maven<dependency> <groupId>com.github.wxpay</groupId>