YY官网充值接口逆向实现个人收款

文章目录

概要

因为有客户有这种需求 可以通过调用yy的接口来实现收款变现

今天就来给大家分析一下流程

流程

 这就是yy官网的一个购买电子卡的页面

通过f12审查元素可以发现有一个加密参数sign

断点找到sign具体位置

往上定位到具体加密位置

 到此sign解密结束 即为md5加密turnover和data的内容

$data = '{"version":0,"appId":62,"cmd":1022,"jsonMsg":{"cmd":1022,"actionId":70,"currencyType":0,"payChannel":"Zfb","payMethod":"Wap","amount":10,"needUnicast":true,"returnUrl":"www.baidu.com","expand":"{\"orderInfo\":{\"productNum\":1,\"productConfigId\":62000002}}","uid":"2954250643","appId":62,"usedChannel":10000,"seq":1706086270955}}';
$sign = md5('turnover'+$data)
        switch ($money) {
            case ($money % 10 == 0 && $money / 10 > 0 && $money / 10 < 11):
                $productNum = intval($money / 10);
                $productConfigId = 62000002;
                break;
            case ($money % 30 == 0 && $money / 30 > 0 && $money / 30 < 11):
                $productNum = intval($money / 30);
                $productConfigId = 62000003;
                break;
            case ($money % 50 == 0 && $money / 50 > 0 && $money / 50 < 11):
                $productNum = intval($money / 50);
                $productConfigId = 62000004;
                break;
            case ($money % 100 == 0 && $money / 100 > 0 && $money / 100 < 11):
                $productNum = intval($money / 100);
                $productConfigId = 62000005;
                break;
            default:
                $this->success('1015', null, '订单创建失败(错误信息:只支持10 30 50 100的倍数(1-10倍))');
                break;
        }
        
        $uid = getSubstr($atad['ck'], 'yyuid=', ';');
        if($uid == ""){
            $allck = explode(";",$atad['ck']);
            foreach ($allck as $key => $value){
                $expck = explode("=",$value);
                if($expck[0] == 'yyuid'){
                    $uid = $expck[1];
                }
            }
        }
        list($msec, $sec) = explode(' ', microtime());
        $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
        $data = '{"version":0,"appId":62,"cmd":1022,"jsonMsg":{"cmd":1022,"actionId":70,"currencyType":0,"payChannel":"Zfb","payMethod":"Wap","amount":'.$money.',"needUnicast":true,"returnUrl":"www.baidu.com","expand":"{\"orderInfo\":{\"productNum\":'.$productNum.',\"productConfigId\":'.$productConfigId.'}}","uid":"'.$uid.'","appId":62,"usedChannel":10000,"seq":'.$msectime.'}}';
        $sign = md5('turnover'.$data);
        $delimiter = '----WebKitFormBoundary3BBO8752D6MoAA9B';
        $param['appId'] = '62';
        $param['cmd'] = '1022';
        $param['sign'] = $sign;
        $param['data'] = $data;
        $post_data = '';
        foreach ($param as $name => $content) {
            $post_data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
                . $content . "\r\n";
        }
        $post_data .= "--" . $delimiter;
        $header = [
            'content-type: multipart/form-data; boundary='.$delimiter,
            'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
            'origin: https://web.yy.com',
            'referer: https://web.yy.com/',
            'cookie: '.$atad['ck'],
    	];
        $url = 'https://turnover.yy.com/api/62/1022';
        $ret = curl_post($url,$post_data,$header,$atad['ck']);
        $json=json_decode($ret,TRUE);
        if($json['result'] != 1){
            return $this->getReturn(-1, $atad['typec_name'].'订单拉起失败!');
        }
        $json = json_decode($json['jsonMsg'],TRUE);
        $atad['pay_id'] = $json['orderId'];//通道订单号
        $atad['mid_url'] = $json['payUrl'];//通道二维码
        return $this->getReturn(1, $atad, $atad['data']);

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
根据提供的引用内容,我无法直接回答您的问题。引用提到了DES加密算法,它是一种对称加密算法,需要使用相同的密钥进行加密和解密。引用提到了拼多多的API解密和JS逆向安全控制实现。然而,您的问题是关于加密算法JS逆向安全控制实现的,而不是关于DES加密算法或拼多多API解密的。 对于加密算法JS逆向安全控制实现的问题,我可以提供一些一般性的信息和建议: 1. JS逆向工程:JS逆向工程是指通过分析和破解JavaScript代码来获取其内部逻辑和实现细节。这可以帮助您理解加密算法的实现方式和安全控制措施。 2. 安全控制实现:在加密算法中,安全控制是指保护密钥和加密数据的措施。这包括密钥管理、访问控制、防止信息泄露等方面的措施。在实现加密算法时,需要考虑这些安全控制措施以确保数据的安全性。 3. 加密算法选择:选择适合您需求的加密算法是非常重要的。不同的加密算法具有不同的安全性和性能特点。您可以根据您的具体需求选择合适的加密算法。 4. 密钥管理:密钥管理是加密算法中的一个重要方面。确保密钥的安全性和合理的密钥分发、存储和更新策略是保护加密数据的关键。 5. 安全审计和漏洞修复:定期进行安全审计和漏洞修复是保持加密算法的安全性的重要步骤。及时发现和修复潜在的安全漏洞可以防止攻击者利用这些漏洞来破解加密算法。 请注意,以上是一般性的信息和建议,具体的加密算法JS逆向安全控制实现需要根据具体情况进行详细分析和设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

解忧科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值