App\Http\Controllers\AccountGatewayController::setupWePay PHP Method

setupWePay() protected method

protected setupWePay ( $accountGateway, &$response )
    protected function setupWePay($accountGateway, &$response)
    {
        $user = Auth::user();
        $account = $user->account;
        $rules = ['company_name' => 'required', 'tos_agree' => 'required', 'first_name' => 'required', 'last_name' => 'required', 'email' => 'required'];
        if (WEPAY_ENABLE_CANADA) {
            $rules['country'] = 'required|in:US,CA';
        }
        $validator = Validator::make(Input::all(), $rules);
        if ($validator->fails()) {
            return Redirect::to('gateways/create')->withErrors($validator)->withInput();
        }
        try {
            $wepay = Utils::setupWePay();
            $userDetails = ['client_id' => WEPAY_CLIENT_ID, 'client_secret' => WEPAY_CLIENT_SECRET, 'email' => Input::get('email'), 'first_name' => Input::get('first_name'), 'last_name' => Input::get('last_name'), 'original_ip' => \Request::getClientIp(true), 'original_device' => \Request::server('HTTP_USER_AGENT'), 'tos_acceptance_time' => time(), 'redirect_uri' => URL::to('gateways'), 'scope' => 'manage_accounts,collect_payments,view_user,preapprove_payments,send_money'];
            $wepayUser = $wepay->request('user/register/', $userDetails);
            $accessToken = $wepayUser->access_token;
            $accessTokenExpires = $wepayUser->expires_in ? time() + $wepayUser->expires_in : null;
            $wepay = new WePay($accessToken);
            $accountDetails = ['name' => Input::get('company_name'), 'description' => trans('texts.wepay_account_description'), 'theme_object' => json_decode(WEPAY_THEME), 'callback_uri' => $accountGateway->getWebhookUrl()];
            if (WEPAY_ENABLE_CANADA) {
                $accountDetails['country'] = Input::get('country');
                if (Input::get('country') == 'CA') {
                    $accountDetails['currencies'] = ['CAD'];
                    $accountDetails['country_options'] = ['debit_opt_in' => boolval(Input::get('debit_cards'))];
                }
            }
            $wepayAccount = $wepay->request('account/create/', $accountDetails);
            try {
                $wepay->request('user/send_confirmation/', []);
                $confirmationRequired = true;
            } catch (\WePayException $ex) {
                if ($ex->getMessage() == 'This access_token is already approved.') {
                    $confirmationRequired = false;
                } else {
                    throw $ex;
                }
            }
            $accountGateway->gateway_id = GATEWAY_WEPAY;
            $accountGateway->setConfig(['userId' => $wepayUser->user_id, 'accessToken' => $accessToken, 'tokenType' => $wepayUser->token_type, 'tokenExpires' => $accessTokenExpires, 'accountId' => $wepayAccount->account_id, 'state' => $wepayAccount->state, 'testMode' => WEPAY_ENVIRONMENT == WEPAY_STAGE, 'country' => WEPAY_ENABLE_CANADA ? Input::get('country') : 'US']);
            if ($confirmationRequired) {
                Session::flash('message', trans('texts.created_wepay_confirmation_required'));
            } else {
                $updateUri = $wepay->request('/account/get_update_uri', ['account_id' => $wepayAccount->account_id, 'redirect_uri' => URL::to('gateways')]);
                $response = Redirect::to($updateUri->uri);
                return true;
            }
            $response = Redirect::to("gateways/{$accountGateway->public_id}/edit");
            return true;
        } catch (\WePayException $e) {
            Session::flash('error', $e->getMessage());
            $response = Redirect::to('gateways/create')->withInput();
            return false;
        }
    }