PHP程序员

PHP QQ小游戏支付签名

2020-09-26  本文已影响0人  php转go

小游戏支付提供玩家在小游戏中购买道具的能力
以下代码是实现预下单与回调时的签名,具体可以查看QQ小游戏支付

  /**qq小游戏预下单签名
     * @param array $data
     * @param string $session_key
     * @return string
     */
    public function setPrePaySign(array $data,string $session_key){
        unset($data['sig']);
        //1.请求方法: POST
        $str='POST&';
        //2.下单url中的path(/api/json/openApiPay/GamePrePay)部分,做标准的url Encoding,
        $path=urlencode('/api/json/openApiPay/GamePrePay');
        //3.请求参数按字典排序,并用"&"拼接, 注意空字段不参与排序
        $data=array_filter($data);
        ksort($data);
        $query=http_build_query($data);
        //4.拼接session_key,用户登录时开发者后台可以通过code2session接口获取到
        $last_str=$str.$path.'&'.$query.'&session_key='.$session_key;
        $h= hash_hmac('sha256', $last_str, $session_key,true);
        return bin2hex($h);
    }

  /**回调签名
     * @param array $data
     * @param string $session_key
     * @return string
     */
    public function setCallbackSign(array $data,string $session_key){
        unset($data['sig']);
        //1.请求方法: POST
        $str='POST&';
        //2.下单url中的path(/api/json/openApiPay/GamePrePay)部分,做标准的url Encoding,
        $path=urlencode('/pay/callback');
        //3.请求参数按字典排序,并用"&"拼接, 注意空字段不参与排序
        $data=array_filter($data);
        ksort($data);
        $query=http_build_query($data);
        //4.拼接session_key,用户登录时开发者后台可以通过code2session接口获取到
        $last_str=$str.$path.'&'.$query.'&AppSecret='.$session_key;
        $h= hash_hmac('sha256', $last_str, $session_key,true);
        return bin2hex($h);
    }

上一篇 下一篇

猜你喜欢

热点阅读