手把手教你小程序對接微信支付

這是我本身研究了兩天的微信支付整理得的開發筆記,而後在這裏分享給你們,讓你們快速上手微信支付。php

按着個人步驟一步一步操做,你就能夠成功的get到這個微信支付技能包。

補上本身最想的文章:[5分鐘解決微信支付][1]
https://segmentfault.com/a/1190000014444847
這篇文章被不少人諮詢,感謝大家的支持,因此新寫了一篇填坑,但願對你們有幫助。

=======================
更多編程技巧,可關注琉憶編程庫:shuaiqi100.com。html

原文連接:手把手教你實現小程序微信支付

因爲本身自己就是PHP開發的,因此只涉及到PHP微信支付的開發。我將會一步一步的記錄如何實現微信支付的。編程

第一步:先上微信支付開發文檔境內普通商戶裏面下載SDK與DEMO。

下載網址:https://pay.weixin.qq.com/wik...
圖片描述小程序

在這裏能夠下載本身對應的編程代碼來使用對應的SDK和DEMO進行改。我主要用的是PHP,因此下載的是PHP。segmentfault

第二步:將下載的支付SDK與DEMO進行解壓,而後打開這個解壓後的文件夾。

圖片描述

第三步,從商家中心下載證書到本地放到cert文件夾裏面。

商家中心路徑:(注意須要下載安全插件,且只能在IE模式登陸!)
https://pay.weixin.qq.com/ind...微信小程序

具體路徑爲:登陸進去到商家中心後,登陸微信支付商戶平臺,點擊【帳戶中心】->【帳戶設置】->【API安全】->【下載證書】中
圖片描述api

下載證書完成後,記得順便設置密鑰!!這個密鑰等下須要在微信支付lib配置文件夾裏面配置支付。數組

密鑰要求:須要字母+數字一塊兒32位數!!爲的是認真和安全。安全

下載證書到本地後,取出這兩個證書放到cert文件裏面去,
這兩個證書分別叫作: apiclient_cert.pem 和 apiclient_key.pem服務器

第四步:配置支付信息

打開lib文件夾下的 WxPay.Config.php

圖片描述

在這裏就有說明須要用到的配置信息,只用配置這四項,其餘的都不用修改!!
首先是APPID,注意必定是要註冊的主體一致,其次用到支付的公衆號或者是小程序都必須是和APPID一致的開發者!!不的話,請求支付會出錯,提示:appid and openid not match!

APPID和MCHID能夠經過開戶郵件中獲取,關於KEY就是剛纔在第三步中要一塊兒設置的密鑰,直接複製粘貼進來就能夠了。

APPSECRET就是小程序裏面開發者的那個APPSECRET,直接去微信小程序裏面獲取粘貼過來就能夠了!具體看下面!!
圖片描述

按上面的配置好,保存後就能夠下一步了,修改支付接口。

第五步:修改獲取openid的接口

打開example文件夾,打開WxPay.JsApiPay.php
找到 private function __CreateOauthUrlForOpenid($code) 方法。
須要修改裏面的 $urlObj["code"] = $code; 修改成:$urlObj["js_code"] = $code;
圖片描述

注意:說說爲何這樣修改:【下面的內容只是爲了瞭解,不想深刻原理能夠跳過】
code 換取 session_key
這是一個 HTTPS 接口,開發者服務器使用登陸憑證 code 獲取 session_key 和 openid。其中 session_key 是對用戶數據進行加密簽名的密鑰。爲了自身應用安全,session_key 不該該在網絡上傳輸。
獲取openid的接口地址: https://api.weixin.qq.com/sns...

微信支付中,須要獲取微信用戶的openid,因此在小程序中,須要先經過wx.login獲取到用戶返回的code代碼,而後用code換取用戶的openid回來。在微信支付中,WxPay.JsApiPay.php裏面已經封裝了經過傳過來的code換取openid的方法:GetOpenid()。而在這裏請求獲取openid的路徑知道帶參名是js_code不是code,因此須要修改配置文件裏面的code爲js_code!

保存好後,就能夠第六步了,修改支付接口!!

第六步:修改支付接口

打開example文件夾下的jsapi.php文件。

首先:刪除頭部的這些代碼,也能夠註釋!【由於用不到,都是測試數據】

//初始化日誌
$logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');
$log = Log::Init($logHandler, 15);

//打印輸出數組信息
function printf_info($data)
{

foreach($data as $key=>$value){
    echo "<font color='#00ff55;'>$key</font> : $value <br/>";
}

}

其次:刪除底部的HTML代碼,所有!所有!所有!!由於都是多餘的,不要由於這些HTML代碼請求出錯。

<html>
<head>
...............這裏省略..................
</body>
</html>

最後,修改核心的部分代碼!!將要進行詳細講解。這時候貼上官方文檔,能夠看着文檔修改這裏的支付信息,由於很重要。

參考文檔:
https://pay.weixin.qq.com/wik...

第七步 請求微信支付接口jsapi.php文件,而後發起支付

前面的修改只是爲了這一步實現微信支付,彈出咱們想要的支付密碼輸入框!!
記住,在微信小程序中是須要使用wx.request方法請求demo裏面的jsapi.php文件,而後請求這個方法成功後會返回一串參數,而後根據打印的參數對應的填入這些參數內賦值便可。

wx.requestPayment({
'timeStamp': '',
'nonceStr': '',
'package': '',
'signType': 'MD5',
'paySign': '',
'success':function(res){
},
'fail':function(res){
}
})
【具體能夠看開發文檔的參數配置】
網址:https://mp.weixin.qq.com/debu...

第八步 微信支付成功修改訂單操做

這一步過去我曾卡了好久,可是它很重要!!

登錄微信支付第三方平臺
網址: https://pay.weixin.qq.com/ind...

而後按設置好的微信請求支付連接下寫一個notify的控制器方法用於回調執行,當微信支付成功後就會去執行這個目錄下的notify方法,而後能夠寫修改訂單狀態。

注意事項:

1.回調方法能夠看demo裏面的Notify.php文件進行修改爲控制器方法用於回調!!

2.回調的方法必定要是在微信支付平臺設置的支付目錄下!!

3.支付的回調路徑是不可以帶參數的!!不能帶參數!!不能帶參數!!

若是回調沒有成功,請看上面的注意事項進行檢查,由於我在這裏跌倒了N次,N次,N次!!!

圖片描述

對了,另外提醒下是在jsapi.php文件裏面設置的回調路徑,也就是demo裏面的:wxpay/example/jsapi.php ,【同目錄下的Notify.php文件是官方給的回調方法,能夠看這個方法進行改寫回調控制器!!】以下代碼:

$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
//修改成你的支付目錄下的路徑+回調函數名,例如:http://www.abc.com/example/no...

至此最開頭的demo配置到發起支付到支付成功對訂單的操做所有方法都在這裏,若是你在哪一步不瞭解能夠給我留言,另外若是你有什麼想法建議也能夠給我留言。

若是你以爲這篇文章對你有用能夠幫我分享出去給更多須要的人。

最後謝謝你們的支持。

我的微信公衆號:琉憶編程庫

相關文章
相關標籤/搜索