小游戏支付提供玩家在小游戏中购买道具的能力
以下代码是实现预下单与回调时的签名,具体可以查看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);
}
网友评论