微信小程序調用支付接口支付


我前段時間做微信支付,遇到了很多坑,網上也沒有講解的特別明白的,通過借鑒各路人才的經驗,最后也完成了,網上有很多講解,我在這只講一些注意點和解決的方法。我就講講我從完全懵到完成的過程吧。

在微信提供的接口文檔中提供了一個微信支付接口,應該是直接調用這個接口就可以發起微信支付

文檔路徑:https://developers.weixin.qq.com/miniprogram/dev/api/api-pay.html#wxrequestpaymentobject

 

 

 

 

在這些參數中最難理解和獲取的就是這兩個了,仔細研究后發現,package這個參數的獲取要調用微信提供的另一個接口,統一下單接口。原來在微信中支付需要先進行一下預下單。這里的時間戳使用的是秒值,不是毫秒值

文檔路徑:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1

 

 

 這個接口就需要后台通過http請求來調了

 

 

而在這些參數中,有兩個參數很眼熟,在第一步發起微信請求時也有這兩個參數,后發現這里的隨機字符串就是調起支付時用到的隨機字符串,而且是必須一致,那么簽名呢,要是也認為一樣就完全調溝里了,這里的簽名我稱為一次簽名,因為支付的時候要進行第二次簽名。簽名生成算法有講解,多讀幾遍就明白了,我建議讀個幾十遍。

把這些必填的參數都准備好

很重要的是你要首先有個店鋪,就有商戶號了

訂單號必須唯一哦,通知地址就是當支付成功后微信會回調這個地址,在這里你可以做一些事,比如修改訂單狀態什么的。

然后就是簽名生成,這個很重要:把需要的參數都放到一個map中,然后對這些參數進行排序,然后把商品key拼接到后面進行MD5加密就生成簽名了,我還是建議仔細看看簽名生成算法,不要想太復雜,就是排序,拼接,加密三步完成。

最后就是准備參數傳輸了,這里的參數傳輸是以xml的方式傳輸,下面就是傳輸的數據,其實就是一個大的字符串,

你可以這樣

 

String s =“<xml>+"<appid>wxdxxxxxxxxx</appid>"

    +"<mch_id>10000100</mch_id>"

    +"<nonce_str>24jtlk2j3ltjl2kjlkt3j</nonce_str>"

    +"<sign>432l4j5j4325l23k4j5lj34</sign>"

    +"</xml>"

 

 

我就意思一下了,大家懂就行,其實就是一個字符串,完全可以通過遍歷參數map來自己拼接的。

然后就是把這個大字符串傳過去,以上沒問題的話就會返回一個字符串的xml,格式類型咱們拼接的參數。

 

 

 

從中取出我們需要的東西,最重要的應該就是這個,預下單id,這就是之前咱們需要的package

使用時是這樣的:package='prepay_id=201411109120471241k1241240124bk1k24'

然后就是二次簽名了,簽名生成順序和第一次是一樣的,主要要確定需要哪些參數。

 

 

 然后把這些參數返回給前台使用,取出來放進去就行了。

 

 到這里前端調用一下就發起支付了。

 

 

版權聲明:本文為CSDN博主「搬磚的螞蟻」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qishubiao/article/details/80804052


免責聲明!

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



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