支付宝异步回调请求中包含空格等特殊字符,导致后端服务不能正常接收

本文讲述了支付宝异步回调中因参数包含空格等特殊字符导致Java后端服务无法正常接收的问题。经过排查定位到是特殊字符导致的转发问题。通过引入Nginx的Lua组件,编写Lua脚本来转义参数,最终解决了问题。
摘要由CSDN通过智能技术生成

支付宝回调分同步回调(GET)和异步回调(POST)

同步回调和异步回调的参数都是在拼接到url后面的参数

https://www.abc.com/api/payment/alipay/notice?gmt_create=2021-01-14 16:36:45&charset=UTF-8&gmt_payment=2021-01-14 16:36:53&notify_time=2021-01-14 16:36:53&subject=通道开通费&sign=$$$&buyer_id=111111&invoice_amount=0.01&version=1.0&notify_id=111111111&fund_bill_list=[{"amount":"0.01","fundChannel":"PCREDIT"}]&notify_type=trade_status_sync&out_trade_no=1111111&total_amount=0.01&trade_status=TRADE_SUCCESS&trade_no=2021011422001455761413903947&auth_app_id=2111111111&receipt_amount=0.01&point_amount=0.00&buyer_pay_amount=0.01&app_id=111111111111&sign_type=RSA2&seller_id=11111111

Java接收参数的代码:

	@RequestMapping("/notify")
    public @ResponseBody String notify(HttpServletRequest request) {
   
        // 一定要验签,防止黑客篡改参数
        Map<String, String[]> parameterMap = request.getParameterMap();
        StringBuilder notifyBuild = new StringBuilder("/****************************** alipay notify ******************************/\n")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值