Jiuzi.php 3.29 KB
Newer Older
zazaname's avatar
zazaname committed
1 2 3 4 5 6 7 8 9 10 11 12
<?php

namespace App\Http\InterfaceClass\SdkImpl;

use App\Http\InterfaceClass\ISdkFactory;
use Illuminate\Support\Facades\Log;
use WpOrg\Requests\Requests;

class Jiuzi implements ISdkFactory
{

    // 登录接口
zazaname's avatar
zazaname committed
13
    protected $login_url = "http://dev-h5sdk.humaiyouxi.com/auth/checktoken";
zazaname's avatar
zazaname committed
14 15 16 17 18 19 20 21 22 23

    /**
     * 登录
     * @param $verInfo 渠道表信息
     * @param $gameInfo 游戏表信息
     * @param $request request 参数
     * @return array
     */
    public function login($verInfo,$gameInfo, $request): array
    {
zazaname's avatar
zazaname committed
24
        $ver_info = is_array($request['ver_info']) ?: json_decode($request['ver_info'],true);
zazaname's avatar
zazaname committed
25 26
        //获取请求参数
        $postParam = [
zazaname's avatar
zazaname committed
27 28
            'uid' => $ver_info['uid'],
            'access_token' => $ver_info['token'],
zazaname's avatar
zazaname committed
29 30 31 32
            'gid' => $verInfo->ver_appid,
            'version' => $request['unionId'] ?? 1,
        ];
        //请求url,获取返回值
zazaname's avatar
zazaname committed
33
        $response = Requests::post($this->login_url,[],$postParam)->body;
zazaname's avatar
zazaname committed
34
        dingdingLog($response);
zazaname's avatar
zazaname committed
35 36 37 38
        //是否验证成功
        $response_arr = json_decode($response,true);
        if ($response_arr['statusCode'] === 200) {
            // 用类标识_渠道userid 标识为融合账号
zazaname's avatar
zazaname committed
39 40
            $uname = $verInfo->ver."_".$response_arr['data']['user_id'];
            return ['ver_user_id' => $response_arr['data']['user_id'],'uname'=>$uname];
zazaname's avatar
zazaname committed
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
        } 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'],
zazaname's avatar
zazaname committed
68
            'channel_order_id' => $request['channel_order_id'],
zazaname's avatar
zazaname committed
69 70 71 72
            'result' => $this->result('200','发货成功',$request['order_num'])
        ];
    }

zazaname's avatar
zazaname committed
73 74 75 76 77 78 79 80 81 82 83
    /**
     * 创建订单号
     * @param $verInfo
     * @param $gameInfo
     * @param $request
     * @return array
     */
    public function createOrder($verInfo,$gameInfo, $request): string{
        return '';
    }

zazaname's avatar
zazaname committed
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
    /**
     * 按渠道的格式返回
     * @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
           ],
        ];
    }


}