支付寶對接【手機網頁支付】:
- 1.回跳地址可以是內網,return_url不需要攜帶自定義拼接參數,回跳成功返回示例:
https://www.baidu.com/?a=1&charset=UTF-8&out_trade_no=625025472840859648&method=alipay.trade.wap.pay.return&total_amount=0.01&sign=EY%2FehLjyBgfz6tRXGBc7jynPp7uE7krSSZqg94%2FZAG%2FtGHWwZV4JSR83AXUM1sMr6x%2BS8J0Z2JdyrxF%2FDQN%2FEmXypAN%2B3%2FluQZrDYfwkhKDh9UMxceOovVeeI7CSaxvD%2FOqTVRaBAk2Xcghpw1%2Bj4I7vUVw0P0RqXqn6v5z5QggfZf0vDufWjyL0Mkqqli7fi7GVuFeaGgKtldk%2FuRgX3JfYooAuOC8fWkKsRdyEqon7w7ch%2FOTjPQLmN%2F%2FnizRAn0g3j7MyRta9yUUj37YjYSzUog1hRHW13DxVIXRWkU5Whn1hq4IvwGECN7T1fa2GM87ewRmZGkDGOxQHQGPkMg%3D%3D&trade_no=2019092122001475810545501203&auth_app_id=2019090466887800&version=1.0&app_id=2019090466887800&sign_type=RSA2&seller_id=2088631212955538×tamp=2019-09-21+17%3A48%3A18
注意點:
-
1.支付接口預處理,檢查訂單狀態,訂單防重,防止重複支付
- 防重:
- 1.mysql唯一索引
- 2.利用redis的原子性實現分佈式鎖 將orderID作爲key,setnx成功這進行insert/update
- 防重:
-
2.支付狀態回調要注意的點:
-
1)使用支付寶公鑰驗證簽名,(公私鑰交互的目的就是保證消息數據不可被篡改,保證數據的安全性)
-
2)驗證訂單號,回調的訂單號是否爲商戶創建的訂單號
-
3)驗證訂單號金額
-
4)驗證seller_id是否爲訂單號對應的操作方、appid等
-
-
3.訂單補償,使用延遲隊列關閉未支付的訂單以及對支付成功但用戶未補充完成的信息進行退款,對退款失敗和關閉失敗的訂單進行補償