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


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

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

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

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

微信公眾平台:賬戶

 公眾APPID,APPSECEPT ,微信商戶平台商戶ID, API密鑰

步驟二:平台配置

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是微信支付的一個“統一”處理入口,官方給出的地址是

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

 

 

 

 

 

按照 簽名算法 計算簽名

 

把所有要傳遞的參數鍵值對去掉值是空的,剩下的參數名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接口調用成功  接下來只需要完成支付業務流程

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM