欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2019年05月05日 09:55:45   作者:moTzxx  
這篇文章主要介紹了小程序微信支付功能配置方法,結(jié)合實(shí)例形式分析了基于thinkPHP的微信小程序支付功能相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下

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

★ 背景

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

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

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

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

①. 開(kāi)發(fā)步驟

  • 如果開(kāi)發(fā)者已做過(guò) JSAPIJSSDK 調(diào)起微信支付,接入小程序支付非常相似,以下是三種接入方式的對(duì)比:

  • 如此看來(lái),小程序要想集成支付功能,倒是簡(jiǎn)單了

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

  • 本人強(qiáng)烈推薦閱讀這個(gè)圖示,流程明確了,代碼邏輯自然也就理順了!

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

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

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

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

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

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

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

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

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

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

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

  • config.js 文件中,主要就是配置一些公共訪問(wèn)路徑之類的數(shù)據(jù),方便后期代碼上線后的鏈接更改
  • 所以,對(duì)于其中的 restUrlimgServer 修改為自己的服務(wù)器地址即可

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

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

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

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

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

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

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

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

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

①. 公共配置文件的數(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 商戶收款賬號(hào)
 '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地址
 ],
);
  • 對(duì)于上述配置信息的來(lái)源,應(yīng)該沒(méi)啥疑問(wèn)吧?

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

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

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

  • 對(duì)于本人的邏輯處理中,其實(shí)只有一個(gè)方法 curl_get(), 并且只在 PayController.class.phpgetOpenID() 方法中進(jìn)行了一次調(diào)用,也可以自行提取使用的

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

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

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

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

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

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

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

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

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

補(bǔ)充:
  1. 為了方便后期 微信退款功能 的擴(kuò)展,建議對(duì)應(yīng)訂單保存回調(diào)得到的 $result
  2. 可以將其轉(zhuǎn)化為 json 字符串形式 $wx_pay_result_json = json_encode($result);, 然后存儲(chǔ)在訂單表中,比如:
  3. 如果,直接進(jìn)行微信退款功能的實(shí)現(xiàn),請(qǐng)完成后,參考:小程序 微信退款功能實(shí)現(xiàn)講解 (PHP方式)

四、使用及測(cè)試效果

①. 測(cè)試效果

  • 在我的小程序項(xiàng)目中,喚醒的效果(開(kāi)發(fā)工具中)如下:

  • 如果是在自己的手機(jī)端進(jìn)行測(cè)試,在保證你的域名配置正確的情況下,喚醒的樣式就是常見(jiàn)的樣子:
    -

②. 補(bǔ)充說(shuō)明

- 相信在實(shí)際配置使用的過(guò)程中一定會(huì)出現(xiàn)各種問(wèn)題,我也是一點(diǎn)點(diǎn)的梳理排錯(cuò)過(guò)來(lái)的 - 前面的多是些配置問(wèn)題的規(guī)范,如果到了最后的喚醒階段,出現(xiàn)的問(wèn)題要注意查看開(kāi)發(fā)工具的控制臺(tái), - 其中會(huì)有比較詳細(xì)的報(bào)錯(cuò)信息,然后再進(jìn)行排查解決 - 有何問(wèn)題,歡迎指摘,祝你配置順利咯!

☆ 附錄:

①. >>> Github 源碼下載參考

再做補(bǔ)充:如果,直接進(jìn)行微信退款功能的實(shí)現(xiàn),請(qǐng)完成后,參考:小程序 微信退款功能實(shí)現(xiàn)講解 (PHP方式)

②. 總結(jié)

  • 通過(guò)對(duì)以上操作的梳理,可以提取出主要的幾個(gè)步驟:

