<?php
|
|
include_once '/Common/Signature.php';
|
|
/**
|
* 发送通用接口给小7服务器
|
* @param string $url 接口地址
|
* @param array $bizParams 业务参数
|
* @param string $appkey appkey
|
* @param string $prikey 我方私钥
|
* @param string $pubkey 对方公钥
|
* @param string $apiMethod 接口名称
|
* @param string $func 收到Response后要调用的函数,回调参数($response, $appkey, $prikey, $pubkey)
|
*/
|
function send_common_to_x7($url, $bizParams, $appkey, $prikey, $pubkey, $apiMethod, $func = "", $gameType = "client", $osType = "android")
|
{
|
// Request字段 类型 必选 说明
|
// bizParams String 是 业务参数,值为每个接口对应业务参数的JSON字符串
|
// apiMethod String 是 接口名称
|
// reqTime String 是 请求时间,格式使用ISO8601规范,示例:2022-06-29T15:08:44+0800
|
// appkey String 是 游戏appkey,如果双端使用相同appkey接入,osType字段必传
|
// gameType String 是 游戏端类型,网游为client H5游戏为 h5
|
// signature String 是 请求签名(签名方式参见下文)
|
// osType String 否 系统类型,ios或android
|
|
// Response字段 类型 必选 说明
|
// bizResp String 是 响应参数,值为每个接口对应响应参数的JSON字符串
|
// apiMethod String 是 接口名称
|
// respTime String 是 响应时间,格式使用ISO8601规范,示例:2022-06-29T15:08:44+0800
|
// appkey String 是 游戏appkey
|
// gameType String 是 游戏端类型,网游为client H5游戏为 h5
|
// signature String 是 响应签名(签名方式参见下文)
|
// osType String 否 系统类型,ios或android
|
|
$reqTime = \CommFunc\StrDateTimeFormatConver("", DATE_ISO8601);
|
$bizParams = \CommFunc\MyJson_encode($bizParams);
|
$payload = Signature::genPayload($apiMethod, $appkey, $reqTime, $bizParams, $gameType);
|
$signature = Signature::sign($payload, $prikey);
|
$requestData = array(
|
"bizParams" => $bizParams,
|
"apiMethod" => $apiMethod,
|
"reqTime" => $reqTime,
|
"appkey" => $appkey,
|
"gameType" => $gameType,
|
"signature" => $signature,
|
"osType" => $osType,
|
);
|
|
\Logging\LogInfo("url:" . $url);
|
\Logging\LogInfo("requestData:" . print_r($requestData, true));
|
$retStr = \CommFunc\curl_post($url, $requestData, 10, true);
|
\Logging\LogInfo("retStr:" . $retStr);
|
|
$response = json_decode($retStr, true);
|
$bizResp = $response["bizResp"];
|
$apiMethod = $response["apiMethod"];
|
$respTime = $response["respTime"];
|
$appkey = $response["appkey"];
|
$gameType = $response["gameType"];
|
$signature = $response["signature"];
|
$osType = $response["osType"];
|
|
// 验签
|
$payload = Signature::genPayload($apiMethod, $appkey, $respTime, $bizResp, $gameType);
|
$verifyRet = Signature::verify($payload, $signature, $pubkey);
|
if ($verifyRet != 1) {
|
\Logging\LogError("sign_data_verify_failed verifyRet:" . $verifyRet . " payload:" . $payload);
|
return;
|
}
|
|
if ($func) {
|
$func($response, $appkey, $prikey, $pubkey);
|
}
|
}
|