华为、小米、vivo联运游戏接入总结

华为

被华为坑得最多,都是血与泪。

登录支付的签名:

官方文档是这样写的

我按照文档的方式生成的签名一直报签名错误,各种方法都试了,最后尝试没有urlencode,结果验签通过了,文档坑人啊~ 

    /**
     * 华为签名
     */
    public function huaweiSign($params, $secret)
    {

        $sign_str = "";
        ksort($params);
        foreach ($params as $key => $value) {
            $value = urlencode($value);
            $sign_str = $sign_str . $key . "=" . $value . "&";
        }
        $sign_str = substr($sign_str, 0, -1);

        $res = "-----BEGIN RSA PRIVATE KEY-----\n" .
            wordwrap($secret, 64, "\n", true) .
            "\n-----END RSA PRIVATE KEY-----";
        $private_key = openssl_pkey_get_private($res);
        openssl_sign($sign_str, $sign, $private_key, OPENSSL_ALGO_SHA256);
        $sign = base64_encode($sign);
        openssl_free_key($private_key);

        return $sign;
    }

 

下单签名:

华为下单的时候也需要签名,这个地方又是一个坑,一开始按照上面的方法生成的签名还是有错,文档都看几遍,然后发现下单的参数里有一个urlVer参数,文档这样写

因为我一直没转换,所以签名总是不通过,这个地方不能怪文档,只能怪自己没看仔细。

小米:

登录签名,本来参数按字母顺序排序,但我刚好按照那个顺序排,就省略了这步:

        $app_key = $union_config['app_secret'];   //key

        $login_url = 'http://mis.migc.xiaomi.com/api/biz/service/loginvalidate';
        $request_params = [
            'appId' => $union_config['app_id'],
            'session' => $open_key,
            'uid' => $open_id,
        ];
        $sign_str = http_build_query($request_params);
        $request_params['signature'] = hash_hmac('sha1',$sign_str, $app_key, false);

 

支付签名,发过来的参数是encode,所以这里要decode:

        //验签
        $app_secret = $union_config['app_secret'];
        $request_signature = $params['signature']; unset($params['signature']);
        ksort($params);
        $sign_str = urldecode(http_build_query($params));
        $self_signature = hash_hmac('sha1',$sign_str, $app_secret, false);
        if ($request_signature != $self_signature){
            $result['errcode']='1525 '; $result['errMsg']='签名错误'; return $result;
        }

 

vivo的没踩什么坑,签名方法也比较简单。

转载于:https://www.cnblogs.com/zengsihua/p/9733034.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值