華為、小米、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的沒踩什么坑,簽名方法也比較簡單。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM