1. 程式人生 > >微信公眾號支付開發流程

微信公眾號支付開發流程

主要場景為一碼付,使用者掃碼二維碼進入商戶自己的H5頁面,微信掃碼呼叫微信支付,支付寶掃碼就呼叫支付寶進行支付

微信開發文件 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1

有一篇寫的比較全的文件,請參考 http://www.cnblogs.com/yimiyan/p/5603657.html

伺服器在呼叫微信統一下單介面時,需要先獲取openid,這裡就比較坑了,需要先通過微信網頁授權機制,來獲取使用者基本資訊,這裡我們只要獲取到使用者openid就可以了

參考文件 http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

第一步:使用者同意授權,獲取code

在這裡我們採用的是靜默授權並自動跳轉到回撥頁面,以snsapi_base為scope發起的網頁授權

若提示“該連結無法訪問”,請檢查引數是否填寫錯誤,是否擁有scope引數對應的授權作用域許可權。

尤其注意:由於授權操作安全等級較高,所以在發起授權請求時,微信會對授權連結做正則強匹配校驗,如果連結的引數順序不對,授權頁面將無法正常訪問

參考連結(請在微信客戶端中開啟此連結體驗)
Scope為snsapi_base
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=
https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect 尤其注意:跳轉回調redirect_uri,應當使用https連結來確保授權code的安全性。

引數說明

