| <?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); | 
|     } | 
| } |