文章目录
- 前言
- 一、多个支付怎么统一?
- 二、支付调试
- 支付宝支付
- 注意
- 微信支付
- 总结
前言
最近搞了下微信支付,支付宝支付;
一、多个支付怎么统一?
这个很明显,通常直接用设计模式之-- 策略模式,对外公共提出一个接口,然后通过标识采用不同的策略实现支付,即: 微信支付/支付宝支付
二、支付调试
这里不做具体支付的代码相关讲解;可以参考: 最好的支付SDK
这里简单说下支付中调试的相关细节:
支付宝支付
- 可通过最新sdk调用,也有响应的示例代码 支付宝文档
- 秘钥相关
- 回调通知排查
看一个成功的回调通知:
不是这样的都是错误的,请仔细根据错误排查问题
注意
关于回调接口控制器
- 接受回调通知,必须为post请求,但是参数是通过@requestParam 传递的,不可用@requestbody接参
# 自定义通知回调地址
http://ip:端口/vip/notifyUrl
# 通知内容如下
http://ip:端口/vip/notifyUrl?gmt_create=2024-03-12 16:23:38&charset=UTF-8&seller_email=$$$&subject=app支付&sign=$$$&buyer_open_id=067g2-fWF2tE6WFZ1qj5MRepBxslU67HwmGwpILwYYvJIU4&invoice_amount=0.01¬ify_id=2024031201222162339052671407835156&fund_bill_list=[{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]¬ify_type=trade_status_sync&trade_status=TRADE_SUCCESS&receipt_amount=0.01&app_id=2021004123610873&buyer_pay_amount=0.01&sign_type=RSA2&seller_id=2088741161866271&gmt_payment=2024-03-12 16:23:39¬ify_time=2024-03-12 16:23:39&merchant_app_id=2021004123610873&version=1.0&out_trade_no=2024031278048015&total_amount=0.01&trade_no=2024031222001452671419678420&auth_app_id=2021004123610873&buyer_logon_id=188****9066&point_amount=0.00
- 回调通知接受后,成功的时候,控制器必须利用response返回字符串"success",方法为void
// HttpServletResponse
response.getOutputStream().print("success");
微信支付
微信支付sdk
总结
经历了一个 半拉柯基 的项目,走了很多弯路,也确实跟之前不太一样了,支付宝,微信支付等,都做了升级,以及一些新功能,不过仍然觉得,支付宝对接起来就是比微信支付舒服很多,所有错误都可以在文档中找到解决,而微信支付问题很多,但是解决办法在社区中都找不到解决办法…