引數 是否必須 說明
appid 公眾號的唯一標識
redirect_uri 授權後重定向的回撥連結地址,請使用urlencode對連結進行處理
response_type 返回型別,請填寫code
scope 應用授權作用域,snsapi_base (不彈出授權頁面,直接跳轉,只能獲取使用者openid),snsapi_userinfo (彈出授權頁面,可通過openid拿到暱稱、性別、所在地。並且,即使在未關注的情況下,只要使用者授權,也能獲取其資訊
state 重定向後會帶上state引數,開發者可以填寫a-zA-Z0-9的引數值,最多128位元組
#wechat_redirect 無論直接開啟還是做頁面302重定向時候,必須帶此引數

redirect_uri引數錯誤:

登入微信公眾平臺,開發-介面許可權-網頁賬號 網頁授權獲取使用者基本資訊,點選修改成你正確的域名就可以了

第二步:通過code換取網頁授權access_token和openid,到這我們的openid就拿到了

首先請注意,這裡通過code換取的是一個特殊的網頁授權access_token,與基礎支援中的access_token(該access_token用於呼叫其他介面)不同。公眾號可通過下述介面來獲取網頁授權access_token。如果網頁授權的作用域為snsapi_base,則本步驟中獲取到網頁授權access_token的同時,也獲取到了openid,snsapi_base式的網頁授權流程即到此為止。

尤其注意:由於公眾號的secret和獲取到的access_token安全級別都非常高,必須只儲存在伺服器,不允許傳給客戶端。後續重新整理access_token、通過access_token獲取使用者資訊等步驟,也必須從伺服器發起。

請求方法

引數說明

引數 是否必須 說明
appid 公眾號的唯一標識
secret 公眾號的appsecret
code 填寫第一步獲取的code引數
grant_type 填寫為authorization_code

返回說明

正確時返回的JSON資料包如下:

{
   "access_token":"ACCESS_TOKEN",
   "expires_in":7200,
   "refresh_token":"REFRESH_TOKEN",
   "openid":"OPENID",
   "scope":"SCOPE",
   "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
引數 描述
access_token 網頁授權介面呼叫憑證,注意:此access_token與基礎支援的access_token不同
expires_in access_token介面呼叫憑證超時時間,單位(秒)
refresh_token 使用者重新整理access_token
openid 使用者唯一標識,請注意,在未關注公眾號時,使用者訪問公眾號的網頁,也會產生一個使用者和公眾號唯一的OpenID
scope 使用者授權的作用域,使用逗號(,)分隔
unionid 只有在使用者將公眾號繫結到微信開放平臺帳號後,才會出現該欄位。詳見:獲取使用者個人資訊(UnionID機制)


錯誤時微信會返回JSON資料包如下(示例為Code無效錯誤):

{"errcode":40029,"errmsg":"invalid code"}

拿到openid,我們就可以呼叫統一下單介面生成預付訂單了

相關推薦

公眾支付開發流程

主要場景為一碼付,使用者掃碼二維碼進入商戶自己的H5頁面,微信掃碼呼叫微信支付,支付寶掃碼就呼叫支付寶進行支付 微信開發文件 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1 有一篇寫的比較全的文件,

公眾支付開發全過程(java版)

sdk 命令 所有 data 權限 {} servle res ast 文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關註我的微信公眾號:好好學java,獲取優質學習資源。 一、微信官方文檔微信支付開發流程(公眾號支付) 首先我們到微信支付的官方文檔的開發步驟部分查

公眾支付開發手記(node)

微信支付 前言 總結一下最近業務開發中對微信公眾號支付的開發過程,微信支付的開發前提是已經具備可上線微信公眾號開發的基礎上進行的,如果你的開發階段目前停留在起步,建議參考這篇文章開始。 好了,來聊一聊微信支付。不論是今天的分享,還是網上其他的分享,開頭總是在吐槽微信的文件。我也不例外,剛開始總是覺得文件

公眾支付開發 --Java

/** * 付款頁面 * @param request * @param response * @return * @throws Exception */ @RequestMapping("/callback") public

公眾支付整體流程記錄備忘

相比支付寶支付,微信公眾號支付的實現以及過程真的是比較複雜,而且坑多,都是血淚史。 檢視微信支付的開發配置,這裡就可以看到對應的支付授權目錄以及測試目錄,可以選擇使用線上作為支付測試,但是不推薦。使用測試授權目錄時,注意需要設定測試白名單,規定哪些人可以進行支付測試。   當然,我們有微信

thinkphp3.2整和公眾支付詳細流程 demo

公眾號支付是指在微信app中訪問的頁面通過js直接調起微信支付;首先第一個步驟登入微信公眾平臺然後1.設定域名(設定授權域名和支付域名)①設定網頁授權域名並且設定白名單(新增你自己伺服器公網ip)如下圖所示         ②設定支付域名,去微信商戶後臺,產品中心的 開發配置

公眾支付接入流程

背景: 在Web應用中接入微信支付,我以為只是檢視demo,根據demo和文件相結合然後呼叫介面就完事了,但是微信文件的複雜性和隱坑使我填坑填到懷疑人生,致敬在微信踩過的神坑,過年給他燒點紙記掛一下,NND。。。。。。。。。。。 注意事項: 坑一:幾個簽名的混淆

公眾支付開發Demo

微信官方文件 建議大家先看下流程圖: 大概的流程是先獲取openid –>統一下單 –> 返回預支付交易會話標識 prepay_id等引數 –>然後返回頁面h5呼叫微信支付的頁面 程式碼如下: package com.shi

公眾支付開發全過程----JAVA

1、生成統一下單介面,獲取prepay_id.需要的引數 ==名稱==從哪裡找到他們:微信官方給了個引數的詳細說明。https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 部分引數,仍然不知道哪裡找的小夥伴們請繼續向下看appid ==應用ID

公眾登陸開發流程

line 返回 ucc useragent for webkit builder request cgi 1.首先需要獲取到openId 用於返回給公眾號前臺,之後前臺傳回openId到後臺做業務處理 @Autowired private WXAutho

php公眾支付接口開發demo

targe param pre space secret 修改 pen host field 本支付接口使用Yii2框架,所以控制器的格式都是該框架的,不過放到其他框架都差不多,根據對應的規則修改一下控制器的方法名字就行了,親測有效,比較簡單,沒有封裝,想了解微信支付實現

thinkphp3.2公眾支付(jsapi支付)開發過程

第一次做微信支付(網頁版本的),折騰了兩天,記錄一下方便下次自己再次使用,也希望能幫和我一樣初次接觸的朋友踩一下坑。 前期準備 1.開通微信認證服務號,並且開通商戶平臺 2.下載微信支付dome,下載地址:https://pay.weixin.qq.com/wiki/doc/api/js

公眾支付/退款(java環境)開發介紹

開發之前翻閱了很多帖子,結合自己的實際開發情況,將微信支付/退款 流程以及code貼出,希望通過這一篇帖子就能解決你的問題,有不清楚的直接留言,我會及時回覆(ง •̀_•́)ง   一些說明:xxxUtils為工具類,Constant為常量類 為方便開發,所用和微信支付相關co

支付開發(二)----支付開發公眾支付JAVA版

一、開通微信公眾號 1.1公眾平臺帳號型別 微信公眾平臺分為服務號、企業號、訂閱號。 1、訂閱號:主要偏於為使用者傳達資訊(類似報紙雜誌),認證前後都是每天只可以群發一條訊息; 2、服務號:主要

公眾支付報文示例

cda 響應 xca mes amp 鏈接 返回值 col http 請求報文: 1 <xml> 2 <body><![CDATA[狄克酸奶店]]></body> 3 <callback_url&

公眾退款開發

col 代碼 use equal user 工具類 oms sdk 轉換 博主是小菜鳥,這篇文章僅是自己開發的隨筆記錄,不足博友可以指出來,一起進步 1、【微信支付】公眾號支付開發者文檔鏈接地址 https://pay.weixin.qq.com/wiki/doc/api/

個體戶沒有組織機構代碼證如何開通公眾支付

jpg alt 註意 方法 .com str 工作人員 個體工商戶 log 個體工商戶開通微信支付最新流程: 一、準備資料1.營業執照:有效期內的個體戶執照;2.身份證:經營者個人身份證照片;3.收款銀行賬戶:提現用的銀行賬號;4.手機號碼:客服人員的聯系手機號;5.郵箱

公眾支付--錯誤記錄

二次 數組 格式轉換 println equals sig col package reat 微信公眾號支付調用統一下單接口時,微信返回的數據一定要二次組裝再給前臺,否則會有問題的,正確示範如下: /** * 獲取weixin支付的返回信息 * @pa

ios系統web(公眾開發遇到的問題及解決方案

編輯 doc pretty ram body abs 系統 stc 大神 1.1. 頁面滾動不流暢(2017-09-25) 現象: 網頁豎向滾動或橫向滾動不流暢。 解決方案: 為滾動元素添加css樣式: -webkit-overflow-scrolling: tou

公眾平臺開發(二)息的分類.md

數據 msg 額外 環境 con pic 響應 我們 高質量 在上一篇博客中,我們只是簡單地與微信服務器建立了連接,接下來就是從微信服務器中接收信息了。在SecurityController中,我定義了兩個方法(get和post)。Get方法是我們用來與微信服務器建立連接,