微信支付jsapi(公衆號支付)接口調用

差很少兩個月前的一個項目要使用微信線下支付本人並無接觸過這方面的知識,做爲剛出道的小白,一個微信支付差點把我折磨的死去活來,查看了許多文章才把這個功能實現。現在跑到成都從新找工做,學習的時候也正好寫點總結,把支付這一塊的知識整理下。php

好了,接下來看微信支付jsapi接口是怎麼調用的算法

步驟一:獲取微信支付四大參數  api

首先要想支持微信支付,必須擁有兩個帳號安全

微信公衆平臺:帳戶微信

 公衆APPID,APPSECEPT ,微信商戶平臺商戶ID, API密鑰app

步驟二:平臺配置微信公衆平臺

1.配置支付目錄:商戶平臺:工具

配置此目錄是代碼中「微信支付」所在頁面的地址-須要ICP備案。學習

2.配置受權域名:微信公衆平臺:微信支付

支付過程須要獲取用戶openid,必須通過網頁受權配置才能夠,要否則獲取不到openid。

官方解釋:用戶在網頁受權頁贊成受權給公衆號後,微信會將受權數據傳給一個回調頁面,回調頁面需在此域名下,以確保安全可靠。回調頁面域名不支持IP地址。

第一步:用戶贊成受權,獲取code

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

參數:appid:公衆號的惟一標識

   redirect_uri:重定向的url,就是受權後要跳轉的頁面

   scope:應用受權做用域

   snsapi_base:不彈出受權頁面,直接跳轉,只能獲取用戶openid

   snsapi_userinfo:彈出受權頁面,可經過openid拿到暱稱、性別、所在地

    state:重定向後帶的參數

    用戶贊成後會產生一個code,只有5分鐘時間的有效期。

第二步:經過code換取網頁受權access_token( 微信支付只須要openid,獲取到access_token以後只須要裏面openid參數)

獲取code後,請求如下連接獲取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

{ "access_token":"ACCESS_TOKEN", 

"expires_in":7200, 

"refresh_token":"REFRESH_TOKEN",

 "openid":"OPENID",//微信j支付jsapi接口須要用到的參數

 "scope":"SCOPE" }

步驟三 調用接口統一下單

微信統一下單API是微信支付的一個「統一」處理入口,官方給出的地址是


須要的參數(此處使用服務商接口參數 因此會有子商戶的id 普通商戶不須要)https://api.mch.weixin.qq.com/pay/unifiedorder https://api2.mch.weixin.qq.com/pay/unifiedorder(備用域名)

 

 

 

 

 

按照 簽名算法 計算簽名

 

把全部要傳遞的參數鍵值對去掉值是空的,剩下的參數名ASCII碼從小到大排序後,使用URL鍵值對格式(key1=value1&key2=value2...)拼接成StringA

把StringA後面多加一組鍵值&key=商戶平臺密鑰得到StringB

把StringB按要求作"MD5"或"HMAC-SHA256"計算,並將結果字符轉爲大寫

微信甚至還提供了一個在線校驗工具幫助開發者檢查生成的簽名是否正確,跳到工具。使用方法是選擇好簽名類型,校驗方式選擇XML(不是必須只是爲了省事兒),XML源串輸入不帶sign信息

發送前先用WXPayUtil工具類中的方法mapToXML(Map<String,String> date)方法 將參數的map轉爲XML格式發送後會返回String的返回值

獲得以上參數就算是微信支付jsapi接口調用成功  接下來只須要完成支付業務流程

 

 

 

 

 

 

 

 

相關文章
相關標籤/搜索