注意:服務(wù)商模式下,均是使用服務(wù)商的以下信息
1. 證書
1.1商戶api證書(v2和v3接口都需要使用)
1.1.1獲取方式:
https://kf.qq.com/faq/161222NneAJf161222U7fARv.html (商戶api證書
),里面介紹了如何獲取商戶證書的詳細(xì)步驟
1.1.2作用:
v3接口:
使用商戶api證書私鑰用于生成簽名(簽名的官方文檔: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml ) ,一共三個(gè)證書文件,一個(gè)說(shuō)明文件(建議閱讀一下),商戶api證書私鑰是apiclient_key.pem這個(gè)文件(代碼加載,參考官方文檔: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay7_1.shtml),剩下的兩個(gè)證書文件目前我個(gè)人是沒(méi)有發(fā)現(xiàn)在v3接口需要使用,咨詢技術(shù)支持也是這樣回復(fù)的。
v2接口:
v2接口需要使用證書的接口在文檔會(huì)有特別提示:
一般開(kāi)發(fā)語(yǔ)言使用的p12證書,詳細(xì)信息參考鏈接:https://pay.weixin.qq.com/wiki/doc/api/jsapi_sl.php?chapter=4_3
注意:
1.php使用方法參考文檔
2. .NET環(huán)境開(kāi)發(fā),請(qǐng)確認(rèn)Framework版本大于2.0,必須在操作系統(tǒng)上雙擊安裝證書apiclient_cert.p12后才能被正常調(diào)用。
3.apiclient_cert.p12是商戶證書文件,除PHP外的開(kāi)發(fā)均使用此證書文件。官方sdk包含了示例代碼,這里展示的是java語(yǔ)言的
1.1.3如何查看 證書使用是否正確(v2和v3接口通用檢查方法):
到證書解析的網(wǎng)站解析( https://myssl.com/cert_decode.html ) apiclient_cert.pem這個(gè)文件,查看它的證書序列號(hào),對(duì)比商戶平臺(tái)的證書序列號(hào)。(下載證書的時(shí)候這三個(gè)文件一般放在一起,根據(jù)apiclient_cert.pem文件判斷使用的是否是正確的
1.1.4商戶api證書序列號(hào)查看方式及作用(v3接口)
查看:管理員帳號(hào)登錄微信商戶管理后臺(tái),在API安全里面點(diǎn)擊查看證書可以獲取。
作用:構(gòu)建簽名,用于聲明所使用的證書
1.2微信支付平臺(tái)證書(v3接口使用)
1.2.1獲取方式
1:接口獲?。ü俜轿臋n: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay5_1.shtml ,代碼(java): https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient
2:官方工具:( https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtml )
3:postman(https://github.com/wechatpay-apiv3/wechatpay-postman-script):配置好可以直接下載,然后解密(解密參考:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_2.shtml
即可使用(推薦在測(cè)試的時(shí)候使用,順便檢查了簽名的參數(shù)是否正確)
1.2.2作用:
1、用戶回調(diào)信息的驗(yàn)簽(驗(yàn)簽文檔: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_1.shtml ),驗(yàn)簽的方法很多,這里就不提供了,【重要】:
這個(gè)順序不能改變,順序改變會(huì)出現(xiàn)驗(yàn)簽失敗,接口返回的來(lái)的順序不要修改,可能某些方法會(huì)修改順序(親測(cè)加咨詢)。
2、敏感信息加解密([https://pay.weixin.qq.com/wiki/doc/apiv3_partner/wechatpay/wechatpay4_3.shtml])
1.2.3檢查微信支付平臺(tái)證書使用是否正確:
1:檢查回調(diào)信息返回的微信支付平臺(tái)證書序列號(hào)和商戶現(xiàn)有的微信支付平臺(tái)證書序列號(hào)是否一致,如果不一致,請(qǐng)重新下載
2:如果重新下載的微信支付平臺(tái)證書序列號(hào)跟當(dāng)前回調(diào)的微信支付平臺(tái)證書序列號(hào)不一致,則應(yīng)該是下載的微信支付平臺(tái)證書的商戶號(hào)不是當(dāng)前回調(diào)訂單的商戶
1.2.4微信支付平臺(tái)證書序列號(hào)獲取方式及作用
獲?。焊⑿胖Ц镀脚_(tái)證書獲取方式一致(對(duì)應(yīng)字段:serial_no)
作用:1.回調(diào)參數(shù)返回給商戶,用于驗(yàn)證回到的安全性(也可以用來(lái)區(qū)分是哪一個(gè)商戶的回調(diào),因?yàn)槊總€(gè)商戶的微信支付平臺(tái)證書序列號(hào)不一致)
2.用戶敏感信息加密時(shí),當(dāng)作加密標(biāo)識(shí)
注意:回調(diào)返回的和請(qǐng)求接口時(shí)返回的證書序列號(hào)是微信支付平臺(tái)證書序列號(hào),不是商戶API證書序列號(hào),二者不一樣
2. apiv3密鑰(v3接口使用)
2.1如何設(shè)置:
https://kf.qq.com/faq/180830E36vyQ180830AZFZvu.html (文檔說(shuō)明了如何設(shè)置,這里就不提供商戶平臺(tái)的截圖了)
2.2作用:
v3接口下,商戶對(duì)支付回調(diào)的解密(咨詢技術(shù)支持說(shuō)邏輯是發(fā)給我們的回調(diào)通知是使用我們商戶平臺(tái)設(shè)置的apiv3密鑰進(jìn)行加密的,所以也是使用它來(lái)解密,解密失敗有三種可能:1.apiv3密鑰錯(cuò)誤,跟當(dāng)時(shí)設(shè)置的不一樣2.使用的apiv3的密鑰不是當(dāng)前訂單對(duì)應(yīng)商戶號(hào)下設(shè)置的apiv3密鑰)(官方解密: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_2.shtml ,親測(cè)報(bào)錯(cuò)AEADBadTagException: Tag mismatch! 檢查就是apiv3密鑰錯(cuò)誤導(dǎo)致
)3.解密的參數(shù)不完整,請(qǐng)檢查回調(diào)參數(shù)的完整性
3.apiv2密鑰(v2接口使用)
3.1如何設(shè)置:
https://kf.qq.com/faq/180830UVRZR7180830Ij6ZZz.html (文檔說(shuō)明了如何設(shè)置,這里就不提供商戶平臺(tái)的截圖了)
3.2作用:
商戶調(diào)用v2接口時(shí),使用api密鑰進(jìn)行簽名,或者對(duì)v2接口返回的回調(diào)信息進(jìn)行驗(yàn)簽和解密(部分回調(diào)需要解密,比如退款回調(diào))