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

首頁 > 語言 > PHP > 正文

小程序微信支付功能配置方法示例詳解【基于thinkPHP】

2024-05-05 00:08:46
字體:
供稿:網(wǎng)友

本文實(shí)例講述了小程序微信支付功能配置方法。分享給大家供大家參考,具體如下:

★ 背景

  • 近期進(jìn)行小程序的開發(fā),畢竟是商城項(xiàng)目的開發(fā),最后牽扯到的微信支付是必要的
  • 個人開發(fā)過程中也是遇到各種問題,在此,我根據(jù)自己的實(shí)際操作,進(jìn)行了代碼的詳細(xì)配置,以方便小程序新手的快速操作

-  使用語言:PHP             # PHP世界上最好的語言 HaHahahaaha
-  使用框架:ThinkPHP 3.2    # 版本有點(diǎn)低而已,沒啥大礙
-  測試工具:微信開發(fā)者工具    # 其實(shí)還挺好用
-  整理時間:2018-07-07      # 有問題,就會一直更新

tip: 【代碼都是可轉(zhuǎn)化的,即便是 ThinkPHP5.0+ 還是 Laravel框架,相對熟悉 PHP 代碼語法的,進(jìn)行轉(zhuǎn)化也只是分分鐘的事哦!】

一、開發(fā)前的準(zhǔn)備

①. 開發(fā)步驟

  • 如果開發(fā)者已做過 JSAPI 或 JSSDK 調(diào)起微信支付,接入小程序支付非常相似,以下是三種接入方式的對比:
    小程序,微信支付,thinkPHP

 

  • 如此看來,小程序要想集成支付功能,倒是簡單了

 

  • 對公眾號微信支付感興趣的可以參考之前整理的一篇文章 —— 微信公眾平臺開發(fā)教程④ ThinkPHP框架下微信支付功能圖文詳解

②. 閱讀業(yè)務(wù)流程圖

  • 本人強(qiáng)烈推薦閱讀這個圖示,流程明確了,代碼邏輯自然也就理順了!
    小程序,微信支付,thinkPHP

③. 小程序支付業(yè)務(wù)

# 很多人這一步還沒有完成,就咔咔咔的測試支付功能,顯然是太急于求成了,比如:我!
> 注意:
> 1. 要開通微信支付功能(一般有兩三天的審核時間)
> 2. 本人開通后,選擇的是 “綁定一個已有的微信支付商戶號”,也就幾分鐘的事

小程序,微信支付,thinkPHP

  • 此處請閱讀官方文末的注意事項(xiàng)【重要】:

1 appid 必須為最后拉起收銀臺的小程序appid; 
  # 這句話感覺不說還好,一說更容易引起多余的考慮(忽視)

2 mch_id 為和 appid 成對綁定的支付商戶號,收款資金會進(jìn)入該商戶號;
  # 此處我直接使用了所綁定的商戶號中的 mch_id

3 trade_type 請?zhí)顚?quot;JSAPI"; 
  # 可暫時忽略,因?yàn)槲以诖a中已進(jìn)行了配置

4 openid 為 appid 對應(yīng)的用戶標(biāo)識,即使用 "wx.login" 接口獲得的 openid 
  # 可參考我的 payment/index.js 代碼
  # 另一種情況,如果項(xiàng)目數(shù)據(jù)庫中已保存了該用戶的openid字段,可自行獲取

二、小程序端代碼配置指導(dǎo)

  • 這里進(jìn)行配置的代碼,都在附錄源碼包的 wxMini-PayDemo/wxChat 目錄下

為了項(xiàng)目代碼的 通用性/易管理性,我自行提取出了兩個主要的公共文件 config.js 和 util.js;

①. utils下 config.js 文件的使用

  • config.js 文件中,主要就是配置一些公共訪問路徑之類的數(shù)據(jù),方便后期代碼上線后的鏈接更改
  • 所以,對于其中的 restUrl 和 imgServer 修改為自己的服務(wù)器地址即可
    小程序,微信支付,thinkPHP

> 注意一點(diǎn):
我的 "restUrl" 是對應(yīng)于我的小程序 Api 接口路徑的,舉個例子:
我的支付回調(diào)路徑為 "https://www.mySercver.com/WxApi/Pay/notify"

②. utils下 util.js 文件的使用

  • 這個是和 config.js 文件在同一目錄下的公共文件
  • 其實(shí)就是整合了三個主要的方法,需要注意的是:如果你有所補(bǔ)充,記得在文件的最后進(jìn)行 “exports” 輸出就好
module.exports = { http_get: http_get, http_post: http_post, showToast: showToast,}

③. payment/index.js 文件的使用

  • 此文件作為 小程序微信支付前端的核心文件
  • 在保證你的各個文件目錄對應(yīng)配置正確的情況下,只需在進(jìn)行支付喚醒時,調(diào)用其中的 btnClickToPay() 方法即可:
    小程序,微信支付,thinkPHP

 

  • 當(dāng)然,我只是隨便定的一個方法,實(shí)際使用的時候,其實(shí)就是以類似的形式,去調(diào)用后面的 wxPay()方法唄!

 

