开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 227|回复: 9
收起左侧

[易语言] vx支付发红包遇到问题,总是签名错误

[复制链接]
结帖率:59% (13/22)
发表于 2024-10-24 15:48:17 | 显示全部楼层 |阅读模式   江西省景德镇市
11精币
微信支付发送红包时总是签名错误 | 微信开放社区 (qq.com)




  
子程序名返回值类型公开备 注
子程序1  
参数名类 型参考可空数组备 注
appid文本型
mchID文本型
key文本型
body文本型
变量名类 型静态数组备 注
R1存取键值表 
nonceStr文本型 
stringA文本型 
sign文本型 
url文本型 
stringSignTemp文本型 
html文本型 
postData文本型 
zjj字节集 
xyt文本型 
Arr文本型0
i  
' R1.置值 (“appid”, appid)
R1.置值 (“mch_id”, mchID)
R1.置值 (“device_info”, “1001”)
R1.置值 (“body”, body)
nonceStr = 文本_取随机字符 (32, 6)
R1.置值 (“nonce_str”, nonceStr)
R1.置值 (“mch_billno”, “2024”文本_取随机字符 (12, 1))
R1.置值 (“wxappid”, appid)
R1.置值 (“send_name”, “古村信鸽”)
R1.置值 (“re_openid”, “oVmyO6jzCNVLoqyUg6mvgaeF2UBk”)
R1.置值 (“total_amount”, 101)
R1.置值 (“total_num”, 1)
R1.置值 (“wishing”, “祝学习进步”)
R1.置值 (“client_ip”, “127.0.0.1”)
R1.置值 (“act_name”, “发作业赢红包”)
R1.置值 (“remark”, “45235365”)
R1.置值 (“scene_id”, “PRODUCT_1”)
' R1.置值 (“msgappid”, appid)
' R1.置值 (“risk_info”, “posttime%3d123123412%26clientversion%3d234134%26mobile%3d122344545%26deviceid%3dIOS”)
R1.置值 (“sign”, sign)
Arr = R1.取键数组 (1)
stringA = “”
变量循环首 (1, 取数组成员数 (Arr), 1, i)
如果真 (R1.取文本 (Arr [i])“”)
stringA = stringA + 选择 (stringA = “”, “”, “&”) + Arr [i]“=” + R1.取文本 (Arr [i])

