-
利用支付宝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参考代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
<?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有效等问题,这些问题解决方法也很多,多思考都是可以解决的。
有任何问题或想法欢迎交流讨论~
出处:https://www.cnblogs.com/gogozhifu/p/15128954.html