天天看點

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

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

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

文檔路徑: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'

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

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

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

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