变量循环尾 ()
stringSignTemp = stringA + “&key=” + key
sign = 到大写 (校验_取md5_文本 (stringSignTemp, , , ))
R1.置值 (“sign”, sign)
输出调试文本 (R1.到XML (“xml”, ))
postData = R1.到XML (“xml”, )
输出调试文本 (postData)
postData = 子文本替换 (postData, “>”, “>postData = 子文本替换 (postData, “postData = 子文本替换 (postData, “”, , , 真)
postData = 子文本替换 (postData, “]]>”, , , )
postData = 子文本替换 (postData, “>”#换行符, , , )
url = https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack
zjj = 网页_访问_E2EE (R1, html, url, postData, , , , xyt, , , , , , , , )
写到文件 (目录_取特定目录 (, )“532523.txt”, zjj)
html = 到文本 (zjj)
输出调试文本 (postData, html, xyt, R1.到JSON (假, , , , ))
结束 ()
子程序名返回值类型公开备 注
网页_访问_E2EE字节集 e2ee专用
参数名类 型参考可空数组备 注
http_结果存取键值表
str文本型只支持文本与字节集
网址文本型完整的网页地址,必须包含http://或者https://
提交信息文本型"POST"专用
提交Cookies文本型本参数传递变量时会自动回传返回的Cookie
提交字节集字节集
附加协议头文本型一行一个请用换行符隔开
返回协议头文本型返回完整的协议头
禁止重定向逻辑型默认不禁止网页重定向
返回重定向文本型Location
超时整数型秒|默认为30秒 0为不限制
状态整数型200
代理地址文本型代理地址,格式为 8.8.8.8:88
用户名文本型
密码文本型
自动获取代理逻辑型
变量名类 型静态数组备 注
http网站客户端 
Cookie列表存取列表 
i整数型 
响应头存取键值表 
bin字节集 
协议头文本型 
如果真 (取反 (是否为空 (代理地址)))
http.置代理服务器 (“direct”, 代理地址, 用户名, 密码)
如果真 (超时 < 1)
超时 = 30
http.置编码 ( #文本编码格式_UTF8 )
http.置超时时间 (超时, 超时)
http.置允许HTTP错误 ()
http.SSL_设置检测属性 (0, )
如果真 (禁止重定向)
http.置自动跳转 (假, 10)

协议头 = 附加协议头
如果真 (寻找文本 (协议头, “Referer:”, , ) = -1)
协议头 = 创建文本 (“{1}\r\n{2}{3}”, 协议头, “Referer: ”, 网址)
如果真 (寻找文本 (协议头, “Accept-Language:”, , ) = -1)
协议头 = 创建文本 (“{1}\r\n{2}”, 协议头, “Accept-Language: zh-cn”)
如果真 (寻找文本 (附加协议头, “User-Agent:”, , ) = -1)
协议头 = 创建文本 (“{1}\r\n{2}”, 协议头, “User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1”)
如果真 (寻找文本 (协议头, “Content-Type:”, , ) = -1)
协议头 = 创建文本 (“{1}\r\n{2}”, 协议头, “Content-Type: application/x-www-form-urlencoded”)
如果真 (寻找文本 (协议头, “X-Requested-With:”, , ) = -1)
协议头 = 创建文本 (“{1}\r\n{2}”, 协议头, “X-Requested-With: XMLHttpRequest”)
如果真 (取文本长度 (提交信息) > 2047)
协议头 = 创建文本 (“{1}\r\n{2}”, 协议头, “Expect: ”)

如果真 (提交Cookies ≠ “”)
http.置Cookie (提交Cookies)
判断 (是否为空 (提交信息))
http.执行GET (网址, bin, 真, 协议头)
判断 (取反 (是否为空 (提交字节集)))
http.执行POST (网址, 提交字节集, bin, 真, 协议头)
http.执行POST (网址, 提交信息, bin, 真, 协议头)
返回协议头 = http.取响应头文本 ()
UpH (返回协议头, 提交Cookies)
状态 = http.取响应状态 ()
如果真 (取反 (是否为空 (返回重定向)))
http.取响应头 (响应头)
返回重定向 = 响应头.取文本 (“Location”)
如果真 (返回重定向 = “”)
返回重定向 = 响应头.取文本 (“location”)

如果真 (取反 (是否为空 (str)))
str = 到文本 (bin)
如果真 (取反 (是否为空 (http_结果)))
http_结果.从JSON载入 (到文本 (bin), , , )
返回 (bin)
子程序名返回值类型公开备 注
_加法整数型 汇编加法 (变量   变量 要比E的快)
参数名类 型参考可空数组备 注
被加数整数型
加数整数型
置入代码 ({ 139, 69, 8, 3, 69, 12, 201, 194, 8, 0 })
返回 (0)
子程序名返回值类型公开备 注
_减法整数型 汇编减法 (变量 - 变量 要比E的快)
参数名类 型参考可空数组备 注
被减数整数型
减数整数型
置入代码 ({ 139, 69, 8, 43, 69, 12, 201, 194, 8, 0 })
返回 (0)
' mov eax, dword ptr [ebp 08h]
' sub eax, dword ptr [ebp 0Ch]
' leave
' retn 008h
子程序名返回值类型公开备 注
UpH逻辑型 处理并更新内部Cookies(参数为原始协议头) (忽略空键值的Cookie并删除同名的原Cookie) 鱼刺内抠出来的
参数名类 型参考可空数组备 注
Headers文本型带Set-Cookie的原始协议头文本
ICookies文本型
变量名类 型静态数组备 注
str文本型 
i整数型 
ii整数型 
iii整数型 
len整数型 
_i整数型 
_ii整数型 
cookie文本型 
name文本型 
Value文本型 
bool逻辑型 
' 经测试 效率比分割文本再处理要快哦
如果真 (Headers = #NullStr )
返回 ()
如果真 (取反 (ICookies ≈ #分号空 ))
ICookies = #分号空 + ICookies
i = 寻找文本 (Headers, #Set_Cookie, , )
判断循环首 (i ≠ -1 ii ≠ -1)
i = i + 11
ii = 寻找文本 (Headers, #换行符, i, )  ' 先确定有换行符
如果真 (ii = -1)
跳出循环 ()  ' 连换行符都没? 跳出吧
iii = 寻找文本 (Headers, #分号, i, )
如果真 (iii ≠ -1 iii < ii)  ' 如果有分号 优先使用分号
ii = iii
cookie = 取文本中间 (Headers, i, _减法 (ii, i))
cookie = 删首空 (cookie)
iii = 寻找文本 (cookie, #等号, , )
如果真 (iii ≠ -1)
len = 取文本长度 (cookie)
name = #分号空取文本左边 (cookie, iii)
_i = 寻找文本 (ICookies, name, , )  ' Cookie名区分大小写
如果 (_i ≠ -1)
_ii = 寻找文本 (ICookies, #分号空, _加法 (_i, 取文本长度 (name)), )
如果真 (_ii ≠ -1)
如果 (iii = len)
ICookies = 文本替换 (ICookies, _i, _减法 (_ii, _i), )
_i = _i + 2
ICookies = 文本替换 (ICookies, _i, _减法 (_ii, _i), cookie)
bool = 真

如果真 (len ≠ iii)
Value = 取文本右边 (cookie, 8)
如果真 (Value ≠ #CookieDeleted1 Value ≠ #CookieDeleted2 Value ≠ #CookieDeleted3 )  ' 判断是否是删除标记 比到小写()再对比 速度快
ICookies = ICookies + cookie + #分号空
bool = 真



i = 寻找文本 (Headers, #Set_Cookie, ii, )
判断循环尾 ()
如果真 (ICookies ≈ #分号空 )
ICookies = 取文本右边 (ICookies, 取文本长度 (ICookies) - 2)
返回 (bool)


i支持库列表   支持库注释   
e2eeE2EE互联网服务器套件

<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[签名错误]]></return_msg>
<result_code><![CDATA[FAIL]]></result_code>
<err_code><![CDATA[SIGN_ERROR]]></err_code>
<err_code_des><![CDATA[签名错误]]></err_code_des>
<mch_billno><![CDATA[2024513886970333]]></mch_billno>
<mch_id><![CDATA[1603176971]]></mch_id>
<wxappid><![CDATA[wxe7d6eb08301bb4e6]]></wxappid>
<re_openid><![CDATA[oVmyO6jzCNVLoqyUg6mvgaeF2UBk]]></re_openid>
<total_amount>101</total_amount>
</xml>




回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:80% (16/20)

签到天数: 22 天

发表于 2024-10-24 15:54:30 | 显示全部楼层   广东省深圳市
还以为是逆向,那没事了
回复

使用道具 举报

结帖率:59% (13/22)

签到天数: 20 天

 楼主| 发表于 2024-10-24 15:54:37 | 显示全部楼层   江西省景德镇市
回复

使用道具 举报

结帖率:73% (52/71)

签到天数: 14 天

发表于 2024-10-24 16:01:36 | 显示全部楼层   新疆维吾尔自治区喀什地区
需要帮助吗   
我闲着 也是闲着
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 20 天

发表于 2024-10-24 16:04:02 | 显示全部楼层   广西壮族自治区贵港市
上面代码第一个循环那里不对,VX的key是固定顺序的,你这里顺序打乱了
回复

使用道具 举报

结帖率:59% (13/22)

签到天数: 20 天

 楼主| 发表于 2024-10-24 16:49:50 | 显示全部楼层   江西省景德镇市
wlp 发表于 2024-10-24 16:04
上面代码第一个循环那里不对,VX的key是固定顺序的,你这里顺序打乱了


stringSignTemp = stringA + “&key=” + key
sign = 到大写 (校验_取md5_文本 (stringSignTemp, , , ))
R1.置值 (“sign”, sign)

key是接在后面的啊



VX截图_20241024164908.png
回复

使用道具 举报

结帖率:59% (13/22)

签到天数: 20 天

 楼主| 发表于 2024-10-24 16:51:09 | 显示全部楼层   江西省景德镇市
ksksksks 发表于 2024-10-24 16:01
需要帮助吗   
我闲着 也是闲着

感谢之至!加你了
回复

使用道具 举报

结帖率:87% (13/15)

签到天数: 23 天

发表于 2024-10-24 17:07:49 | 显示全部楼层   新加坡
校验_取md5_文本()第二个参数填真试试
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 20 天

发表于 2024-10-24 22:01:32 | 显示全部楼层   广西壮族自治区贵港市
starfee 发表于 2024-10-24 16:49
stringSignTemp = stringA + “&key=” + key
sign = 到大写 (校验_取md5_文本 (stringSignTemp, ,  ...

我说的是vx的json的key的顺序
回复

使用道具 举报

结帖率:59% (13/22)

签到天数: 20 天

 楼主| 发表于 2024-10-28 08:48:59 | 显示全部楼层   江西省景德镇市
https://blog.csdn.net/hotlinhao/article/details/51262592 坑爹的TX,找了几天终于搞定了,有的要求居然不写出来让程序猿自己猜测。。我靠!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表