- . 小程序要開(kāi)通你的微信支付功能 # 需要審核時(shí)間的
- . 審核通過(guò)后,緊接著進(jìn)行"開(kāi)通"操作 #可有兩種開(kāi)通方式進(jìn)行選擇的
- . 前后端重要信息配置完畢
- . 補(bǔ)充自己的特有邏輯處理操作 #pay/prepayOrderDeal()和 pay/payNotifyOrderDeal()
- . 支付回調(diào)成功后,進(jìn)行后續(xù)的訂單(項(xiàng)目服務(wù)器)查詢操作

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作示例

    Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作示例

    這篇文章主要介紹了Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作,結(jié)合實(shí)例形式分析了Laravel框架權(quán)限控制rbac相關(guān)數(shù)據(jù)庫(kù)創(chuàng)建、讀寫及權(quán)限判斷等操作技巧,需要的朋友可以參考下
    2019-01-01
  • PHP中的Memcache詳解

    PHP中的Memcache詳解

    這篇文章主要介紹了PHP中的Memcache,從Memcache簡(jiǎn)介開(kāi)始,詳細(xì)講解了如Memcache和memcached的區(qū)別、PHP的Memcache所有操作方法、每個(gè)操作方法的詳細(xì)解釋等,需要的朋友可以參考下
    2014-04-04
  • 用HTML/JS/PHP方式實(shí)現(xiàn)頁(yè)面延時(shí)跳轉(zhuǎn)的簡(jiǎn)單實(shí)例

    用HTML/JS/PHP方式實(shí)現(xiàn)頁(yè)面延時(shí)跳轉(zhuǎn)的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇用HTML/JS/PHP方式實(shí)現(xiàn)頁(yè)面延時(shí)跳轉(zhuǎn)的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • PHP設(shè)計(jì)模式之觀察者模式入門與應(yīng)用案例詳解

    PHP設(shè)計(jì)模式之觀察者模式入門與應(yīng)用案例詳解

    這篇文章主要介紹了PHP設(shè)計(jì)模式之觀察者模式入門與應(yīng)用,結(jié)合具體案例形式詳細(xì)分析了PHP觀察者模式的相關(guān)概念、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • 利用php_imagick實(shí)現(xiàn)復(fù)古效果的方法

    利用php_imagick實(shí)現(xiàn)復(fù)古效果的方法

    相信對(duì)于php_imagick很多人都不陌生,這篇文章先進(jìn)行簡(jiǎn)單的介紹了php_imagick和簡(jiǎn)單的示例,而后通過(guò)示例代碼介紹了利用php_imagick實(shí)現(xiàn)復(fù)古效果的方法,對(duì)大家的學(xué)習(xí)和工作具有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。
    2016-10-10
  • PHP中的正則表達(dá)式實(shí)例詳解

    PHP中的正則表達(dá)式實(shí)例詳解

    在編程里基本都會(huì)用到正則表達(dá)式來(lái)處理數(shù)據(jù),那么下面就具體在PHP中怎么運(yùn)用吧,本文通過(guò)具體的實(shí)例,給大家講解了PHP中正則表達(dá)式的使用方法。
    2017-04-04
  • yii2 modal彈窗之ActiveForm ajax表單異步驗(yàn)證

    yii2 modal彈窗之ActiveForm ajax表單異步驗(yàn)證

    這篇文章主要介紹了yii2 modal彈窗之ActiveForm ajax表單驗(yàn)證的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • php 偽造HTTP_REFERER頁(yè)面URL來(lái)源的三種方法

    php 偽造HTTP_REFERER頁(yè)面URL來(lái)源的三種方法

    這篇文章主要介紹了php 偽造HTTP_REFERER頁(yè)面URL來(lái)源的三種方法的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • ThinkPHP實(shí)現(xiàn)更新數(shù)據(jù)實(shí)例詳解(demo)

    ThinkPHP實(shí)現(xiàn)更新數(shù)據(jù)實(shí)例詳解(demo)

    本文給大家介紹thinkphp實(shí)現(xiàn)更新數(shù)據(jù)的實(shí)例詳解以及thinkphp更新數(shù)據(jù)庫(kù)的五種方法,本文介紹的非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友可以參考下
    2016-06-06
  • PHP大文件分割分片上傳實(shí)現(xiàn)代碼

    PHP大文件分割分片上傳實(shí)現(xiàn)代碼

    這篇文章主要介紹了PHP大文件分割分片上傳實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評(píng)論