<?php

namespace App\Http\Manager;

use App\Http\InterfaceClass\ISdkFactory;
use App\Models\ChannelGame;
use Exception;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\App;
use RuntimeException;

class SdkManager
{

    /**
     * 登录
     * @param $verInfo
     * @param $gameInfo
     * @param $params
     * @return array
     */
    public function login( $verInfo,  $gameInfo, $params): array
    {
        $channelClass = ucfirst($verInfo->ver_class);
        try {
            /** @var ISdkFactory $sdkObj */
            $sdkFileClass = "App\\Http\\InterfaceClass\\SdkImpl\\{$channelClass}";
            $sdkObj = new $sdkFileClass;

            if (!$sdkObj instanceof ISdkFactory) {
                throw new RuntimeException($channelClass . '不是ISdkFactory子类!');
            }
        } catch (Exception $e) {
            $msg = '创建' . $channelClass . '类失败!';
            throw new RuntimeException($msg);
        }
        return $sdkObj->login($verInfo,$gameInfo, $params);
    }

    /**
     * 支付
     * @param $verInfo
     * @param $gameInfo
     * @param $params
     * @return array
     */
    public function pay($verInfo,  $gameInfo, $params): array
    {
        $channelClass = ucfirst($verInfo->ver_class);
        try {
            /** @var ISdkFactory $sdkObj */
            $sdkFileClass = "App\\Http\\InterfaceClass\\SdkImpl\\{$channelClass}";
            $sdkObj = new $sdkFileClass;

            if (!$sdkObj instanceof ISdkFactory) {
                throw new RuntimeException($channelClass . '不是ISdkFactory子类!');
            }
        } catch (Exception $e) {
            $msg = '创建' . $channelClass . '类失败!';
            throw new RuntimeException($msg);
        }
        return $sdkObj->pay($verInfo,$gameInfo, $params);
    }


}