<?php namespace App\Http\InterfaceClass\SdkImpl; use App\Http\InterfaceClass\ISdkFactory; use Illuminate\Support\Facades\Log; use WpOrg\Requests\Requests; class Jiuzi implements ISdkFactory { // 登录接口 protected $login_url = "http://dev-h5sdk.humaiyouxi.com/auth/checktoken"; /** * 登录 * @param $verInfo 渠道表信息 * @param $gameInfo 游戏表信息 * @param $request request 参数 * @return array */ public function login($verInfo,$gameInfo, $request): array { $ver_info = is_array($request['ver_info']) ?: json_decode($request['ver_info'],true); //获取请求参数 $postParam = [ 'uid' => $ver_info['uid'], 'access_token' => $ver_info['token'], 'gid' => $verInfo->ver_appid, 'version' => $request['unionId'] ?? 1, ]; //请求url,获取返回值 $response = Requests::post($this->login_url,[],$postParam)->body; //是否验证成功 $response_arr = json_decode($response,true); if ($response_arr['statusCode'] === 200) { // 用类标识_渠道userid 标识为融合账号 $uname = $verInfo->ver."_".$response_arr['data']['user_id']; return ['ver_user_id' => $response_arr['data']['user_id'],'uname'=>$uname]; } else { return []; } } /** * 支付验签,返回订单号等信息 * @param $gameInfo * @param array $params * @return array */ public function pay($verInfo,$gameInfo, $request): array { // 先验签 $str = "order_num={$request['order_num']}&partnerid={$request['partnerid']}&user_id={$request['user_id']}&gid={$gameInfo->ver_appid}&sid={$request['sid']}&money={$request['money']}&order_ip={$request['order_ip']}&is_test={$request['is_test']}&game_other={{$request['game_other']}}&payts={{$request['payts']}}&pay_key={$gameInfo->ver_paykey}"; Log::info("签名明文:".$str); $mySign = strtolower(md5($str)); if($mySign !== $request['sign']){ Log::info("签名失败,我方签名:{$mySign},渠道签名:{$request['sign']},渠道request参数:".var_export(request()->post(), true)); return $this->result(300,'发货失败',$request['order_num']); } Log::info("签名通过"); // 通过则返回订单号,金额[单位元] return [ 'order_id' => $request['order_num'], 'money' => $request['money'], 'result' => $this->result('200','发货成功',$request['order_num']) ]; } /** * 按渠道的格式返回 * @param $statusCode * @param $message * @param $order_id * @return array */ protected function result($statusCode,$message,$order_id){ return [ 'message' => $message, 'statusCode' => $statusCode, 'data' => [ 'order_num' => $order_id ], ]; } }