关于支付宝异步通知的那些事

简介: 一、如何指定接收异步通知的地址     对于支付产生的交易,支付宝会根据原始支付API中传入的异步通知地址notify_url,通过POST请求的形式将支付结果 作为参数通知到商户系统。     以app支付为例,支付请求中notify_url参数的(如下图):     二、异步通知返回参数介绍     支付宝通过POST请求的形式将支付结果作为参数通知到商户系统。

一、如何指定接收异步通知的地址 

    对于支付产生的交易,支付宝会根据原始支付API中传入的异步通知地址notify_url,通过POST请求的形式将支付结果 作为参数通知到商户系统。 
    以app支付为例,支付请求中notify_url参数的(如下图): 

    



二、异步通知返回参数介绍 

    支付宝通过POST请求的形式将支付结果作为参数通知到商户系统。各接口返回的异步通知参数可能会略有不同,具体请参见支付宝开放平台文档中各接口的异步通知参数的详细说明。 
以app支付为例,返回的异步通知参数如下(以下示例报文仅供参考,实际返回的详细报文请以实际返回为准): 
    复制代码

1
https: //api.xx.com/receive_notify.htm?total_amount=2.00&buyer_id=2088102116773037&body=大乐透2.1&trade_no=2016071921001003030200089909&refund_fee=0.00¬ify_time=2016-07-19 14:10:49&subject=大乐透2.1&sign_type=RSA2&charset=utf-8¬ify_type=trade_status_sync&out_trade_no=0719141034-6418&gmt_close=2016-07-19 14:10:46&gmt_payment=2016-07-19 14:10:47&trade_status=TRADE_SUCCESS&version=1.0&sign=kPbQIjX+xQc8F0/A6/AocELIjhhZnGbcBN6G4MM/HmfWL4ZiHM6fWl5NQhzXJusaklZ1LFuMo+lHQUELAYeugH8LYFvxnNajOvZhuxNFbN2LhF0l/KL8ANtj8oyPM4NN7Qft2kWJTDJUpQOzCzNnV9hDxh5AaT9FPqRS6ZKxnzM=&gmt_create=2016-07-19 14:10:44&app_id=2015102700040153&seller_id=2088102119685838¬ify_id=4a91b7a78a503640467525113fb7d8bg8e


三、异步通知的验签 
    为了帮助开发者调用开放接口,我们提供了开放平台服务端sdk和demo,包含JAVA、PHP和.NET三语言版本,封装了签名&验签、HTTP接口请求等基础功能。为了避免验签出错强烈建议先下载对应语言版本的SDK并引入您的开发工程进行快速接入。 

   
其验签步骤为: 
    第一步: 在通知返回参数列表中,除去sign、sign_type两个参数外,凡是通知返回回来的参数皆是待验签的参数。 
    第二步: 将剩下参数进行url_decode, 然后进行字典排序,组成字符串,得到待签名字符串: 
    第三步: 将签名参数(sign)使用base64解码为字节码串。 
    第四步: 使用RSA的验签方法,通过签名字符串、签名参数(经过base64解码)及支付宝公钥验证签名。 
    第五步:在步骤四验证签名正确后,必须再严格按照如下描述校验通知数据的正确性。 

    1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号; 
    2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额); 
    3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email); 
    4、验证app_id是否为该商户本身。 

    上述1、2、3、4有任何一个验证不通过,则表明本次通知是异常通知,务必忽略。在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。 

四、无法接收到异步通知怎么办 

    自查方案一:[url]https://openclub.alipay.com/read.php?tid=1677&fid=25&page=1[/url]
    自查方案二:[url]https://openclub.alipay.com/read.php?tid=675&fid=2[/url]

五、异步通知中的交易状态介绍 
   请参考这个详情帖子:[url]https://openclub.alipay.com/read.php?tid=1295&fid=25[/url] 

六、为什么会重复不断的收到支付宝的异步通知
 
每当交易状态改变时,服务器异步通知页面就会收到支付宝发来的处理结果通知,程序执行完后必须打印输出success。如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h)。 
其中,若退款期限是3个月可退款,支付成功后,支付宝会发送trade_success的支付成功状态的异步通知,在3个月后支付宝会再次发送trade_finished的交易结束状态的异步通知,表示交易结束不允许退款。 

  返回success代码示例: 
   JAVA:复制代码

out.println("success");

 PHP:复制代码

echo "success";

 .NET:复制代码

