支付寶RSA2支付|小實驗 接通支付回調與支付通知接口 return & notify 完美踩坑,記錄一次心酸旅行時光碼農生活

小實驗目標

對接支付寶,實現支付、轉賬功能。上一次做實驗已經接通了支付、轉賬以及相關的查詢接口,但是沒有接上同步通知與異步通知。今天的小實現目標就是把這2個也接通!

小實驗約束

由於涉及到轉賬功能,所以採用了目前阿里螞蟻金服最高級別的RSA2進行驗籤。

小實驗參考資料

電腦網站支付 Demo

https://docs.open.alipay.com/270/106291/

那些年我們踩過的坑

神坑之一:SHA256WithRSA vs SHA1WithRSA

本次小實驗的坑在於支付寶提供的rsaCertCheckV2無法正常驗籤,RSA2對就的是SIGN_SHA256RSA_ALGORITHMS(SHA256WithRSA),而支付寶sdk對應的rsaCertCheckV2使用的卻是SIGN_ALGORITHMS(SHA1WithRSA),不明白這個坑是怎麼挖出來的。通過二次組裝skd提供的方法,實現了一個能正常驗籤的rsaCertCheckV2。

神坑之二:SignCheckContent到底是V1還是V2

按RSA2對應V2的直觀感受,拿AlipaySignature.getSignCheckContentV2獲取得到待簽名的內容,結果簽名通不過,使用AlipaySignature.getSignCheckContentV1反而通過了。

神坑之三:換java jar包

ps:有網友說要替換local_policy.jar、US_export_policy.jar,因爲我之前已經換過了,所以沒有踩到這個坑~

實驗成果

異常通過接口(Nofity),調通,拿到可供測試的參數:

{"gmt_create":"2019-09-16 17:57:47","charset":"UTF-8","gmt_payment":"2019-09-16 17:57:51","notify_time":"2019-09-16 17:57:51","subject":"醉麼商城訂單Zuime1568627848379","sign":"CcQEj2Jm6vk2ECjXxsD0Dq7kJVd9c6OZb8QtSnL39GvpXf+nLpMBlsFjnkBQOfVLLX8Nl3cZ6aND47hIujgl3FB2TWJwxOoPCNpv+VSlKQJvwEE9vdycQV+iQ8CZE4ibX6yXdd4VVF+TyjrwJExYbxSvMa6VAprzEcGUkpVYOpV1BUGWuKK/7k1F6eNj6RbEDG34rBet96G7rYGLQs2f3CPpxuBrOhfzVAgNEbpX9blX+LwjMEYPhXAJpqykHUxIs953sEnwIHTKqwqUxtVHqVpYyc2qeAhK3p4FL5tjhz1Aji0CN+NNdwcBKR4uCO9j/bRHCA+aAZwkAsaTlidgmg==","buyer_id":"2088002249904873","body":"醉麼商城訂單Zuime1568627848379","invoice_amount":"1.00","version":"1.0","notify_id":"2019091600222175751004870502101657","fund_bill_list":"[{\"amount\":\"1.00\",\"fundChannel\":\"ALIPAYACCOUNT\"}]","notify_type":"trade_status_sync","out_trade_no":"200001568627848379","total_amount":"1.00","trade_status":"TRADE_SUCCESS","trade_no":"2019091622001404870517313294","auth_app_id":"2016052201429140","receipt_amount":"1.00","point_amount":"0.00","buyer_pay_amount":"1.00","app_id":"2016052201429140","sign_type":"RSA2","seller_id":"2088021741763089"}out_trade_no: 200001568627848379trade_no: 2019091622001404870517313294trade_status: TRADE_SUCCESS

同步通知(return),調通,驗籤通過,拿到 trade_no

https://i.zuime.com/order/alipay/return?charset=UTF-8&out_trade_no=200001568627848379&method=alipay.trade.page.pay.return&total_amount=1.00&sign=EUXE9Hj%2FetIMQQ5sZrxEzzM6YiDbz91a9lE7v4zjxG4iMT8o6%2Fh6UiHiHc9fA4wiIoaQ8zswJbnpDeda%2BxdK6Q97ZUBBIr5kKF%2BYd4X2%2FgWhvDSD2flwic2%2Ff0JTm0Louy%2B1H6TZ80zaV9cYi68YiQunrDgVF1EOHvE0v%2B%2F42Gs6bvA7p7V%2FN8YnjEnR0smzI2hRJoY09DDC5Yk0%2BNmLyPQgEvar1L7rR6RAlPf4f8mDHH1gU%2B3D8WCtuERT%2FscrWER06V4rteSYj5NQaQ%2F6UyZ%2Fc%2FpBwgcxB6ojVmQKi2LSqEEEt%2BYIH7SpI5QhtiK4ycl2PVK%2FpghR%2FzHjh3cGWQ%3D%3D&trade_no=2019091622001404870517313294&auth_app_id=2016052201429140&version=1.0&app_id=2016052201429140&sign_type=RSA2&seller_id=2088021741763089&timestamp=2019-09-16+17%3A58%3A02
簽名通過,tradeNo 200001568627848379

完美調通支付寶RSA2接口的Demo源代碼可關注公衆號【Yuema約嗎】,回覆“alipay”獲取。

核心代碼片段

/**   * 修復支付寶SDK的RSA2驗籤Bug   * @param params   * @return   * @throws Exception   */  public boolean rsaCertCheckV2(Map<String, String> params) throws Exception{    //獲取        String sign = params.get("sign");        String content = AlipaySignature.getSignCheckContentV1(params);    return AlipaySignature.rsaCertCheck(content,sign, alipayCertPath, AlipayConstants.CHARSET_UTF8,AlipayConstants.SIGN_TYPE_RSA2);  }

今天實驗覆蓋的是return與notify,結合上一次分享,已經覆蓋了接支付寶所需的接口。想了解支付、轉賬相關接口實驗數據與踩坑經驗分享,可查看上一篇分享。

支付寶RSA2支付&轉帳接口集成續集|繼續拿jblog當實驗田練習支付寶RSA2集成 & 網銀直連 直連網銀 轉賬到銀行卡下線了

PS: 我不知道使用沙盒進行測試的小夥伴是怎麼配置的,卡死在支付寶證書這塊,沙盒管理界面沒有下載的入口,導致無法進行RSA2的沙盒實驗,現在使用的是正式帳號^_^​

編輯“支付寶RSA2支付|小實驗 接通支付回調與支付通知接口 return & notify 完美踩坑,記錄一次心酸旅行時光碼農生活”

 

http://www.jishudao.com/2019/09/16/alipay_rsa2_work/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章