獲取RSA加密公鑰API
RSA算法使用說明(非對稱加密算法,算法采用RSA/ECB/OAEPPadding模式)
2、 確定public.pem文件的存放路徑,同時修改代碼中文件的輸入路徑,加載RSA公鑰
3、 用標(biāo)準(zhǔn)的RSA加密庫對敏感信息進(jìn)行加密,選擇RSA_PKCS1_OAEP_PADDING填充模式
(eg:Java的填充方式要選 " RSA/ECB/OAEPWITHSHA-1ANDMGF1PADDING")
4、 得到進(jìn)行rsa加密并轉(zhuǎn)base64之后的密文
5、 將密文傳給微信側(cè)相應(yīng)字段,如付款接口(enc_bank_no/enc_true_name)
接口默認(rèn)輸出PKCS#1格式的公鑰,商戶需根據(jù)自己開發(fā)的語言選擇公鑰格式
RSA公鑰格式PKCS#1,PKCS#8互轉(zhuǎn)說明
- PKCS#1 轉(zhuǎn) PKCS#8:
openssl rsa -RSAPublicKey_in -in <filename> -pubout
- PKCS#8 轉(zhuǎn) PKCS#1:
openssl rsa -pubin -in <filename> -RSAPublicKey_out
- PKCS#1 格式密鑰:
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEArT82k67xybiJS9AD8nNAeuDYdrtCRaxkS6cgs8L9h83eqlDTlrdw
zBVSv5V4imTq/URbXn4K0V/KJ1TwDrqOI8hamGB0fvU13WW1NcJuv41RnJVua0QA
lS3tS1JzOZpMS9BEGeFvyFF/epbi/m9+2kUWG94FccArNnBtBqqvFncXgQsm98JB
3a62NbS1ePP/hMI7Kkz+JNMyYsWkrOUFDCXAbSZkWBJekY4nGZtK1erqGRve8Jbx
TWirAm/s08rUrjOuZFA21/EI2nea3DidJMTVnXVPY2qcAjF+595shwUKyTjKB8v1
REPB3hPF1Z75O6LwuLfyPiCrCTmVoyfqjwIDAQAB
-----END RSA PUBLIC KEY-----
- PKCS#8 格式密鑰:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArT82k67xybiJS9AD8nNA
euDYdrtCRaxkS6cgs8L9h83eqlDTlrdwzBVSv5V4imTq/URbXn4K0V/KJ1TwDrqO
I8hamGB0fvU13WW1NcJuv41RnJVua0QAlS3tS1JzOZpMS9BEGeFvyFF/epbi/m9+
lkUWG94FccArNnBtBqqvFncXgQsm98JB3a42NbS1ePP/hMI7Kkz+JNMyYsWkrOUF
DCXAbSZkWBJekY4nGZtK1erqGRve8JbxTWirAm/s08rUrjOuZFA21/EI2nea3Did
JMTVnXVPY2qcAjF+595shwUKyTjKB8v1REPB3hPF1Z75O6LwuLfyPiCrCTmVoyfq
jwIDAQAB
-----END PUBLIC KEY-----
接口說明
請求Url | https://fraud.mch.weixin.qq.com/risk/getpublickey |
---|---|
是否需要證書 | 請求需要雙向證書。 詳見證書使用 |
請求方式 | POST |
請求參數(shù)
字段名 | 字段 | 必填 | 示例值 | 類型 | 說明 |
---|---|---|---|---|---|
商戶號 | mch_id | 是 | 1900000109 | string(32) | 微信支付分配的商戶號 |
隨機(jī)字符串 | nonce_str | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67Vs | string(32) | 隨機(jī)字符串,長度小于32位 |
簽名 | sign | 是 | C380BEC2BFD727A4B6845133519F3AD6 | string(64) | 通過簽名算法計算得出的簽名值,詳見簽名生成算法 |
簽名類型 | sign_type | 是 | MD5 | string(64) | 簽名類型,支持HMAC-SHA256和MD5。 |
數(shù)據(jù)示例:
<xml>
<mch_id>123456</mch_id>
<nonce_str>5087e0xessefellkg</nonce_str>
<sign>xxxxxx</sign>
<sign_type>MD5</sign_type>
</xml>
返回參數(shù)
字段名 | 變量名 | 必填 | 類型 | 說明 |
---|---|---|---|---|
返回狀態(tài)碼 | return_code | 是 | String(16) | SUCCESS/FAIL 此字段是通信標(biāo)識,非交易標(biāo)識,交易是否成功需要查看result_code來判斷 |
返回信息 | return_msg | 是 | String(128) | 返回信息,如非空,為錯誤原因 簽名失敗 參數(shù)格式校驗錯誤 |
以下字段在return_code為SUCCESS的時候有返回 | ||||
業(yè)務(wù)結(jié)果 | result_code | 是 | String(16) | SUCCESS/FAIL |
錯誤代碼 | err_code | 否 | String(32) | 錯誤碼信息 |
錯誤代碼描述 | err_code_des | 否 | String(128) | 結(jié)果信息描述 |
以下字段在return_code 和result_code都為SUCCESS的時候有返回 | ||||
商戶號 | mch_id | 是 | string(32) | 商戶號 |
密鑰 | pub_key | 是 | String(2048) | RSA 公鑰 |
成功示例:
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<result_code><![CDATA[SUCCESS]]></result_code>
<mch_id><![CDATA[123456]]></mch_id>
<pub_key><![CDATA[-----BEGIN RSA PUBLIC KEY-----
BASE64 ENCODED DATA
-----END RSA PUBLIC KEY-----
]]></pub_key>
</xml>
錯誤碼
錯誤代碼 | 描述 | 解決方案 |
---|---|---|
SIGNERROR | 簽名錯誤 | 簽名前沒有按照要求進(jìn)行排序。沒有使用商戶平臺設(shè)置的密鑰進(jìn)行簽名,參數(shù)有空格或者進(jìn)行了encode后進(jìn)行簽名 |
SYSTEMERROR | 系統(tǒng)繁忙,請稍后重試 | 使用原請求參數(shù)重試 |