三、服務(wù)端代碼文件的使用指導(dǎo)

  • 這里進(jìn)行配置的代碼,都在源碼包的 wxMini-PayDemo/Server-PHP 目錄下

 

聲明:
***因?yàn)楸救怂峁┑拇a是基于 ThinkPHP3.2 框架編寫整理的,所以對于使用過 ThinkPHP 或 Laravel 框架的 PHPer 來說,簡單明了,可根據(jù)自己的框架進(jìn)行調(diào)整適配,所以,此處講的可能不會太過瑣碎 ***

 

①. 公共配置文件的數(shù)據(jù)補(bǔ)充

  • 此為源代碼中的 "wxMini-PayDemo/Server-PHP/Conf/config.php",此文件代碼比較少,我直接進(jìn)行展示:

 

return array( //'配置項(xiàng)'=>'配置值' 'wxPay' => [ 'appid' => 'wx8787xxxxxxxxxxxxx',//TODO 此處使用的是小程序的 APPID 'app_secret' => '0a7xxxxxxxxxxxxxxxxxxxxxxxxxxxxx622', //小程序的應(yīng)用密鑰 'pay_mchid' => '13xxxxxx02', // 微信支付MCHID 商戶收款賬號 'pay_apikey' => '1qaxxxxxxxxxxxxxxxxxxxxxhgf5', // 微信支付KEY 'notify_url' => 'https://www.mySercver.com/WxApi/Pay/notify', // 微信支付成功后進(jìn)行回調(diào)的鏈接 'login_url' => "https://api.weixin.qq.com/sns/jscode2session?" .  "appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", // 微信使用code換取用戶openid及session_key的url地址 ],);
 
  • 對于上述配置信息的來源,應(yīng)該沒啥疑問吧?

注意一點(diǎn):
"notify_url" 作為支付回調(diào)的鏈接地址,要求配置成自己的服務(wù)器路徑 
 ;#同時注意協(xié)議的要求 “https”

小程序官方要求:
 ;# 需要進(jìn)行服務(wù)器域名的配置
 ;# 操作位置為 “小程序(微信公眾平臺)/設(shè)置/開發(fā)設(shè)置”中的“服務(wù)器域名->request 合法域名”

 

小程序,微信支付,thinkPHP

②. 公共方法 function.php 的補(bǔ)充

  • 對于本人的邏輯處理中,其實(shí)只有一個方法 curl_get(), 并且只在 PayController.class.php 的 getOpenID() 方法中進(jìn)行了一次調(diào)用,也可以自行提取使用的
    小程序,微信支付,thinkPHP

③. 核心處理文件 PayController.class.php

 

此文件代碼已做了詳細(xì)處理,在你正確放置后,需要注意的幾點(diǎn)如下:

 

  • (1). 注意命名空間 "namespace" 與自己業(yè)務(wù)代碼的對應(yīng)
  • (2). 在 "prepay()" 方法中,因?yàn)椴煌臉I(yè)務(wù)都會有屬于自己的判斷處理邏輯,
    小程序,微信支付,thinkPHP

所以,在使用時完全可以替換掉所調(diào)用的 "prepayOrderDeal()" 方法  ;# 相信沒多大歧義吧!
   #【在此處,我建議進(jìn)行一下微信支付金額的校對】
   # 比如,通過訂單號到你的項(xiàng)目數(shù)據(jù)庫中,查詢出需要支付的金額再與此比較,
   # 只有符合你的要求才可以進(jìn)行微信支付的下單操作

  • (3). 在 "pay()" 方法中

 

建議對應(yīng)當(dāng)前的訂單號,保存微信支付返回的 prepay_id

 

小程序,微信支付,thinkPHP

  • (4). 再有就是,在 "notify()" 這個回調(diào)方法中

一定會涉及到自己業(yè)務(wù)的更新處理邏輯
    所以被調(diào)用的 "payNotifyOrderDeal()"方法中就可以改成你自己的業(yè)務(wù)邏輯了 (此處是可以自行補(bǔ)充的)

 

小程序,微信支付,thinkPHP

 注意,此處傳入的 "$result" 參數(shù)中,我主要使用的就是其中的 "out_trade_no" 和 "total_fee" 
  # 包含著微信支付的眾多信息,可自行提取
 前者用于匹配我對該已支付訂單的后續(xù)更新操作 
  #【提示:我在使用時需要使用 "M" 進(jìn)行字符串的截取才是我自己業(yè)務(wù)的實(shí)際訂單編號哦!】;
 后者是實(shí)際微信消費(fèi)的金額,可用于數(shù)據(jù)表的記錄,以方便對賬人員的校對工作

補(bǔ)充:
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 雷山县| 兰州市| 德庆县| 光泽县| 衡山县| 游戏| 涞水县| 南川市| 涿鹿县| 犍为县| 定襄县| 宝坻区| 公主岭市| 宜宾市| 织金县| 永修县| 屏边| 墨江| 阿瓦提县| 大竹县| 阜城县| 嫩江县| 钟山县| 忻州市| 甘肃省| 涟水县| 铜鼓县| 五华县| 方山县| 葫芦岛市| 钦州市| 南郑县| 疏附县| 东平县| 高阳县| 凌海市| 平谷区| 江都市| 仙居县| 准格尔旗| 襄汾县|