重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
我前段時(shí)間做微信支付,遇到了很多坑,網(wǎng)上也沒有講解的特別明白的,通過借鑒各路人才的經(jīng)驗(yàn),最后也完成了,網(wǎng)上有很多講解,我在這只講一些注意點(diǎn)和解決的方法。我就講講我從完全懵到完成的過程吧。
在微信提供的接口文檔中提供了一個(gè)微信支付接口,應(yīng)該是直接調(diào)用這個(gè)接口就可以發(fā)起微信支付
文檔路徑:https://developers.weixin.qq.com/miniprogram/dev/api/api-pay.html#wxrequestpaymentobject
但是,當(dāng)開始信心滿滿的去看所需參數(shù)時(shí),懵逼了,這些參數(shù)是什么
在這些參數(shù)中最難理解和獲取的就是這兩個(gè)了,仔細(xì)研究后發(fā)現(xiàn),package這個(gè)參數(shù)的獲取要調(diào)用微信提供的另一個(gè)接口,統(tǒng)一下單接口。原來在微信中支付需要先進(jìn)行一下預(yù)下單。這里的時(shí)間戳使用的是秒值,不是毫秒值
文檔路徑:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
這個(gè)接口就需要后臺(tái)通過http請(qǐng)求來調(diào)了
而在這些參數(shù)中,有兩個(gè)參數(shù)很眼熟,在第一步發(fā)起微信請(qǐng)求時(shí)也有這兩個(gè)參數(shù),后發(fā)現(xiàn)這里的隨機(jī)字符串就是調(diào)起支付時(shí)用到的隨機(jī)字符串,而且是必須一致,那么簽名呢,要是也認(rèn)為一樣就完全調(diào)溝里了,這里的簽名我稱為一次簽名,因?yàn)橹Ц兜臅r(shí)候要進(jìn)行第二次簽名。簽名生成算法有講解,多讀幾遍就明白了,我建議讀個(gè)幾十遍。
把這些必填的參數(shù)都準(zhǔn)備好
很重要的是你要首先有個(gè)店鋪,就有商戶號(hào)了
訂單號(hào)必須唯一哦,通知地址就是當(dāng)支付成功后微信會(huì)回調(diào)這個(gè)地址,在這里你可以做一些事,比如修改訂單狀態(tài)什么的。
然后就是簽名生成,這個(gè)很重要:把需要的參數(shù)都放到一個(gè)map中,然后對(duì)這些參數(shù)進(jìn)行排序,然后把商品key拼接到后面進(jìn)行MD5加密就生成簽名了,我還是建議仔細(xì)看看簽名生成算法,不要想太復(fù)雜,就是排序,拼接,加密三步完成。
最后就是準(zhǔn)備參數(shù)傳輸了,這里的參數(shù)傳輸是以xml的方式傳輸,下面就是傳輸?shù)臄?shù)據(jù),其實(shí)就是一個(gè)大的字符串,
你可以這樣
String s =“” +" "wxdxxxxxxxxx " +"10000100 " +"24jtlk2j3ltjl2kjlkt3j " +"432l4j5j4325l23k4j5lj34 " +"