支付寶 使用支付寶公鑰驗(yàn)簽

2018-10-26 18:53 更新

閱讀角色:技術(shù)同學(xué)

支付寶開放平臺(tái)SDK封裝了簽名和驗(yàn)簽過程,只需配置賬號(hào)及密鑰參數(shù),強(qiáng)烈建議使用。

SDK下載地址

TIPS:文中代碼部分以JAVA語(yǔ)言演示,其他語(yǔ)言請(qǐng)參考各自SDK。

使用開放平臺(tái)SDK接入

同步返回和異步通知報(bào)文格式及驗(yàn)簽方法有所區(qū)別。

同步返回驗(yàn)簽

開放平臺(tái)SDK封裝了同步返回驗(yàn)簽實(shí)現(xiàn),只需在創(chuàng)建DefaultAlipayClient對(duì)象時(shí),設(shè)置請(qǐng)求網(wǎng)關(guān)(gateway),應(yīng)用id(app_id),應(yīng)用私鑰(private_key),編碼格式(charset),支付寶公鑰(alipay_public_key),簽名類型(sign_type)即可,同步返回報(bào)文時(shí)會(huì)自動(dòng)進(jìn)行驗(yàn)簽。

AlipayClient alipayClient = new DefaultAlipayClient(gateway,app_id,private_key,"json",charset,alipay_public_key,sign_type);

異步通知驗(yàn)簽

某些情況下(比如掃碼支付成功時(shí)),支付寶會(huì)給商戶發(fā)送異步通知。

如果某商戶設(shè)置的通知地址為https://api.xx.com/receive_notify.htm,對(duì)應(yīng)接收到通知的示例如下:

https://api.xx.com/receive_notify.htm?total_amount=2.00&buyer_id=2088102116773037&body=大樂透2.1&trade_no=2016071921001003030200089909&refund_fee=0.00¬ify_time=2016-07-19 14:10:49&subject=大樂透2.1&sign_type=RSA&charset=utf-8¬ify_type=trade_status_sync&out_trade_no=0719141034-6418&gmt_close=2016-07-19 14:10:46&gmt_payment=2016-07-19 14:10:47&trade_status=TRADE_SUCCESS&version=1.0&sign=kPbQIjX+xQc8F0/A6/AocELIjhhZnGbcBN6G4MM/HmfWL4ZiHM6fWl5NQhzXJusaklZ1LFuMo+lHQUELAYeugH8LYFvxnNajOvZhuxNFbN2LhF0l/KL8ANtj8oyPM4NN7Qft2kWJTDJUpQOzCzNnV9hDxh5AaT9FPqRS6ZKxnzM=&gmt_create=2016-07-19 14:10:44&app_id=2015102700040153&seller_id=2088102119685838¬ify_id=4a91b7a78a503640467525113fb7d8bg8e

開放平臺(tái)SDK提供了AlipaySignature.rsaCheckV1方法,可以使用該方法對(duì)通知報(bào)文驗(yàn)簽。

/**
@param params 參數(shù)列表(包括待驗(yàn)簽參數(shù)和簽名值sign) key-參數(shù)名稱 value-參數(shù)值
@param publicKey 驗(yàn)簽公鑰
@param charset 驗(yàn)簽字符集
**/
boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset)

TIPS:生活號(hào)異步通知需要使用AlipaySignature.rsaCheckV2方法,會(huì)保留sign_type參數(shù)參與驗(yàn)簽。

未使用開放平臺(tái)SDK

如果未使用開放平臺(tái)SDK,需要自行實(shí)現(xiàn)驗(yàn)簽過程,參考此處流程。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)