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