当前位置:首页 > 技术 > 正文内容

支付宝与微信支付回调响应处理指南

访客 技术 2026年6月14日 1

支付宝支付系统回调处理:

以下是支付宝沙箱环境中的回调响应示例:

GET 页面跳转回调<br></br>alipay/?charset=utf-8&order_id=20230515123456789012&payment_method=alipay.trade.page.pay.return&amount=0.50&signature=XaYbZcD1eFgHiJkLmNoPqRsTuVwXyZ1234567890%3D&trade_id=202305151234567890123456&merchant_app_id=2018051500123456&api_version=1.0&app_id=2018051500123456&encryption_type=RSA2&partner_id=2088202963205945&time_stamp=2023-05-15+12%3A34%3A56 HTTP/1.1" 200 0
POST 服务器端回调<br></br><QueryDict: {'create_time': ['2023-05-15 12:34:47'], 'encoding': ['utf-8'], 'payment_time': ['2023-05-15 12:35:02'], 'notification_timestamp': ['2023-05-15 12:35:03'], 'product_name': ['20230515123456789012'], 'security_code': ['AbCdEfGhIjKlMnOpQrStUvWxYz1234567890aBcDeFgHiJkLmNoP='], 'buyer_identifier': ['2088202963801234'], 'bill_amount': ['0.50'], 'api_version': ['1.0'], 'notification_reference': ['20230515012345678901234567890'], 'fund_detail': ['[{"amount":"0.50","payment_source":"ALIPAYACCOUNT"}]'], 'notification_category': ['order_status_update'], 'order_id': ['20230515123456789012'], 'total_fee': ['0.50'], 'payment_status': ['COMPLETED'], 'transaction_id': ['202305151234567890123456789'], 'merchant_app_id': ['2018051500123456'], 'receipt_amount': ['0.50'], 'bonus_amount': ['0.00'], 'app_id': ['2018051500123456'], 'customer_paid_amount': ['0.50'], 'encryption_method': ['RSA2'], 'partner_id': ['2088202963205945']}>

同步返回处理(return_url):这是一种可视化返回方式,即页面跳转通知。当支付成功后,支付宝会通过GET方式跳转到指定地址,并附带相关参数。这种通知方式受用户操作影响,如果用户在支付宝显示"支付成功"提示后关闭页面,而商户服务器响应较慢,可能导致订单信息无法获取,这种情况称为"掉单"。同步返回处理是一次性调用,仅在支付成功后触发。

异步返回处理(notify_url):此方式通过服务器间直接通信进行数据交互,必须部署在公网服务器上进行测试。支付宝会向商户的异步通知地址发送POST请求,商户需在该地址处理相关业务逻辑,并每一步操作都必须向支付宝返回"success"字符串(不能包含HTML脚本或其他内容,也不可进行页面跳转)。若异步通知处理正常,基本不会出现掉单情况,因为支付宝会在24小时内分6-10次向商户网站发送订单信息,直到接收到正确的响应。

微信支付回调:

微信支付仅提供服务器端回调方式,需注意以下事项:

  1. 同一通知可能会多次发送给商户系统。商户系统必须具备处理重复通知的能力。

  2. 在后台通知交互过程中,若微信收到商户的响应不符合规范或超时,微信会判定本次通知失败并重新发送,直至成功(在通知持续失败的情况下,微信总共会发起10次通知,通知频率为15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 累计24小时4分钟),但微信不保证通知最终一定能成功。

  3. 在订单状态不明确或未收到微信支付结果通知的情况下,建议商户主动调用微信支付【订单查询接口】确认订单状态。

<xml>
  <merchant><![CDATA[wx1234567890abcdef1234567890]]></merchant>
  <additional_info><![CDATA[测试支付]]></additional_info>
  <payment_channel><![CDATA[ICBC]]></payment_channel>
  <currency><![CDATA[CNY]]></currency>
  <subscribe_status><![CDATA[Y]]></subscribe_status>
  <business_id><![CDATA[1234567890]]></business_id>
  <random_string><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></random_string>
  <user_openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></user_openid>
  <merchant_order_id><![CDATA[1409811653]]></merchant_order_id>
  <result><![CDATA[SUCCESS]]></result>
  <response_code><![CDATA[SUCCESS]]></response_code>
  <verify_signature><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></verify_signature>
  <sub_business_id><![CDATA[1234567890]]></sub_business_id>
  <completion_time><![CDATA[20230515123456]]></completion_time>
  <total_amount>1</total_amount>
<coupon_amount_0><![CDATA[10]]></coupon_amount_0>
<coupon_total><![CDATA[1]]></coupon_total>
<coupon_kind><![CDATA[CASH]]></coupon_kind>
<promotion_id><![CDATA[10000]]></promotion_id> 
  <transaction_type><![CDATA[JSAPI]]></transaction_type>
  <wechat_transaction_id><![CDATA[1004400740201409030005092168]]></wechat_transaction_id>
</xml>

商户服务器需捕获上述参数并进行验证,处理相关业务逻辑。商户系统必须能够正确处理重复的通知。

重要提示:

处理完成后,必须返回字符串格式

如果返回对象或其他格式,微信将无法处理,会持续发送通知。切记返回字符串。这是常见的开发陷阱。

向微信服务器返回的响应格式如下:

<xml>

<response_code><![CDATA[SUCCESS]]></response_code> <response_message><![CDATA[OK]]></response_message> </xml>

标签: 支付宝

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。