开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 795|回复: 13
收起左侧

[已解决] php转换易

 关闭 [复制链接]
结帖率:100% (9/9)
发表于 2023-2-13 20:53:52 | 显示全部楼层 |阅读模式   河南省南阳市
50精币
大佬们能帮忙转换成易的嘛十分感谢


<?php$appKey = "xinyaoya"; //插件的APPKEY$data = json_decode((string)$_POST['data'], true); //数据包//验证签名function generateSignature(array $data, $appKey): string{    unset($data['sign']);    ksort($data);    foreach ($data as $key => $val) {        if ($val === '') {            unset($data[$key]);        }    }    return md5(urldecode(http_build_query($data) . "&key=" . (string)$appKey));}//这里签名验证仅仅是作为演示,当然你如果有自己的验证方式,可以不采取这种验证//但是安全还是要做好,推荐使用这种方式进行验证if (generateSignature($_POST, $appKey) != $_POST['sign']) {    exit('{"code":"1","msg":"sign error"}');}












测试了服务器接受到的信息是
data=%7B%22commodity%22%3A%7B%22id%22%3A9%2C%22category_id%22%3A2%2C%22name%22%3A%22esfd%22%2C%22description%22%3A%22%3Cp%3Ece%3C%2Fp%3E%3Cp%3E%E6%B5%8B%E8%AF%95%3C%2Fp%3E%22%2C%22cover%22%3A%22%2Fassets%2Fcache%2Fimages%2F202302080942498715246.png%22%2C%22factory_price%22%3A1%2C%22price%22%3A0%2C%22user_price%22%3A0%2C%22status%22%3A1%2C%22owner%22%3A0%2C%22create_time%22%3A%222023-02-13+18%3A33%3A10%22%2C%22api_status%22%3A0%2C%22code%22%3A%2233715A1B1ED09C3E%22%2C%22delivery_way%22%3A0%2C%22delivery_auto_mode%22%3A0%2C%22delivery_message%22%3A%22%22%2C%22contact_type%22%3A3%2C%22password_status%22%3A0%2C%22sort%22%3A0%2C%22coupon%22%3A0%2C%22shared_id%22%3Anull%2C%22shared_code%22%3A%22%22%2C%22shared_premium%22%3A0%2C%22shared_premium_type%22%3A0%2C%22seckill_status%22%3A0%2C%22seckill_start_time%22%3Anull%2C%22seckill_end_time%22%3Anull%2C%22draft_status%22%3A0%2C%22draft_premium%22%3A0%2C%22inventory_hidden%22%3A0%2C%22leave_message%22%3Anull%2C%22recommend%22%3A0%2C%22send_email%22%3A0%2C%22only_user%22%3A0%2C%22purchase_count%22%3A0%2C%22widget%22%3A%22%5B%5D%22%2C%22level_price%22%3Anull%2C%22level_disable%22%3A0%2C%22minimum%22%3A0%2C%22maximum%22%3A0%2C%22shared_sync%22%3A0%2C%22config%22%3A%22%22%2C%22hide%22%3A0%2C%22extend%22%3A%22%7B%5C%22name%5C%22%3A%5C%22name%5C%22%7D%22%2C%22api_headers%22%3A%22%7B%7D%22%2C%22api_extend%22%3A%22%7B%5C%22QQ%5C%22%3A%5C%22name%5C%22%7D%22%2C%22api_url%22%3A%22http%3A%2F%2F106.54.51.141%3A1211%22%2C%22api_key%22%3A%22xinyaoya%22%2C%22api_identifier%22%3A%22code%22%2C%22api_success%22%3A%22100%22%2C%22api_success_text%22%3A%22msg%22%2C%22api_failure_text%22%3A%22%E8%BF%9E%E6%8E%A5%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%94%99%E8%AF%AF%EF%BC%8C%E8%AF%B7%E8%81%94%E7%B3%BB82152013%E5%87%BA%E6%9D%A5%22%2C%22api_request_type%22%3A%221%22%2C%22api_sign_type%22%3A%220%22%2C%22api_num%22%3A%220%22%2C%22api_success_type%22%3A%221%22%2C%22api_failure_type%22%3A%220%22%2C%22shared%22%3Anull%7D%2C%22order%22%3A%7B%22widget%22%3A%22%5B%5D%22%2C%22owner%22%3A0%2C%22trade_no%22%3A%22146230213203106280%22%2C%22amount%22%3A0%2C%22commodity_id%22%3A9%2C%22pay_id%22%3A9%2C%22create_time%22%3A%222023-02-13+20%3A31%3A06%22%2C%22create_ip%22%3A%22182.126.159.51%22%2C%22create_device%22%3A0%2C%22status%22%3A1%2C%22contact%22%3A%2282152013%40qq.com%22%2C%22delivery_status%22%3A1%2C%22card_num%22%3A1%2C%22user_id%22%3A0%2C%22rent%22%3A1%2C%22password%22%3A%22yaoyaoya%22%2C%22id%22%3A111%2C%22pay_time%22%3A%222023-02-13+20%3A31%3A06%22%2C%22secret%22%3A%2222222%22%2C%22commodity%22%3A%7B%22id%22%3A9%2C%22category_id%22%3A2%2C%22name%22%3A%22esfd%22%2C%22description%22%3A%22%3Cp%3Ece%3C%2Fp%3E%3Cp%3E%E6%B5%8B%E8%AF%95%3C%2Fp%3E%22%2C%22cover%22%3A%22%2Fassets%2Fcache%2Fimages%2F202302080942498715246.png%22%2C%22factory_price%22%3A1%2C%22price%22%3A0%2C%22user_price%22%3A0%2C%22status%22%3A1%2C%22owner%22%3A0%2C%22create_time%22%3A%222023-02-13+18%3A33%3A10%22%2C%22api_status%22%3A0%2C%22code%22%3A%2233715A1B1ED09C3E%22%2C%22delivery_way%22%3A0%2C%22delivery_auto_mode%22%3A0%2C%22delivery_message%22%3A%22%22%2C%22contact_type%22%3A3%2C%22password_status%22%3A0%2C%22sort%22%3A0%2C%22coupon%22%3A0%2C%22shared_id%22%3Anull%2C%22shared_code%22%3A%22%22%2C%22shared_premium%22%3A0%2C%22shared_premium_type%22%3A0%2C%22seckill_status%22%3A0%2C%22seckill_start_time%22%3Anull%2C%22seckill_end_time%22%3Anull%2C%22draft_status%22%3A0%2C%22draft_premium%22%3A0%2C%22inventory_hidden%22%3A0%2C%22leave_message%22%3Anull%2C%22recommend%22%3A0%2C%22send_email%22%3A0%2C%22only_user%22%3A0%2C%22purchase_count%22%3A0%2C%22widget%22%3A%22%5B%5D%22%2C%22level_price%22%3Anull%2C%22level_disable%22%3A0%2C%22minimum%22%3A0%2C%22maximum%22%3A0%2C%22shared_sync%22%3A0%2C%22config%22%3A%22%22%2C%22hide%22%3A0%2C%22extend%22%3A%22%7B%5C%22name%5C%22%3A%5C%22name%5C%22%7D%22%2C%22api_headers%22%3A%22%7B%7D%22%2C%22api_extend%22%3A%22%7B%5C%22QQ%5C%22%3A%5C%22name%5C%22%7D%22%2C%22api_url%22%3A%22http%3A%2F%2F106.54.51.141%3A1211%22%2C%22api_key%22%3A%22xinyaoya%22%2C%22api_identifier%22%3A%22code%22%2C%22api_success%22%3A%22100%22%2C%22api_success_text%22%3A%22msg%22%2C%22api_failure_text%22%3A%22%E8%BF%9E%E6%8E%A5%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%94%99%E8%AF%AF%EF%BC%8C%E8%AF%B7%E8%81%94%E7%B3%BB82152013%E5%87%BA%E6%9D%A5%22%2C%22api_request_type%22%3A%221%22%2C%22api_sign_type%22%3A%220%22%2C%22api_num%22%3A%220%22%2C%22api_success_type%22%3A%221%22%2C%22api_failure_type%22%3A%220%22%2C%22shared%22%3Anull%7D%2C%22card%22%3Anull%2C%22user%22%3Anull%2C%22promote%22%3Anull%2C%22pay%22%3A%7B%22id%22%3A9%2C%22name%22%3A%22%E6%94%AF%E4%BB%98%E5%AE%9D%22%2C%22icon%22%3A%22%2Fassets%2Fcache%2Fimages%2F202302080948512244619.png%22%2C%22code%22%3A%22alipay%22%2C%22commodity%22%3A1%2C%22recharge%22%3A1%2C%22create_time%22%3A%222023-02-08+09%3A49%3A02%22%2C%22handle%22%3A%22Epay%22%2C%22sort%22%3A0%2C%22equipment%22%3A0%2C%22cost%22%3A0%2C%22cost_type%22%3A0%7D%7D%2C%22pay%22%3A%7B%22id%22%3A9%2C%22name%22%3A%22%E6%94%AF%E4%BB%98%E5%AE%9D%22%2C%22icon%22%3A%22%2Fassets%2Fcache%2Fimages%2F202302080948512244619.png%22%2C%22code%22%3A%22alipay%22%2C%22commodity%22%3A1%2C%22recharge%22%3A1%2C%22create_time%22%3A%222023-02-08+09%3A49%3A02%22%2C%22handle%22%3A%22Epay%22%2C%22sort%22%3A0%2C%22equipment%22%3A0%2C%22cost%22%3A0%2C%22cost_type%22%3A0%7D%7D&QQ=name&sign=e7f184c98e0080816108482c48079fe6



