在网上、社区里搜了一下好像没找到什么文章详细分享这种方式的,这些天我花了些时间研究整理了一下,发现这种方式能实时获取到支付宝里的二维码收款记录,从而很好地实现个人支付宝免签约收款实时回调,于是在这里分享一下。

流程很简单,主要就是3步:

1.登录网页支付宝,获取cookie

2.抓包分析支付宝的交易订单接口

3.模拟测试订单接口请求,投入使用

1.先去支付宝官网登录,扫码登录或账密登录都阔以。

登录成功后,直接F12(打开开发者工具),在console中输入document.cookie并回车,即可获取到你登录后的cookie。

2.找一找支付宝二维码收款的交易订单记录在哪,简单浏览后马上发现是在“对账中心”-“业务查询”-“交易订单”菜单下。

再次F12打开开发者工具,进入network,再次点击订单页面的“查询”,抓取请求的接口。

简单分析一下接口,发现需要用到的必须用到的ctoken(拼接在url后面),billUserId(传参),这俩都能从cookie中提取到,所以木有问题~而其他的一些接口参数,就照着他的方式传即可。

3.然后可以直接到Postman等工具里模拟请求测试一下,除了上面提到那些参数,发现header头除了cookie以外,referer这个值也是必须的。再回到浏览器把这个值复制过来再次测试请求,成功!

最后就直接编写一些简单的代码方法,在用到的时候去调用请求接口就好了,PHP参考代码如下:

  1. <?php
  2. /**
  3. * User: gump994
  4. * Date: 2021-08-08
  5. * Time: 18:08
  6. * Description: 利用网页版支付宝Cookie监听交易订单数据,实现个人支付宝收款试试回调
  7. *
  8. * 【GOGO支付】已经完整实现该模式云端监听收款,很稳定,效率很高,欢迎测试体验~
  9. * 官网地址: https://www.gogozhifu.com
  10. *
  11. * 微信:gump994 邮箱:gogozhifu@qq.com
  12. *
  13. */
  14.  
  15. goZfb('your-cookie', 'your-token', 'your-userId');
  16.  
  17. //调用支付宝交易订单列表接口
  18. function goZfb($cookie, $token, $userId)
  19. {
  20. $url = "https://mbillexprod.alipay.com/enterprise/tradeListQuery.json?ctoken=" . $token;
  21. $header = [
  22. 'referer: https://mbillexprod.alipay.com/enterprise/bizTradeOrder.htm',
  23. 'origin: https://mbillexprod.alipay.com',
  24. 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'
  25. ];
  26. $data = [
  27. 'billUserId' => $userId,
  28. 'pageNum' => 1,
  29. 'pageSize' => 20,
  30. 'startTime' => date('Y-m-d') . ' 00:00:00',
  31. 'endTime' => date("Y-m-d", strtotime("+1 day")) . ' 00:00:00',
  32. 'status' => 'ALL',
  33. 'queryEntrance' => 1,
  34. 'entityFilterType' => 1,
  35. 'sortTarget' => 'gmtCreate',
  36. 'activeTargetSearchItem' => 'tradeNo',
  37. 'tradeFrom' => 'ALL',
  38. 'sortType' => 0,
  39. '_input_charset' => 'gbk'
  40. ];
  41. $res = go_curl($url, $data, $header, $cookie);
  42.  
  43. print_r($res);
  44. }
  45.  
  46. //发送Http请求
  47. function go_curl($url, $post = 0, $header = 0, $cookie = 0, $nobaody = 0)
  48. {
  49. $ch = curl_init();
  50. curl_setopt($ch, CURLOPT_URL, $url);
  51. curl_setopt($ch, CURLOPT_TIMEOUT, 15);
  52. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  53. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  54. if ($post) {
  55. curl_setopt($ch, CURLOPT_POST, 1);
  56. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  57. }
  58. if ($header) {
  59. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  60. }
  61. if ($cookie) {
  62. curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  63. }
  64. if ($nobaody) {
  65. curl_setopt($ch, CURLOPT_NOBODY, 1);
  66. }
  67. curl_setopt($ch, CURLOPT_TIMEOUT, 60);
  68. curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
  69. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  70. $ret = curl_exec($ch);
  71. curl_close($ch);
  72. return $ret;
  73. }
  74.  
  75. ?>

相应代码gitee地址https://gitee.com/niaogang/gogozhifu-web-zfb

最后还要补充说明一下,如果用于实现个人收款实时回调,那么要考虑一下接口重复请求的频率、交易金额匹配、保持cookie有效等问题,这些问题解决方法也很多,多思考都是可以解决的。

有任何问题或想法欢迎交流讨论~

