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