实在不知道怎么验证了

最佳答案

查看完整内容

//验证签名 function generateSignature(array $data, $appKey): string { unset($data['sign']);//客户端提交过来的sign参数不参与计算签名,剔除 ksort($data);//将剩余的数据按键值名排序,一般为升序 //下面这个循环则是循环判断所有的值是否为空 foreach ($data as $key => $val) { if ($val === '') { unset($data[$key]);//如果值为空,则剔除 } } //只有这一步是关键, ...

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

签到天数: 2 天

发表于 2023-2-13 20:53:53 | 显示全部楼层   山东省泰安市
yaoyao2011 发表于 2023-2-14 18:03
sign=e7f184c98e0080816108482c48079fe6    主要不知道这个是怎么生成的,不然没办法验证呀 ...

//验证签名
function generateSignature(array $data, $appKey): string
{
    unset($data['sign']);//客户端提交过来的sign参数不参与计算签名,剔除
    ksort($data);//将剩余的数据按键值名排序,一般为升序
    //下面这个循环则是循环判断所有的值是否为空
    foreach ($data as $key => $val) {
        if ($val === '') {
            unset($data[$key]);//如果值为空,则剔除
        }
    }
//只有这一步是关键,1、显示通过http_build_query将整理后的data生成 url-encoded 之后的请求字符串
                                2、再次组合,请求字符串+&key=xinyaoya
                                3、通过urldecode()将上面的组合的数据串解码。
                                4、md5(),取数据摘要。这个结果就是最终的验证码
                                5、返回 验证码
    return md5(urldecode(http_build_query($data) . "&key=" . (string)$appKey));
}

