本文實例講述了小程序微信支付功能配置方法。分享給大家供大家參考,具體如下:
- 使用語言:PHP # PHP世界上最好的語言 HaHahahaaha
- 使用框架:ThinkPHP 3.2 # 版本有點低而已,沒啥大礙
- 測試工具:微信開發者工具 # 其實還挺好用
- 整理時間:2018-07-07 # 有問題,就會一直更新
tip: 【代碼都是可轉化的,即便是 ThinkPHP5.0+ 還是 Laravel框架,相對熟悉 PHP 代碼語法的,進行轉化也只是分分鐘的事哦!】
# 很多人這一步還沒有完成,就咔咔咔的測試支付功能,顯然是太急于求成了,比如:我!
> 注意:
> 1. 要開通微信支付功能(一般有兩三天的審核時間)
> 2. 本人開通后,選擇的是 “綁定一個已有的微信支付商戶號”,也就幾分鐘的事
1 appid 必須為最后拉起收銀臺的小程序appid;
# 這句話感覺不說還好,一說更容易引起多余的考慮(忽視)
2 mch_id 為和 appid 成對綁定的支付商戶號,收款資金會進入該商戶號;
# 此處我直接使用了所綁定的商戶號中的 mch_id
3 trade_type 請填寫"JSAPI";
# 可暫時忽略,因為我在代碼中已進行了配置
4 openid 為 appid 對應的用戶標識,即使用 "wx.login" 接口獲得的 openid
# 可參考我的 payment/index.js 代碼
# 另一種情況,如果項目數據庫中已保存了該用戶的openid字段,可自行獲取
為了項目代碼的 通用性/易管理性,我自行提取出了兩個主要的公共文件 config.js 和 util.js;
config.js
文件的使用> 注意一點:
我的 "restUrl" 是對應于我的小程序 Api 接口路徑的,舉個例子:
我的支付回調路徑為 "https://www.mySercver.com/WxApi/Pay/notify"
util.js
文件的使用config.js
文件在同一目錄下的公共文件module.exports = { http_get: http_get, http_post: http_post, showToast: showToast,}
payment/index.js
文件的使用
- 當然,我只是隨便定的一個方法,實際使用的時候,其實就是以類似的形式,去調用后面的
wxPay()
方法唄!
wxMini-PayDemo/Server-PHP
目錄下
聲明:
***因為本人所提供的代碼是基于ThinkPHP3.2
框架編寫整理的,所以對于使用過ThinkPHP
或Laravel
框架的PHPer
來說,簡單明了,可根據自己的框架進行調整適配,所以,此處講的可能不會太過瑣碎 ***
"wxMini-PayDemo/Server-PHP/Conf/config.php"
,此文件代碼比較少,我直接進行展示:
return array( //'配置項'=>'配置值' 'wxPay' => [ 'appid' => 'wx8787xxxxxxxxxxxxx',//TODO 此處使用的是小程序的 APPID 'app_secret' => '0a7xxxxxxxxxxxxxxxxxxxxxxxxxxxxx622', //小程序的應用密鑰 'pay_mchid' => '13xxxxxx02', // 微信支付MCHID 商戶收款賬號 'pay_apikey' => '1qaxxxxxxxxxxxxxxxxxxxxxhgf5', // 微信支付KEY 'notify_url' => 'https://www.mySercver.com/WxApi/Pay/notify', // 微信支付成功后進行回調的鏈接 '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地址 ],);
注意一點:
"notify_url" 作為支付回調的鏈接地址,要求配置成自己的服務器路徑
;#同時注意協議的要求 “https”小程序官方要求:
;# 需要進行服務器域名的配置
;# 操作位置為 “小程序(微信公眾平臺)/設置/開發設置”中的“服務器域名->request 合法域名”
function.php
的補充PayController.class.php
此文件代碼已做了詳細處理,在你正確放置后,需要注意的幾點如下:
所以,在使用時完全可以替換掉所調用的 "
prepayOrderDeal()
" 方法 ;# 相信沒多大歧義吧!
#【在此處,我建議進行一下微信支付金額的校對】
# 比如,通過訂單號到你的項目數據庫中,查詢出需要支付的金額再與此比較,
# 只有符合你的要求才可以進行微信支付的下單操作
"pay()"
方法中
建議對應當前的訂單號,保存微信支付返回的
prepay_id
"notify()"
這個回調方法中一定會涉及到自己業務的更新處理邏輯
所以被調用的 "payNotifyOrderDeal()
"方法中就可以改成你自己的業務邏輯了 (此處是可以自行補充的)
注意,此處傳入的 "$result" 參數中,我主要使用的就是其中的 "out_trade_no" 和 "total_fee"
# 包含著微信支付的眾多信息,可自行提取
前者用于匹配我對該已支付訂單的后續更新操作
#【提示:我在使用時需要使用 "M" 進行字符串的截取才是我自己業務的實際訂單編號哦!】;
后者是實際微信消費的金額,可用于數據表的記錄,以方便對賬人員的校對工作
新聞熱點
疑難解答
圖片精選