為公司的PC網(wǎng)站應(yīng)用添加微信支付功能,后臺(tái)是C#開(kāi)發(fā),坑還真是不少,所以感覺(jué)有必要分享出來(lái)讓大家少走點(diǎn)彎路。第一個(gè)坑就是微信支付官方?jīng)]有提供C#的樣例下載,我是百度到網(wǎng)友發(fā)出來(lái)的樣例包。微信后臺(tái)一堆的申請(qǐng)認(rèn)證OK過(guò)了。
接下來(lái)的坑就是太過(guò)相信微信支付的人性化了,結(jié)果關(guān)鍵節(jié)點(diǎn)的提示讓人抓狂。
用微信支付的模式一(樣例里默認(rèn)的),一堆的參數(shù)填進(jìn)去后,運(yùn)行生成了二維碼,但是掃碼后錯(cuò)誤提示”系統(tǒng)繁忙“,反復(fù)查找無(wú)果,按網(wǎng)友文章里的說(shuō)法果斷放棄模式一,啟用模式二。
微信支付的模式二運(yùn)行生成二維碼,掃碼提示”獲取用戶訂單信息超時(shí)或商戶返回httpcode非200“,經(jīng)反復(fù)查找文章后在微信支付后臺(tái)添加Native支付回調(diào)鏈接解決。
第三個(gè)問(wèn)題是調(diào)用統(tǒng)一下單接口后返回值的問(wèn)題,解析code_url報(bào)錯(cuò),代碼如下(第二行解析報(bào)錯(cuò)了,因?yàn)榉祷刂祌esult?里沒(méi)有code_url):
WxPayData result = WxPayApi.UnifiedOrder(data);//調(diào)用統(tǒng)一下單接口
string url = result.GetValue("code_url").ToString();//獲得統(tǒng)一下單接口返回的二維碼鏈接
加斷點(diǎn)看了一下result ,報(bào)”return_msg, 簽名錯(cuò)誤,請(qǐng)檢查后再試“,原來(lái)我這得用SHA256編碼,有網(wǎng)友說(shuō)他的得用MD5編碼,可能是跟生成證書時(shí)的密鑰設(shè)置有關(guān),解決了,過(guò)。
?
接下來(lái)還是result報(bào)錯(cuò)”err_code_des, 參數(shù)notify_url無(wú)效“,反復(fù)檢查了微信支付后臺(tái)添加的地址沒(méi)錯(cuò)呀,查了無(wú)數(shù)文章,后來(lái)發(fā)現(xiàn)是代碼里的參數(shù)項(xiàng)里也要添加同樣的回調(diào)地址才行(唉,低級(jí)錯(cuò)誤),就在樣例的GetNotifyUrl()里的return里添加即可。
到此,模式二的二維碼生成了,歡快的支付了0.01元完成初步測(cè)試。接下來(lái)還要做系統(tǒng)接入回調(diào),希望順利。
本文摘自 :https://www.cnblogs.com/