这就是实现逻辑,,你用易语言实现就可以了
回复

使用道具 举报

头像被屏蔽
结帖率:85% (51/60)
发表于 2023-2-13 21:50:29 | 显示全部楼层   内蒙古自治区通辽市
什么东西 ?post和json编码请求啊?
回复

使用道具 举报

结帖率:100% (9/9)
 楼主| 发表于 2023-2-13 21:56:40 | 显示全部楼层   河南省南阳市
yu4259534 发表于 2023-2-13 21:50
什么东西 ?post和json编码请求啊?

https://ka.xiyaomonv.com/app/Plugin/CommodityAPI/Wiki/Index.html#/这个上面的签名验证。
回复

使用道具 举报

结帖率:100% (83/83)

签到天数: 18 天

发表于 2023-2-14 01:17:13 | 显示全部楼层   湖北省咸宁市
echo urldecode(http_build_query($data) . "&key=" . (string)$appKey)

打印一下参数不就知道了
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 2 天

发表于 2023-2-14 17:41:03 | 显示全部楼层   山东省泰安市
这样的数据你是不是可以看明白了!!

data={"commodity":{"id":9,"category_id":2,"name":"esfd","description":"<p>ce</p><p>测试</p>","cover":"/assets/cache/images/202302080942498715246.png","factory_price":1,"price":0,"user_price":0,"status":1,"owner":0,"create_time":"2023-02-13+18:33:10","api_status":0,"code":"33715A1B1ED09C3E","delivery_way":0,"delivery_auto_mode":0,"delivery_message":"","contact_type":3,"password_status":0,"sort":0,"coupon":0,"shared_id":null,"shared_code":"","shared_premium":0,"shared_premium_type":0,"seckill_status":0,"seckill_start_time":null,"seckill_end_time":null,"draft_status":0,"draft_premium":0,"inventory_hidden":0,"leave_message":null,"recommend":0,"send_email":0,"only_user":0,"purchase_count":0,"widget":"[]","level_price":null,"level_disable":0,"minimum":0,"maximum":0,"shared_sync":0,"config":"","hide":0,"extend":"{\"name\":\"name\"}","api_headers":"{}","api_extend":"{\"QQ\":\"name\"}","api_url":"http://106.54.51.141:1211","api_key":"xinyaoya","api_identifier":"code","api_success":"100","api_success_text":"msg","api_failure_text":"连接服务器错误,请联系82152013出来","api_request_type":"1","api_sign_type":"0","api_num":"0","api_success_type":"1","api_failure_type":"0","shared":null},"order":{"widget":"[]","owner":0,"trade_no":"146230213203106280","amount":0,"commodity_id":9,"pay_id":9,"create_time":"2023-02-13+20:31:06","create_ip":"182.126.159.51","create_device":0,"status":1,"contact":"82152013@qq.com","delivery_status":1,"card_num":1,"user_id":0,"rent":1,"password":"yaoyaoya","id":111,"pay_time":"2023-02-13+20:31:06","secret":"22222","commodity":{"id":9,"category_id":2,"name":"esfd","description":"<p>ce</p><p>测试</p>","cover":"/assets/cache/images/202302080942498715246.png","factory_price":1,"price":0,"user_price":0,"status":1,"owner":0,"create_time":"2023-02-13+18:33:10","api_status":0,"code":"33715A1B1ED09C3E","delivery_way":0,"delivery_auto_mode":0,"delivery_message":"","contact_type":3,"password_status":0,"sort":0,"coupon":0,"shared_id":null,"shared_code":"","shared_premium":0,"shared_premium_type":0,"seckill_status":0,"seckill_start_time":null,"seckill_end_time":null,"draft_status":0,"draft_premium":0,"inventory_hidden":0,"leave_message":null,"recommend":0,"send_email":0,"only_user":0,"purchase_count":0,"widget":"[]","level_price":null,"level_disable":0,"minimum":0,"maximum":0,"shared_sync":0,"config":"","hide":0,"extend":"{\"name\":\"name\"}","api_headers":"{}","api_extend":"{\"QQ\":\"name\"}","api_url":"http://106.54.51.141:1211","api_key":"xinyaoya","api_identifier":"code","api_success":"100","api_success_text":"msg","api_failure_text":"连接服务器错误,请联系82152013出来","api_request_type":"1","api_sign_type":"0","api_num":"0","api_success_type":"1","api_failure_type":"0","shared":null},"card":null,"user":null,"promote":null,"pay":{"id":9,"name":"zfb","icon":"/assets/cache/images/202302080948512244619.png","code":"alipay","commodity":1,"recharge":1,"create_time":"2023-02-08+09:49:02","handle":"Epay","sort":0,"equipment":0,"cost":0,"cost_type":0}},"pay":{"id":9,"name":"zfb","icon":"/assets/cache/images/202302080948512244619.png","code":"alipay","commodity":1,"recharge":1,"create_time":"2023-02-08+09:49:02","handle":"Epay","sort":0,"equipment":0,"cost":0,"cost_type":0}}&QQ=name&sign=e7f184c98e0080816108482c48079fe6
回复

