利用支付宝Cookie监听订单实现个人支付宝收款实时回调
在网上、社区里搜了一下好像没找到什么文章详细分享这种方式的,这些天我花了些时间研究整理了一下,发现这种方式能很好地实现个人支付宝收款实时回调,于是在这里分享一下。
流程很简单,主要就是3步:
1.登录网页支付宝,获取cookie
2.抓包分析支付宝的交易订单接口
3.模拟测试订单接口请求,投入使用
1.先去支付宝官网登录,扫码登录或账密登录都阔以。
登录成功后,直接F12(打开开发者工具),在console中输入document.cookie并回车,即可获取到你登录后的cookie。
2.找一找支付宝二维码收款的交易订单记录在哪,简单浏览后马上发现是在“对账中心”-“业务查询”-“交易订单”菜单下。
再次F12打开开发者工具,进入network,再次点击订单页面的“查询”,抓取请求的接口。
简单分析一下接口,发现需要用到的必须用到的ctoken(拼接在url后面),billUserId(传参),这俩都能从cookie中提取到,所以木有问题~而其他的一些接口参数,就照着他的方式传即可。
3.然后可以直接到Postman等工具里模拟请求测试一下,除了上面提到那些参数,发现header头除了cookie以外,referer这个值也是必须的。再回到浏览器把这个值复制过来再次测试请求,成功!
最后就直接编写一些简单的代码方法,在用到的时候去调用请求接口就好了,PHP参考代码如下:
<?php
/*** User: gump994* Date: 2021-08-08* Time: 18:08* Description: 利用网页版支付宝Cookie监听交易订单数据,实现个人支付宝收款试试回调** 【GOGO支付】已经完整实现该模式云端监听收款,很稳定,效率很高,欢迎测试体验~* 官网地址: https://www.gogozhifu.com** 微信:gump994 邮箱:gogozhifu@qq.com**/goZfb('your-cookie', 'your-token', 'your-userId');//调用支付宝交易订单列表接口
function goZfb($cookie, $token, $userId)
{$url = "https://mbillexprod.alipay.com/enterprise/tradeListQuery.json?ctoken=" . $token;$header = ['referer: https://mbillexprod.alipay.com/enterprise/bizTradeOrder.htm','origin: https://mbillexprod.alipay.com','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'];$data = ['billUserId' => $userId,'pageNum' => 1,'pageSize' => 20,'startTime' => date('Y-m-d') . ' 00:00:00','endTime' => date("Y-m-d", strtotime("+1 day")) . ' 00:00:00','status' => 'ALL','queryEntrance' => 1,'entityFilterType' => 1,'sortTarget' => 'gmtCreate','activeTargetSearchItem' => 'tradeNo','tradeFrom' => 'ALL','sortType' => 0,'_input_charset' => 'gbk'];$res = go_curl($url, $data, $header, $cookie);print_r($res);
}//发送Http请求
function go_curl($url, $post = 0, $header = 0, $cookie = 0, $nobaody = 0)
{$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_TIMEOUT, 15);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);if ($post) {curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $post);}if ($header) {curl_setopt($ch, CURLOPT_HTTPHEADER, $header);}if ($cookie) {curl_setopt($ch, CURLOPT_COOKIE, $cookie);}if ($nobaody) {curl_setopt($ch, CURLOPT_NOBODY, 1);}curl_setopt($ch, CURLOPT_TIMEOUT, 60);curl_setopt($ch, CURLOPT_ENCODING, 'gzip');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$ret = curl_exec($ch);curl_close($ch);return $ret;
}?>
相应代码gitee地址https://gitee.com/niaogang/gogozhifu-web-zfb
最后还要补充说明一下,如果用于实现个人收款实时回调,那么要考虑一下接口重复请求的频率、交易金额匹配、保持cookie有效等问题,这些问题解决方法也很多,多思考都是可以解决的。目前在GOGO支付里已经完整的把这些流程弄好了,只需要填入一个cookie,支付宝云端监听就会保持运行,你的个人支付宝就可以一直进行收款了。
有什么问题或想法欢迎交流讨论~
利用支付宝Cookie监听订单实现个人支付宝收款实时回调相关推荐
- Arduino 利用串口缓冲区监听的方式读取数据
Arduino 利用串口缓冲区监听的方式读取数据 相关篇<Arduino读取串口接收到的数据并发送数据> 利用串口缓冲区监听的方式读取数据,实现该功能依赖:serialEvent()此函数 ...
- 安卓使用无障碍服务监听微信和QQ的收款信息
导读: 资深的安卓程序员想必都了解,安卓的通知监听服务(NotificationListenerService)可以监听通知栏的信息,从通知栏信息里获取到我们想要的收款信息(比如收款类型.收款金额). ...
- redistemplate hash 过期时间_Redis过期监听——订单超时-取消
最近在做电商项目,涉及支付超时处理的几种方式.[记录哈使用redis监听处理] 提交订单的时候,支付-超过了有效时间则支付状态自动更新为已取消. 欢迎交流 redis过期监听的实现: 1.修改redi ...
- Python 技术篇-利用pyqt5库监听剪切板变动,clipboard.dataChanged.connect()剪切板监听
PyQt5 的 clipboard.dataChanged.connect() 方法可以监听剪切板的变动. from PyQt5.QtWidgets import *app = QApplicatio ...
- Vue 页面如何利用生命周期函数监听用户预览时长
最近的业务中涉及到这样一个需求,在线培训的系统需要知道用户对某个在线预览的页面追踪用户的预览时长.初步我们首先想到借助 Vue 页面的生命周期函数 mounted 和 destroyed,分别在其中加 ...
- 怎么利用完成端口监听多个不同端口的socket
你可以试一试 创建两个监听线程,用事件event模型让其出发链接事件,然后两个不同的线程去处理send,recv 1.对于每个端口,都单独开一个监听线程 2.在每个线程里,有客户端连接的时候,用 Cr ...
- android 利用重力感应监听 来电时翻转手机后静音。
在CallNotifier.java中 加入如下代码: public void GetSensorManager(Context context) {sm = (SensorManager) c ...
- angular监听输入框值的变化_angular 实时监听input框value值的变化触发函数方法
用angulajs + ionic 做了一个登陆页面.效果要通过监听输入框的变化来判断登陆按钮是否可点击.当至少一个输入框为空时登录按钮不可点击.一开始是用的jquery的方法做的,后来发现刷新当前页 ...
- js监听html页面大小变化,js实时获取浏览器窗口大小
js实时获取浏览器窗口大小,我们可以使用addEventListener()方法来实现.该addEventListener()方法可以注册事件处理程序以侦听浏览器窗口resize事件,例如window ...
最新文章
- requests(二): json请求中固定键名顺序消除键和值之间的空格
- 机器学习算法基础——决策树和随机深林
- 服务器03系统怎么设置网站,Windows 2003系统路由服务的配置方法
- 神奇的go语言(聊天室的开发)
- laravel 判断字符串包含_Laravel:表单验证字符串长度的错误信息导致的异常
- 如何在电脑上实现企业微信多开?
- MFC 解压7z文件
- 算法工程师和python_Python工程师与人工智能算法工程师有什么区别?
- 冒泡排序的交换次数 (树状数组)
- 用计算机看影碟是数字化过程,2012年上海市高中学业水平考试信息科技
- 钱从哪里来--读书笔记
- 实例教程_次世代兽人制作教程
- iis网站服务器+sql server数据库服务器安全
- 极限学习机(Extreme Learning Machine, ELM)的训练与预测matlab仿真
- ResultSet(结果集)、Statement
- 【转】初入NLP领域的一些小建议
- c语言微课名称大全,微课在高职《C语言程序设计》课程中的初探
- CSS-CSS2选择器
- qt串口阻塞_Qt串口操作
- mysql创建角色并授权给用户