微信支付发送红包时总是签名错误 | 微信开放社区 (qq.com)
|
子程序1 | | | |
appid | 文本型 | | | | mchID | 文本型 | | | | key | 文本型 | | | | body | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | R1 | 存取键值表 | | | nonceStr | 文本型 | | | stringA | 文本型 | | | sign | 文本型 | | | url | 文本型 | | | stringSignTemp | 文本型 | | | html | 文本型 | | | postData | 文本型 | | | zjj | 字节集 | | | xyt | 文本型 | | | Arr | 文本型 | | 0 | i | | | |
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. 置值 (“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 | 字节集 | | |
http_结果 | 存取键值表 | | | | str | 文本型 | | | | 网址 | 文本型 | | | | 提交信息 | 文本型 | | | | 提交Cookies | 文本型 | | | | 提交字节集 | 字节集 | | | | 附加协议头 | 文本型 | | | | 返回协议头 | 文本型 | | | | 禁止重定向 | 逻辑型 | | | | 返回重定向 | 文本型 | | | | 超时 | 整数型 | | | | 状态 | 整数型 | | | | 代理地址 | 文本型 | | | | 用户名 | 文本型 | | | | 密码 | 文本型 | | | | 自动获取代理 | 逻辑型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 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) 置入代码 ({ 139, 69, 8, 3, 69, 12, 201, 194, 8, 0 }) 返回 (0) 置入代码 ({ 139, 69, 8, 43, 69, 12, 201, 194, 8, 0 }) 返回 (0) |
UpH | 逻辑型 | | |
Headers | 文本型 | | | | 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, , 假) 如果 (_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)
<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>
|