使用道具 举报

结帖率:100% (9/9)
 楼主| 发表于 2023-2-14 18:03:37 | 显示全部楼层   河南省南阳市
kic1234 发表于 2023-2-14 17:41
这样的数据你是不是可以看明白了!!

data={"commodity":{"id":9,"category_id":2,"name":"esfd","descrip ...

sign=e7f184c98e0080816108482c48079fe6    主要不知道这个是怎么生成的,不然没办法验证呀
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 2 天

发表于 2023-2-14 18:19:04 | 显示全部楼层   山东省泰安市
它这个函数的实现逻辑如下:
//验证签名
function generateSignature(array $data, $appKey): string
{
    unset($data['sign']);//客户端提交过来的sign参数不参与计算签名,剔除
    ksort($data);//将剩余的数据按键值名排序,一般为升序
    //下面这个循环则是循环判断所有的值是否为空
    foreach ($data as $key => $val) {
        if ($val === '') {
            unset($data[$key]);//如果值为空,则剔除
        }
    }
//只有这一步是关键,1、显示通过http_build_query将整理后的data生成 url-encoded 之后的请求字符串
                                2、再次组合,请求字符串+&key=xinyaoya
                                3、通过urldecode()将上面的组合的数据串解码。
                                4、md5(),取数据摘要。这个结果就是最终的验证码
                                5、返回 验证码
    return md5(urldecode(http_build_query($data) . "&key=" . (string)$appKey));
}

你按易语言实现就可以了
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 2 天

发表于 2023-2-14 18:19:49 | 显示全部楼层   山东省泰安市
//验证签名
function generateSignature(array $data, $appKey): string
{
    unset($data['sign']);//客户端提交过来的sign参数不参与计算签名,剔除
    ksort($data);//将剩余的数据按键值名排序,一般为升序
    //下面这个循环则是循环判断所有的值是否为空
    foreach ($data as $key => $val) {
        if ($val === '') {
            unset($data[$key]);//如果值为空,则剔除
        }
    }
//只有这一步是关键,1、显示通过http_build_query将整理后的data生成 url-encoded 之后的请求字符串
                                2、再次组合,请求字符串+&key=xinyaoya
                                3、通过urldecode()将上面的组合的数据串解码。
                                4、md5(),取数据摘要。这个结果就是最终的验证码
                                5、返回 验证码
    return md5(urldecode(http_build_query($data) . "&key=" . (string)$appKey));
}

这就是实现逻辑,,你用易语言实现就可以了
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 2 天

发表于 2023-2-14 18:20:06 | 显示全部楼层   山东省泰安市
//验证签名
function generateSignature(array $data, $appKey): string
{
    unset($data['sign']);//客户端提交过来的sign参数不参与计算签名,剔除
    ksort($data);//将剩余的数据按键值名排序,一般为升序
    //下面这个循环则是循环判断所有的值是否为空
    foreach ($data as $key => $val) {
        if ($val === '') {
            unset($data[$key]);//如果值为空,则剔除
        }
    }
//只有这一步是关键,1、显示通过http_build_query将整理后的data生成 url-encoded 之后的请求字符串
                                2、再次组合,请求字符串+&key=xinyaoya
                                3、通过urldecode()将上面的组合的数据串解码。
                                4、md5(),取数据摘要。这个结果就是最终的验证码
                                5、返回 验证码
    return md5(urldecode(http_build_query($data) . "&key=" . (string)$appKey));
}

这就是实现逻辑,,你用易语言实现就可以了
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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