文章目录

  • 1. 吐槽:
  • 2. 要注意的点:
  • 3. 导入方法(上代码)

1. 吐槽:

做微信支付的时候抽时间去看了支付宝支付,发现支付宝支付好简单,有官方给的SDK直接调用就OK,但是真正做起来才发现实在是太想当然了,微信app支付就那么几个接口,而且输入输出验签都写得很详细,但是支付宝开始做才发现文档实在是太多了,说不定就从哪跳转到了另外一个地方,尤其做到异步调用这里,文档简直不要太不详细,其实最主要就是封装的SDK没有文档,找不到验签的方法.

2. 要注意的点:

  1. notify_url
    notify_url = "https://www.xxx.com/****/******/callback/",这里的url要注意看你的项目中最后的"/"是否需要加,有的斜杠不加是会报错的

  2. 异步通知中,要进行sign验签
    官方代码基本都是封装到类里的,我找来找去就是找不到那个类,但是找到了它封装的一个
    verify_with_rsa(public_key, message, sign) 函数

3. 导入方法(上代码)

from alipay.aop.api.util.SignatureUtils import verify_with_rsadef notify(self, request):"""支付宝内部支付完成后,异步通知到这个接口,返回支付宝状态,同步到数据库中""""""处理不同得参数,必须返回success"""# 我这里是用的Django所以取值使用request.POST,具体怎么取值取决于使用者的框架data = request.POST.dict()# sign, sign_type 都要从数据中取出,否则签名通不过sign, sign_type = data.pop('sign'), data.pop('sign_type')#排序params = sorted(data.items(), key=lambda e: e[0], reverse=False)#拼接成字符串message = "&".join(u"{}={}".format(k, v) for k, v in params).encode()alipay_public_key = settings.alipay_public_keytry:if verify_with_rsa(alipay_public_key.encode('utf-8').decode('utf-8'), message, sign):# 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 时,支付宝才会认定为买家付款成功# 1-4的验证需要自己加notify_type = data['notify_type']  # 通知类型trade_status = data['trade_status']  # 订单状态if notify_type == 'trade_status_sync':pay_success = Falseif trade_status == 'TRADE_SUCCESS' or trade_status == 'TRADE_FINISHED':pay_success = Trueif pay_success:# 如果支付成功一定是success这个单词,其他的alipay不认return 'success'return 'failure'else:return 'failure'except:return 'failure'

支付宝支付成功异步回调验签以及注意事项(附源码)相关推荐

  1. Java微信支付-支付成功异步回调验签

    接上一篇Java微信支付-统一下单API,本篇在上篇文章的基础上讲述调用统一下单API用户支付成功之后微信异步回调通知 下文中所需配置.类都在以请查看以上链接内容. 在调用微信支付-统一下单API时, ...

  2. 微信支付回调 java_Java微信支付-退款成功异步回调验签

    /** * 微信支付实现 * * @author: Sun * @create: 2019-10-10 17:54 * @version: v1.0 */ @Service @Slf4j public ...

  3. php支付宝异步回调验签失败,thinkphp网站支付宝异步回调验签失败问题_PHP开发框架教程...

    了解Redis这个核心数据类型_PHP开发框架教程 string字符串tring类型是二进制安全的,即string中可以包含任何数据,Redis 中的普通string采用rawencoding 即原始 ...

  4. 支付宝支付成功异步通知收不到怎么办?

    支付宝支付成功异步通知收不到怎么办? 原因可能是 1)php的扩展curl没有开启 2)异步地址无法公网访问 3)异步地址代码传值错误 4)其实已经收到(其实是验签失败返回为空),但是没有做日志记录或 ...

  5. 微信支付V3版本回调+验签流程

    本文主要是接前面2篇微信V3支付参数准备和微信V3支付整合进项目中的后续之微信支付后的回调. 一.回调验签流程介绍 二.核心流程操作 本文主要是接前面2篇微信V3支付参数准备和微信V3支付整合进项目中 ...

  6. 项目对接支付宝支付,内网穿透实现监听支付宝的支付成功异步回调通知

    调试的话使用支付宝的沙箱环境来进行调试 调试的时候因为是本地调试,没有上线的域名,无法被支付宝的异步回调请求所打到,这种情况下可以使用内网穿透来进行解决 内网穿透步骤: 内网穿透的几个常用软件 1.n ...

  7. 支付宝(蚂蚁金服开放平台)-支付结果异步通知-验签

    问题描述: 按文档https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.rIlDQO&treeId=204&ar ...

  8. 支付宝php异步回调,支付宝支付成功之后异步回调处理

    /** * alipay_notify.php. * User: lvfk * Date: 2017/10/26 0026 * Time: 13:48 * Desc: 支付宝支付成功异步通知 */ i ...

  9. luffy-16/订单表设计,立即付款接口/前端,支付成功get回调用户展示,支付成功post回调修改订单状态

    这里写目录标题 一.昨日回顾 二.今日内容 1.订单表设计 2.立即付款接口(一堆校验,登录后) 2.1视图类 2.2序列化类 2.3自定义异常类 2.4配置文件 2.5路由 3.立即付款前端 4.支 ...

最新文章

  1. python字典练习题
  2. 微软开发x86模拟器,让Windows for ARM能运行x86应用
  3. 数组引用以避免数组降阶(c++)
  4. 【Flask】Jinja2之测试器的应用
  5. APP长期处于后台手机打开多个APP后进程被杀
  6. Xamarin效果第八篇之视频监控
  7. kafak消费者从头开始消费(消费者组)
  8. @Cacheable 指定缓存位置
  9. icmp的报文,Destination Host Unreachable
  10. bigdicmal除法精度设置_java中BigDecimal进行加减乘除的基本用法
  11. c语言求满足不等式的最小值,高手请进,请教一道简单的c语言题!
  12. 【风格迁移】Neural Style Transfer 神经风格迁移
  13. PHP依赖注入(DI)和控制反转(IOC)
  14. 创建Oracle定时任务
  15. 网线为什么要分A、B类接法?区别是什么?
  16. python实现虚拟键盘
  17. linux永久保存环境变量
  18. 电视机hdr是什么功能
  19. AARRR(海盗模型)|原理+Python可视化实现
  20. 随机生成英文字母 php,PHP生成随机英文用户名

热门文章

  1. 基于MicroPython的ESP32开发
  2. 冰岛人(近亲判断五代以内能否结婚)
  3. ajax上传本地音频文件,使用ajax将音频blob上传到文件夹中
  4. 翻转数组php,php 翻转数组的方法
  5. 宋·周密《武林旧事》
  6. 测天之梯——2010年爱因斯坦讲座公众数学演讲《宇宙距离之梯》
  7. 履带机器人-项目申报书(校创)
  8. 大专程序员毕业五年税后18K,想进BAT,网友:吃shi都赶不上热的
  9. oracle 安装 status -2,Oracle 12.2 OJVM安装
  10. HDUOJ 4686 Arc of Dream