搞了好幾天咱枉,終于搞定了,分享出來一樣希望有緣人少走彎路球昨,少踩坑尔店!
之前開發(fā)過微信支付成功的小伙伴適合看本文檔,沒開發(fā)過得可能看不懂主慰,那就抱歉了嚣州!我不計(jì)劃在這里分享微信支付的代碼!
一共螺、首先申請退款和企業(yè)付款都是需要證書的该肴。從商戶后臺拿到,具體操作百度里很多不多說了藐不。
二匀哄、我用的python 3.6中的requests模塊秦效,在用post方法時(shí)我用下面的方法指定證書和密鑰,別急看完再說涎嚼!
apiclient_cert = "{}/cert/apiclient_cert.pem".format(BASE_DIR)
? ? ? ? apiclient_key = "{}/cert/apiclient_key.pem".format(BASE_DIR)
? ? ? ? res = requests.post(pre_url, cert=(apiclient_cert, apiclient_key), data=xml.encode('utf-8'), headers={'Content-Type': 'text/xml'})
其中data是接口中要求傳入的參數(shù)阱州,需要轉(zhuǎn)xml后提交,特別說下out_trade_no法梯,是支付成功后微信返回的苔货,你可以對比商戶后臺交易單確認(rèn)這點(diǎn),所以在支付時(shí)要緩存下來鹊汛,最好寫在訂單里面去蒲赂!data里簽名的計(jì)算就不說了如果你做過支付,方法是完全一樣的刁憋。
看到這里可能你會說你試過了我的方法滥嘴,提示證書驗(yàn)證失敗,那就對了至耻,下面才是重點(diǎn)若皱!在代碼中打印一下這個(gè)路徑,
requests.certs.where()
路徑下有個(gè)cacerts.pem尘颓。去打開你的apiclient_cert.pem走触,復(fù)制begin到end部分文本,記得begin和end也要疤苹,具體可參考現(xiàn)在cacerts.pem里面的樣式互广,把復(fù)制好的代碼貼在開頭部分,然后再去試試卧土,你應(yīng)該已經(jīng)成功了惫皱!
我試過后發(fā)現(xiàn),cert參數(shù)不能不傳哦尤莺!