利用支付宝Cookie监听交易订单实现个人支付宝收款实时回调通知的更多相关文章

  1. Unity中利用委托与监听解耦合的思路

    这篇随笔是一篇记录性的随笔,记录了从http://www.sikiedu.com/my/course/304,这门课程中学到的内容,附带了一些自己的思考. 一.单例模式的应用 首先假想一种情况,现在需 ...

  2. 利用select/poll监听多个设备详解

    如果一个应用程序去处理多个设备,例如应用程序读取网路数据,按键,串口,一般能想到的有三种方法: 方法1:串行+阻塞的方式读取:while(1) { read(标准输入);read(网络);}缺点:每当 ...

  3. android 利用重力感应监听 来电时翻转手机后静音。

       在CallNotifier.java中 加入如下代码: public void GetSensorManager(Context context) { sm = (SensorManager) ...

  4. 利用angular指令监听ng-repeat渲染完成后执行脚本

    业务中有时需要在异步获取数据并用ng-repeat遍历渲染完页面后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己动手写.有经验的同学都应该知道,在ng-r ...

  5. linkedin databus介绍——监听数据库变化,有新数据到来时通知其他消费者app,新数据存在内存里,多份快照

    概要结构如下图. 图中显示:Search Index和Read Replicas等系统是Databus的消费者.当主OLTP数据库发生写操作时,连接其上的中继系统会将数据拉到中继中.签入在Search ...

  6. dispatch_group_async可以实现监听一组任务是否完成,完成后得到通知执行其他的操作。这个方法很有用,比如你执行三个下载任务,当三个任务都下载完成后你才通知界面说完成的了

    dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, ); dispatch_group_ ...

  7. 监听 window.open 打开的窗口关闭并回调

    第三方的登录的解决方案通常有两种方式,一是打开一个新的标签页,然后登录回调回来: 二是通过父窗口打开一个子窗体去第三方登录,登陆成功时关掉子窗体回到父窗口. 问题来了 我的父窗体怎么样才知道子窗体被关 ...

  8. 利用UiWatchers 监听解决安卓自动化各种自动化各种非期待弹窗,弹层,升级,广告,对话框,来电等问题

    app自动化时,各种不期待的弹层弹窗,升级广告等时有飞出,由于弹窗具有不定时,不定页面等很多不确定性.有的弹窗很不友好,不×掉,很难进行下一步操作,造成 测试用例失败.而判断是否有弹窗,弹层很麻烦.研 ...

  9. 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的

    我们在<服务器在管道中的"龙头"地位>中对ASP.NET Core默认提供的具有跨平台能力的KestrelServer进行了介绍,为了让读者朋友们对管道中的服务器具有更 ...

随机推荐

  1. 中文NER的那些事儿3. SoftLexicon等词汇增强详解&代码实现

    前两章我们分别介绍了NER的基线模型Bert-Bilstm-crf, 以及多任务和对抗学习在解决词边界和跨领域迁移的解决方案.这一章我们就词汇增强这个中文NER的核心问题之一来看看都有哪些解决方案.以 ...

  2. 4.QT:spinbox(spindoublebox)控件的信号响应

    Qt的QSpinBox和QDoubleSpinBox两个控件在默认情况下是valueChanged信号,会响应每次输入栏的改变. 比如想要输入数值"123",我们会依次键入1 - ...

  3. 9、zabbix监控

    9.1.监控: 1.初级(凡人): (1)识别监控的对象: (2)理解监控的对象: (3)细分监控对象的指标: (4)确定告警的基准线: 2.预中级(飞仙): (1)工具化和监控分离: (2)监控对象 ...

  4. layui table 表格上添加日期控件

    方法一: var tableInit = table.render({ elem: '#tbtxrz' , method: 'post' , data: jsonData , height: &quo ...

  5. solidity 小案例 收费站

    solidity IDE下载地址 https://pan.baidu.com/s/1cY8VgDqB9Wt9VzK-Nocbyw 代码案例: pragma solidity ^0.4.0; //创建合 ...

  6. uni-app中组件picker的基本使用(日期选择器为例)

    例:需要在下图"自定义日期"中使用日期选择器 <template> <div> <picker mode="date" @chan ...

  7. OSI与TCP/IP各层的结构与功能,都有哪些协议?

    学习计算机⽹络时我们⼀般采⽤折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采⽤⼀种只有 五层协议的体系结构,这样既简洁⼜能将概念阐述清楚. 结合互联⽹的情况,⾃上⽽下地,⾮常简要的介绍⼀下 ...

  8. mongodb的基本命令与常规操作

    1. 查看当前数据库的版本号:db.version()2. 查看当前所在数据库:db 默认是test数据库3. 查看当前数据库的连接地址:db.getMongo()4. 查看所有数据库:show da ...

  9. ESP32的ULP 协处理器笔记

    1.ULP 协处理器是一个功耗极低的协处理器设备,无论主 CPU 是处于正常运行模式还是 Deep-sleep 模式,ULP 协处理器都可以独立运行.超低功耗协处理器的补充使得 ESP32 能够胜任一 ...

  10. TCP和UDP知识总结

    1.TCP粘包:Tcp是面向连接.流式传送的,没有明确的边界定义.他有一个缓冲区,每过一段时间或者缓存满了就发送出去,造成一次发送的数据可能是多个包或者包的一部分,这就是发送端的粘包.接收端的粘包指应 ...