Response.Write("success");

 其他开发语言也是直接输出success即可 

    直接访问你的异步页面应该是输出(如下图)中的success这7个字符 
注意:浏览器上点击查看页面源代码,看到的是这个7个字符,有空格或者其他字符都会导致重复收到通知(建议大家做一下简单的验证) 
   

目录
相关文章
|
SQL 前端开发 Oracle
mysql合并查询(多张表) union 和 union all
简介 小序 :今天写首页动态业务的时候,用到了两张表,还需要分页查询,刚开始以为需要关联查询,后来发现关联的话不会放到一个实体,然后我就上网找方法,然后发现了一个我没学过的sql语句union,union all,卧槽 还是得好好学习啊,前端我想学,mysql我想学,真的时间不够用啊,还得给学弟学妹拍趣味编程课看的视频,真的是烦啊! 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
2056 1
mysql合并查询(多张表) union 和 union all
|
数据采集 API 开发工具
项目支付接入支付宝【沙箱环境】
该博客文章详细介绍了如何在PC端项目中接入支付宝支付功能,特别是在沙箱环境中的配置和实现步骤。文章提供了详细的配置指南,包括获取支付宝公钥和私钥、配置沙箱应用环境、生成密钥、设置服务端代码以及调用支付接口等步骤,并附有相应的代码示例和说明。
项目支付接入支付宝【沙箱环境】
|
监控 关系型数据库 数据库
PostgreSQL的索引优化策略?
【8月更文挑战第26天】PostgreSQL的索引优化策略?
680 1
|
人工智能 监控 算法
基于蓝牙iBeacon定位技术与3DCIS技术的室内定位导航系统,助力智慧空间管理
**维小帮室内定位导航系统**采用3D可视化、蓝牙iBeacon、AI路径规划及物联网技术,提供精准室内导航。系统支持3D/AR导航、实时定位、电子围栏功能,广泛应用于商场、医院、办公楼和园区,提升用户体验并优化管理。例如,商场中的精准营销,医院的智能导诊,办公楼的效率提升,园区的综合管理。通过智能路径规划,确保用户在复杂环境中无碍通行。
920 1
基于蓝牙iBeacon定位技术与3DCIS技术的室内定位导航系统,助力智慧空间管理
有哪些元宇宙的已知成功案例可以借鉴
**元宇宙成功案例摘要:** - 韩国国民银行开拓元宇宙金融,设立虚拟分行,探索数字资产服务。 - Meta's "Horizon Worlds"月活用户达30万,显示元宇宙在社交娱乐的潜力。 - Second Life作为早期在线世界,提供沉浸式体验,预示元宇宙可能性。 - 工商银行河北雄安分行创建虚拟分行,推动金融服务数字化。 - 首钢一高炉·SoReal乐园结合XR技术,展现元宇宙在文旅的创新应用。 - 中兴、天下秀、网易等企业通过元宇宙技术赋能社交、工业和服务平台。 这些案例揭示元宇宙在多领域广泛应用及广阔前景。
有哪些元宇宙的已知成功案例可以借鉴
支付系统30-------支付宝支付---支付成功异步通知----通知参数和通知结果
支付系统30-------支付宝支付---支付成功异步通知----通知参数和通知结果
|
数据采集 存储 消息中间件
iLogtail开源之路
2022年6月底,阿里云iLogtail代码完整开源,正式发布了完整功能的iLogtail社区版。iLogtail作为阿里云SLS官方标配的采集器,多年以来一直稳定服务阿里集团、蚂蚁集团以及众多公有云上的企业客户,目前已经有千万级的安装量,每天采集数十PB的可观测数据,广泛应用于线上监控、问题分析/定位、运营分析、安全分析等多种场景。此次完整开源,iLogtail社区版首次在内核能力上与企业版完全对齐,开发者可以构建出与企业版性能相当的iLogtail云原生可观测性数据采集器。
1742 1
iLogtail开源之路
|
Java 开发工具
阿里云灵积平台Java SDK调用教程
开通阿里云灵积服务并创建API-KEY,添加Java依赖`dashscope-sdk-java`版本2.11.0。示例代码展示如何使用SDK进行多模态对话,调用`MultiModalConversation`进行交互,并打印结果。测试结果显示输出对一张图片的描述。参考链接提供通义千问VL快速入门指南。
3236 0
|
小程序 开发者
关于微信小游戏的备案,你需要的事
关于微信小游戏的备案,你需要的事
945 0
Vue3中使用Element-Plus分页组件
Vue3中使用Element-Plus分页组件