企业vx应用接收用户消息api帮助文档 连接是api文档
下面代码是易语言解密接收到的api信息的核心子程序
|
回调验证解密 | 文本型 | | |
类型 | 文本型 | | | | Token | 文本型 | | | | EncodingAESKey | 文本型 | | | | CorpId | 文本型 | | | | url | 文本型 | | | | 待解密文本 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | Url_msg_signature | 文本型 | | | Url_timestamp | 文本型 | | | Url_nonce | 文本型 | | | Url_echostr | 文本型 | | | echostr | 文本型 | | | AESKEY | 字节集 | | | aes_msg | 字节集 | | | rand_msg | 字节集 | | | 签名 | 文本型 | | | 数据长度 | 整数型 | | | 返回数据 | 文本型 | | |
Url_msg_signature = 取Url参数 (url, “msg_signature”)Url_timestamp = 取Url参数 (url, “timestamp”)Url_nonce = 取Url参数 (url, “nonce”)Url_echostr = 编码_URL解码 (取Url参数 (url, “echostr”)) AESKEY = 编码_BASE64解码 (EncodingAESKey + “=”, )判断 (类型 = “GET”)echostr = Url_echostr aes_msg = 编码_BASE64解码 (Url_echostr, )判断 (类型 = “POST”)echostr = 待解密文本 aes_msg = 编码_BASE64解码 (待解密文本, )echostr = “”输出调试文本 (“密文 :” + echostr )签名 = 计算签名 (Token, Url_timestamp, Url_nonce, echostr )输出调试文本 (“签名:” + 签名 )输出调试文本 (“第二次Url_msg_signature:” + Url_msg_signature )如果真 (签名 ≠ Url_msg_signature )输出调试文本 (“签名验证错误!”)返回 (“-40001”)rand_msg = 对称解密 (aes_msg, AESKEY, #对称算法_AES_256_CBC, #数据填充_PKCS7_PADDING, 取字节集左边 (AESKEY, 16 )) 数据长度 = 反转整数字节序 (取字节集数据 (取字节集中间 (rand_msg, 17, 4 ), #整数型, )) 输出调试文本 (“数据长度:” + 到文本 (数据长度 )) 返回数据 = 编码_Utf8到Ansi (取字节集中间 (rand_msg, 21, 数据长度 )) 输出调试文本 (“回调验证解密返回数据:” + 返回数据 )返回 (返回数据 )|
计算签名 | 文本型 | | |
token | 文本型 | | | | timestamp | 文本型 | | | | nonce | 文本型 | | | | encrypt | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 数组 | 文本型 | | 0 | 计数 | 整数型 | | | 文本 | 文本型 | | | 签名文本 | 文本型 | | | 加入成员 (数组, token )加入成员 (数组, timestamp )加入成员 (数组, nonce )加入成员 (数组, encrypt )数组_排序 (数组, )计次循环首 (取数组成员数 (数组 ), 计数 )文本 = 文本 + 数组 [计数 ]计次循环尾 ()输出调试文本 (“签名文本:” + 文本 )签名文本 = 校验_取sha1 (到字节集 (文本 )) 输出调试文本 (“签名结果:” + 签名文本 )返回 (签名文本 )Js. 创建 (“ScriptControl”, )Js. 写属性 (“Language”, “JsCript”)Js. 通用方法 (“AddCode”, 到文本 ({ 102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 85, 114, 108, 80, 97, 114, 97, 109, 40, 99, 44, 97, 41, 123, 118, 97, 114, 32, 101, 61, 99, 46, 115, 117, 98, 115, 116, 114, 105, 110, 103, 40, 99, 46, 105, 110, 100, 101, 120, 79, 102, 40, 34, 63, 34, 41, 43, 49, 41, 59, 101, 61, 101, 46, 115, 112, 108, 105, 116, 40, 34, 38, 34, 41, 59, 118, 97, 114, 32, 100, 61, 123, 125, 59, 102, 111, 114, 40, 118, 97, 114, 32, 98, 61, 48, 59, 98, 60, 101, 46, 108, 101, 110, 103, 116, 104, 59, 98, 43, 43, 41, 123, 100, 91, 101, 91, 98, 93, 46, 115, 112, 108, 105, 116, 40, 34, 61, 34, 41, 91, 48, 93, 93, 61, 101, 91, 98, 93, 46, 115, 112, 108, 105, 116, 40, 34, 61, 34, 41, 91, 49, 93, 125, 114, 101, 116, 117, 114, 110, 32, 100, 91, 97, 93, 125, 59 })) 返回 (Js. 文本方法 (“Run”, “getUrlParam”, 请求地址, 参数名称 ))
|