protected function getDatatableColumns($entityType, $hideClient) { return [['name', function ($model) { return link_to("gateways/{$model->public_id}/edit", $model->name)->toHtml(); }], ['payment_type', function ($model) { return Gateway::getPrettyPaymentType($model->gateway_id); }]]; }
private function createGateways() { $gateways = [['name' => 'BeanStream', 'provider' => 'BeanStream', 'payment_library_id' => 2], ['name' => 'Psigate', 'provider' => 'Psigate', 'payment_library_id' => 2], ['name' => 'moolah', 'provider' => 'AuthorizeNet_AIM', 'sort_order' => 1, 'recommended' => 1, 'site_url' => 'https://invoiceninja.mymoolah.com/', 'payment_library_id' => 1], ['name' => 'Alipay', 'provider' => 'Alipay_Express', 'payment_library_id' => 1], ['name' => 'Buckaroo', 'provider' => 'Buckaroo_CreditCard', 'payment_library_id' => 1], ['name' => 'Coinbase', 'provider' => 'Coinbase', 'payment_library_id' => 1], ['name' => 'DataCash', 'provider' => 'DataCash', 'payment_library_id' => 1], ['name' => 'Neteller', 'provider' => 'Neteller', 'payment_library_id' => 1], ['name' => 'Pacnet', 'provider' => 'Pacnet', 'payment_library_id' => 1], ['name' => 'PaymentSense', 'provider' => 'PaymentSense', 'payment_library_id' => 1], ['name' => 'Realex', 'provider' => 'Realex_Remote', 'payment_library_id' => 1], ['name' => 'Sisow', 'provider' => 'Sisow', 'payment_library_id' => 1], ['name' => 'Skrill', 'provider' => 'Skrill', 'payment_library_id' => 1], ['name' => 'BitPay', 'provider' => 'BitPay', 'payment_library_id' => 1], ['name' => 'Dwolla', 'provider' => 'Dwolla', 'payment_library_id' => 1]]; foreach ($gateways as $gateway) { if (!DB::table('gateways')->where('name', '=', $gateway['name'])->get()) { Gateway::create($gateway); } } }
private function createGateways() { $gateways = [['name' => 'BeanStream', 'provider' => 'BeanStream', 'payment_library_id' => 2], ['name' => 'Psigate', 'provider' => 'Psigate', 'payment_library_id' => 2], ['name' => 'moolah', 'provider' => 'AuthorizeNet_AIM', 'sort_order' => 1, 'recommended' => 1, 'site_url' => 'https://invoiceninja.mymoolah.com/', 'payment_library_id' => 1], ['name' => 'Alipay', 'provider' => 'Alipay_Express', 'payment_library_id' => 1], ['name' => 'Buckaroo', 'provider' => 'Buckaroo_CreditCard', 'payment_library_id' => 1], ['name' => 'Coinbase', 'provider' => 'Coinbase', 'payment_library_id' => 1], ['name' => 'DataCash', 'provider' => 'DataCash', 'payment_library_id' => 1], ['name' => 'Neteller', 'provider' => 'Neteller', 'payment_library_id' => 2], ['name' => 'Pacnet', 'provider' => 'Pacnet', 'payment_library_id' => 1], ['name' => 'PaymentSense', 'provider' => 'PaymentSense', 'payment_library_id' => 1], ['name' => 'Realex', 'provider' => 'Realex_Remote', 'payment_library_id' => 1], ['name' => 'Sisow', 'provider' => 'Sisow', 'payment_library_id' => 1], ['name' => 'Skrill', 'provider' => 'Skrill', 'payment_library_id' => 1], ['name' => 'BitPay', 'provider' => 'BitPay', 'payment_library_id' => 1], ['name' => 'Dwolla', 'provider' => 'Dwolla', 'payment_library_id' => 1], ['name' => 'Eway Rapid', 'provider' => 'Eway_RapidShared', 'payment_library_id' => 1], ['name' => 'AGMS', 'provider' => 'Agms', 'payment_library_id' => 1], ['name' => 'Barclays', 'provider' => 'BarclaysEpdq\\Essential', 'payment_library_id' => 1], ['name' => 'Cardgate', 'provider' => 'Cardgate', 'payment_library_id' => 1], ['name' => 'Checkout.com', 'provider' => 'CheckoutCom', 'payment_library_id' => 1], ['name' => 'Creditcall', 'provider' => 'Creditcall', 'payment_library_id' => 1], ['name' => 'Cybersource', 'provider' => 'Cybersource', 'payment_library_id' => 1], ['name' => 'ecoPayz', 'provider' => 'Ecopayz', 'payment_library_id' => 1], ['name' => 'Fasapay', 'provider' => 'Fasapay', 'payment_library_id' => 1], ['name' => 'Komoju', 'provider' => 'Komoju', 'payment_library_id' => 1], ['name' => 'Multicards', 'provider' => 'Multicards', 'payment_library_id' => 1], ['name' => 'Pagar.Me', 'provider' => 'Pagarme', 'payment_library_id' => 1], ['name' => 'Paysafecard', 'provider' => 'Paysafecard', 'payment_library_id' => 1], ['name' => 'Paytrace', 'provider' => 'Paytrace_CreditCard', 'payment_library_id' => 1], ['name' => 'Secure Trading', 'provider' => 'SecureTrading', 'payment_library_id' => 1], ['name' => 'SecPay', 'provider' => 'SecPay', 'payment_library_id' => 1], ['name' => 'WeChat Express', 'provider' => 'WeChat_Express', 'payment_library_id' => 1], ['name' => 'WePay', 'provider' => 'WePay', 'payment_library_id' => 1]]; foreach ($gateways as $gateway) { $record = Gateway::where('name', '=', $gateway['name'])->first(); if ($record) { $record->provider = $gateway['provider']; $record->save(); } else { Gateway::create($gateway); } } }
public function run() { Eloquent::unguard(); $gateways = [['name' => 'Authorize.Net AIM', 'provider' => 'AuthorizeNet_AIM', 'sort_order' => 4], ['name' => 'Authorize.Net SIM', 'provider' => 'AuthorizeNet_SIM', 'payment_library_id' => 2], ['name' => 'CardSave', 'provider' => 'CardSave'], ['name' => 'Eway Rapid', 'provider' => 'Eway_RapidShared', 'is_offsite' => true], ['name' => 'FirstData Connect', 'provider' => 'FirstData_Connect'], ['name' => 'GoCardless', 'provider' => 'GoCardless', 'is_offsite' => true], ['name' => 'Migs ThreeParty', 'provider' => 'Migs_ThreeParty'], ['name' => 'Migs TwoParty', 'provider' => 'Migs_TwoParty'], ['name' => 'Mollie', 'provider' => 'Mollie', 'is_offsite' => true, 'sort_order' => 7], ['name' => 'MultiSafepay', 'provider' => 'MultiSafepay'], ['name' => 'Netaxept', 'provider' => 'Netaxept'], ['name' => 'NetBanx', 'provider' => 'NetBanx'], ['name' => 'PayFast', 'provider' => 'PayFast', 'is_offsite' => true], ['name' => 'Payflow Pro', 'provider' => 'Payflow_Pro'], ['name' => 'PaymentExpress PxPay', 'provider' => 'PaymentExpress_PxPay'], ['name' => 'PaymentExpress PxPost', 'provider' => 'PaymentExpress_PxPost'], ['name' => 'PayPal Express', 'provider' => 'PayPal_Express', 'is_offsite' => true, 'sort_order' => 3], ['name' => 'PayPal Pro', 'provider' => 'PayPal_Pro'], ['name' => 'Pin', 'provider' => 'Pin'], ['name' => 'SagePay Direct', 'provider' => 'SagePay_Direct'], ['name' => 'SagePay Server', 'provider' => 'SagePay_Server'], ['name' => 'SecurePay DirectPost', 'provider' => 'SecurePay_DirectPost'], ['name' => 'Stripe', 'provider' => 'Stripe', 'sort_order' => 1], ['name' => 'TargetPay Direct eBanking', 'provider' => 'TargetPay_Directebanking'], ['name' => 'TargetPay Ideal', 'provider' => 'TargetPay_Ideal'], ['name' => 'TargetPay Mr Cash', 'provider' => 'TargetPay_Mrcash'], ['name' => 'TwoCheckout', 'provider' => 'TwoCheckout', 'is_offsite' => true], ['name' => 'WorldPay', 'provider' => 'WorldPay'], ['name' => 'BeanStream', 'provider' => 'BeanStream', 'payment_library_id' => 2], ['name' => 'Psigate', 'provider' => 'Psigate', 'payment_library_id' => 2], ['name' => 'moolah', 'provider' => 'AuthorizeNet_AIM'], ['name' => 'Alipay', 'provider' => 'Alipay_Express'], ['name' => 'Buckaroo', 'provider' => 'Buckaroo_CreditCard'], ['name' => 'Coinbase', 'provider' => 'Coinbase'], ['name' => 'DataCash', 'provider' => 'DataCash'], ['name' => 'Neteller', 'provider' => 'Neteller', 'payment_library_id' => 2], ['name' => 'Pacnet', 'provider' => 'Pacnet'], ['name' => 'PaymentSense', 'provider' => 'PaymentSense'], ['name' => 'Realex', 'provider' => 'Realex_Remote'], ['name' => 'Sisow', 'provider' => 'Sisow'], ['name' => 'Skrill', 'provider' => 'Skrill'], ['name' => 'BitPay', 'provider' => 'BitPay', 'is_offsite' => true, 'sort_order' => 6], ['name' => 'Dwolla', 'provider' => 'Dwolla', 'is_offsite' => true, 'sort_order' => 5], ['name' => 'AGMS', 'provider' => 'Agms'], ['name' => 'Barclays', 'provider' => 'BarclaysEpdq\\Essential'], ['name' => 'Cardgate', 'provider' => 'Cardgate'], ['name' => 'Checkout.com', 'provider' => 'CheckoutCom'], ['name' => 'Creditcall', 'provider' => 'Creditcall'], ['name' => 'Cybersource', 'provider' => 'Cybersource'], ['name' => 'ecoPayz', 'provider' => 'Ecopayz'], ['name' => 'Fasapay', 'provider' => 'Fasapay'], ['name' => 'Komoju', 'provider' => 'Komoju'], ['name' => 'Multicards', 'provider' => 'Multicards'], ['name' => 'Pagar.Me', 'provider' => 'Pagarme'], ['name' => 'Paysafecard', 'provider' => 'Paysafecard'], ['name' => 'Paytrace', 'provider' => 'Paytrace_CreditCard'], ['name' => 'Secure Trading', 'provider' => 'SecureTrading'], ['name' => 'SecPay', 'provider' => 'SecPay'], ['name' => 'WeChat Express', 'provider' => 'WeChat_Express'], ['name' => 'WePay', 'provider' => 'WePay', 'is_offsite' => false], ['name' => 'Braintree', 'provider' => 'Braintree', 'sort_order' => 2], ['name' => 'Custom', 'provider' => 'Custom', 'is_offsite' => true, 'sort_order' => 8]]; foreach ($gateways as $gateway) { $record = Gateway::where('name', '=', $gateway['name'])->first(); if ($record) { $record->fill($gateway); $record->save(); } else { Gateway::create($gateway); } } }
public function run() { Eloquent::unguard(); $gateways = [['name' => 'BeanStream', 'provider' => 'BeanStream', 'payment_library_id' => 2], ['name' => 'Psigate', 'provider' => 'Psigate', 'payment_library_id' => 2], ['name' => 'moolah', 'provider' => 'AuthorizeNet_AIM', 'sort_order' => 1, 'recommended' => 1, 'site_url' => 'https://invoiceninja.mymoolah.com/', 'payment_library_id' => 1], ['name' => 'Alipay', 'provider' => 'Alipay_Express', 'payment_library_id' => 1], ['name' => 'Buckaroo', 'provider' => 'Buckaroo_CreditCard', 'payment_library_id' => 1], ['name' => 'Coinbase', 'provider' => 'Coinbase', 'payment_library_id' => 1], ['name' => 'DataCash', 'provider' => 'DataCash', 'payment_library_id' => 1], ['name' => 'Neteller', 'provider' => 'Neteller', 'payment_library_id' => 1], ['name' => 'Pacnet', 'provider' => 'Pacnet', 'payment_library_id' => 1], ['name' => 'PaymentSense', 'provider' => 'PaymentSense', 'payment_library_id' => 1], ['name' => 'Realex', 'provider' => 'Realex_Remote', 'payment_library_id' => 1], ['name' => 'Sisow', 'provider' => 'Sisow', 'payment_library_id' => 1], ['name' => 'Skrill', 'provider' => 'Skrill', 'payment_library_id' => 1], ['name' => 'BitPay', 'provider' => 'BitPay', 'payment_library_id' => 1]]; foreach ($gateways as $gateway) { if (!DB::table('gateways')->where('name', '=', $gateway['name'])->get()) { Gateway::create($gateway); } } $paymentTerms = [['num_days' => -1, 'name' => 'Net 0']]; foreach ($paymentTerms as $paymentTerm) { if (!DB::table('payment_terms')->where('name', '=', $paymentTerm['name'])->get()) { PaymentTerm::create($paymentTerm); } } }
public function sendInvoice(Invoice $invoice) { $invoice->load('invitations', 'client.language', 'account'); $entityType = $invoice->getEntityType(); $client = $invoice->client; $account = $invoice->account; $account->loadLocalizationSettings($client); $view = 'invoice'; $subject = trans("texts.{$entityType}_subject", ['invoice' => $invoice->invoice_number, 'account' => $invoice->account->getDisplayName()]); $accountName = $invoice->account->getDisplayName(); $emailTemplate = $invoice->account->getEmailTemplate($entityType); $invoiceAmount = Utils::formatMoney($invoice->getRequestedAmount(), $client->getCurrencyId()); $this->initClosure($invoice); foreach ($invoice->invitations as $invitation) { if (!$invitation->user || !$invitation->user->email || $invitation->user->trashed()) { return false; } if (!$invitation->contact || !$invitation->contact->email || $invitation->contact->trashed()) { return false; } $invitation->sent_date = \Carbon::now()->toDateTimeString(); $invitation->save(); $variables = ['$footer' => $invoice->account->getEmailFooter(), '$link' => $invitation->getLink(), '$client' => $client->getDisplayName(), '$account' => $accountName, '$contact' => $invitation->contact->getDisplayName(), '$amount' => $invoiceAmount, '$advancedRawInvoice->' => '$']; // Add variables for available payment types foreach (Gateway::getPaymentTypeLinks() as $type) { $variables["\${$type}_link"] = URL::to("/payment/{$invitation->invitation_key}/{$type}"); } $data['body'] = str_replace(array_keys($variables), array_values($variables), $emailTemplate); $data['body'] = preg_replace_callback('/\\{\\{\\$?(.*)\\}\\}/', $this->advancedTemplateHandler, $data['body']); $data['link'] = $invitation->getLink(); $data['entityType'] = $entityType; $data['invoice_id'] = $invoice->id; $fromEmail = $invitation->user->email; $response = $this->sendTo($invitation->contact->email, $fromEmail, $accountName, $subject, $view, $data); if ($response !== true) { return $response; } Activity::emailInvoice($invitation); } if (!$invoice->isSent()) { $invoice->invoice_status_id = INVOICE_STATUS_SENT; $invoice->save(); } $account->loadLocalizationSettings(); Event::fire(new InvoiceSent($invoice)); return $response; }
public function processVariables($template, $data) { $account = $data['account']; $client = $data['client']; $invitation = $data['invitation']; $invoice = $invitation->invoice; $passwordHTML = isset($data['password']) ? '<p>' . trans('texts.password') . ': ' . $data['password'] . '<p>' : false; $documentsHTML = ''; if ($account->hasFeature(FEATURE_DOCUMENTS) && $invoice->hasDocuments()) { $documentsHTML .= trans('texts.email_documents_header') . '<ul>'; foreach ($invoice->documents as $document) { $documentsHTML .= '<li><a href="' . HTML::entities($document->getClientUrl($invitation)) . '">' . HTML::entities($document->name) . '</a></li>'; } foreach ($invoice->expenses as $expense) { foreach ($expense->documents as $document) { $documentsHTML .= '<li><a href="' . HTML::entities($document->getClientUrl($invitation)) . '">' . HTML::entities($document->name) . '</a></li>'; } } $documentsHTML .= '</ul>'; } $variables = ['$footer' => $account->getEmailFooter(), '$client' => $client->getDisplayName(), '$account' => $account->getDisplayName(), '$dueDate' => $account->formatDate($invoice->due_date), '$invoiceDate' => $account->formatDate($invoice->invoice_date), '$contact' => $invitation->contact->getDisplayName(), '$firstName' => $invitation->contact->first_name, '$amount' => $account->formatMoney($data['amount'], $client), '$invoice' => $invoice->invoice_number, '$quote' => $invoice->invoice_number, '$link' => $invitation->getLink(), '$password' => $passwordHTML, '$viewLink' => $invitation->getLink() . '$password', '$viewButton' => Form::emailViewButton($invitation->getLink(), $invoice->getEntityType()) . '$password', '$paymentLink' => $invitation->getLink('payment') . '$password', '$paymentButton' => Form::emailPaymentButton($invitation->getLink('payment')) . '$password', '$customClient1' => $account->custom_client_label1, '$customClient2' => $account->custom_client_label2, '$customInvoice1' => $account->custom_invoice_text_label1, '$customInvoice2' => $account->custom_invoice_text_label2, '$documents' => $documentsHTML]; // Add variables for available payment types foreach (Gateway::$paymentTypes as $type) { $camelType = Gateway::getPaymentTypeName($type); $type = Utils::toSnakeCase($camelType); $variables["\${$camelType}Link"] = $invitation->getLink('payment') . "/{$type}"; $variables["\${$camelType}Button"] = Form::emailPaymentButton($invitation->getLink('payment') . "/{$type}"); } $includesPasswordPlaceholder = strpos($template, '$password') !== false; $str = str_replace(array_keys($variables), array_values($variables), $template); if (!$includesPasswordPlaceholder && $passwordHTML) { $pos = strrpos($str, '$password'); if ($pos !== false) { $str = substr_replace($str, $passwordHTML, $pos, 9); } } $str = str_replace('$password', '', $str); $str = autolink($str, 100); return $str; }
/** * Stores new account * */ public function save($accountGatewayPublicId = false) { $rules = array(); $paymentType = Input::get('payment_type_id'); $gatewayId = Input::get('gateway_id'); if ($paymentType == PAYMENT_TYPE_PAYPAL) { $gatewayId = GATEWAY_PAYPAL_EXPRESS; } elseif ($paymentType == PAYMENT_TYPE_BITCOIN) { $gatewayId = GATEWAY_BITPAY; } elseif ($paymentType == PAYMENT_TYPE_DIRECT_DEBIT) { $gatewayId = GATEWAY_GOCARDLESS; } elseif ($paymentType == PAYMENT_TYPE_DWOLLA) { $gatewayId = GATEWAY_DWOLLA; } if (!$gatewayId) { Session::flash('error', trans('validation.required', ['attribute' => 'gateway'])); return Redirect::to('gateways/create')->withInput(); } $gateway = Gateway::findOrFail($gatewayId); $fields = $gateway->getFields(); $optional = array_merge(Gateway::$hiddenFields, Gateway::$optionalFields); if ($gatewayId == GATEWAY_DWOLLA) { $optional = array_merge($optional, ['key', 'secret']); } elseif ($gatewayId == GATEWAY_STRIPE) { $rules['publishable_key'] = 'required'; } foreach ($fields as $field => $details) { if (!in_array($field, $optional)) { if (strtolower($gateway->name) == 'beanstream') { if (in_array($field, ['merchant_id', 'passCode'])) { $rules[$gateway->id . '_' . $field] = 'required'; } } else { $rules[$gateway->id . '_' . $field] = 'required'; } } } $creditcards = Input::get('creditCardTypes'); $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return Redirect::to('gateways/create')->withErrors($validator)->withInput(); } else { $account = Account::with('account_gateways')->findOrFail(Auth::user()->account_id); $oldConfig = null; if ($accountGatewayPublicId) { $accountGateway = AccountGateway::scope($accountGatewayPublicId)->firstOrFail(); $oldConfig = $accountGateway->getConfig(); } else { $accountGateway = AccountGateway::createNew(); $accountGateway->gateway_id = $gatewayId; } $config = new stdClass(); foreach ($fields as $field => $details) { $value = trim(Input::get($gateway->id . '_' . $field)); // if the new value is masked use the original value if ($oldConfig && $value && $value === str_repeat('*', strlen($value))) { $value = $oldConfig->{$field}; } if (!$value && ($field == 'testMode' || $field == 'developerMode')) { // do nothing } else { $config->{$field} = $value; } } $publishableKey = Input::get('publishable_key'); if ($publishableKey = str_replace('*', '', $publishableKey)) { $config->publishableKey = $publishableKey; } elseif ($oldConfig && property_exists($oldConfig, 'publishableKey')) { $config->publishableKey = $oldConfig->publishableKey; } $cardCount = 0; if ($creditcards) { foreach ($creditcards as $card => $value) { $cardCount += intval($value); } } $accountGateway->accepted_credit_cards = $cardCount; $accountGateway->show_address = Input::get('show_address') ? true : false; $accountGateway->update_address = Input::get('update_address') ? true : false; $accountGateway->setConfig($config); if ($accountGatewayPublicId) { $accountGateway->save(); } else { $account->account_gateways()->save($accountGateway); } if (Input::get('token_billing_type_id')) { $account->token_billing_type_id = Input::get('token_billing_type_id'); $account->save(); } if ($accountGatewayPublicId) { $message = trans('texts.updated_gateway'); } else { $message = trans('texts.created_gateway'); } Session::flash('message', $message); return Redirect::to("gateways/{$accountGateway->public_id}/edit"); } }
private function processVariables($template, $data) { $variables = ['$footer' => $data['account']->getEmailFooter(), '$link' => $data['invitation']->getLink(), '$client' => $data['client']->getDisplayName(), '$account' => $data['account']->getDisplayName(), '$contact' => $data['invitation']->contact->getDisplayName(), '$firstName' => $data['invitation']->contact->first_name, '$amount' => Utils::formatMoney($data['amount'], $data['client']->getCurrencyId()), '$invoice' => $data['invitation']->invoice->invoice_number, '$quote' => $data['invitation']->invoice->invoice_number, '$advancedRawInvoice->' => '$']; // Add variables for available payment types foreach (Gateway::getPaymentTypeLinks() as $type) { $variables["\${$type}_link"] = URL::to("/payment/{$data['invitation']->invitation_key}/{$type}"); } $str = str_replace(array_keys($variables), array_values($variables), $template); return $str; }
private function processVariables($template, $data) { $account = $data['account']; $client = $data['client']; $invitation = $data['invitation']; $invoice = $invitation->invoice; $variables = ['$footer' => $account->getEmailFooter(), '$client' => $client->getDisplayName(), '$account' => $account->getDisplayName(), '$contact' => $invitation->contact->getDisplayName(), '$firstName' => $invitation->contact->first_name, '$amount' => $account->formatMoney($data['amount'], $client), '$invoice' => $invoice->invoice_number, '$quote' => $invoice->invoice_number, '$link' => $invitation->getLink(), '$viewLink' => $invitation->getLink(), '$viewButton' => HTML::emailViewButton($invitation->getLink(), $invoice->getEntityType()), '$paymentLink' => $invitation->getLink('payment'), '$paymentButton' => HTML::emailPaymentButton($invitation->getLink('payment'))]; // Add variables for available payment types foreach (Gateway::$paymentTypes as $type) { $camelType = Gateway::getPaymentTypeName($type); $type = Utils::toSnakeCase($camelType); $variables["\${$camelType}Link"] = $invitation->getLink() . "/{$type}"; $variables["\${$camelType}Button"] = HTML::emailPaymentButton($invitation->getLink('payment') . "/{$type}"); } $str = str_replace(array_keys($variables), array_values($variables), $template); return $str; }
public function getPaymentType() { return Gateway::getPaymentType($this->gateway_id); }
public static function getPrettyPaymentType($gatewayId) { return trans('texts.' . strtolower(Gateway::getPaymentType($gatewayId))); }
private function processVariables($template, $data) { $account = $data['account']; $client = $data['client']; $invitation = $data['invitation']; $invoice = $invitation->invoice; $passwordHTML = isset($data['password']) ? '<p>' . trans('texts.password') . ': ' . $data['password'] . '<p>' : false; $variables = ['$footer' => $account->getEmailFooter(), '$client' => $client->getDisplayName(), '$account' => $account->getDisplayName(), '$dueDate' => $account->formatDate($invoice->due_date), '$invoiceDate' => $account->formatDate($invoice->invoice_date), '$contact' => $invitation->contact->getDisplayName(), '$firstName' => $invitation->contact->first_name, '$amount' => $account->formatMoney($data['amount'], $client), '$invoice' => $invoice->invoice_number, '$quote' => $invoice->invoice_number, '$link' => $invitation->getLink(), '$password' => $passwordHTML, '$viewLink' => $invitation->getLink() . '$password', '$viewButton' => Form::emailViewButton($invitation->getLink(), $invoice->getEntityType()) . '$password', '$paymentLink' => $invitation->getLink('payment') . '$password', '$paymentButton' => Form::emailPaymentButton($invitation->getLink('payment')) . '$password', '$customClient1' => $account->custom_client_label1, '$customClient2' => $account->custom_client_label2, '$customInvoice1' => $account->custom_invoice_text_label1, '$customInvoice2' => $account->custom_invoice_text_label2]; // Add variables for available payment types foreach (Gateway::$paymentTypes as $type) { $camelType = Gateway::getPaymentTypeName($type); $type = Utils::toSnakeCase($camelType); $variables["\${$camelType}Link"] = $invitation->getLink('payment') . "/{$type}"; $variables["\${$camelType}Button"] = Form::emailPaymentButton($invitation->getLink('payment') . "/{$type}"); } $includesPasswordPlaceholder = strpos($template, '$password') !== false; $str = str_replace(array_keys($variables), array_values($variables), $template); if (!$includesPasswordPlaceholder && $passwordHTML) { $pos = strrpos($str, '$password'); if ($pos !== false) { $str = substr_replace($str, $passwordHTML, $pos, 9); } } $str = str_replace('$password', '', $str); $str = autolink($str, 100); return $str; }
public function run() { PaymentType::create(array('name' => 'Apply Credit')); PaymentType::create(array('name' => 'Bank Transfer')); PaymentType::create(array('name' => 'Cash')); PaymentType::create(array('name' => 'Debit')); PaymentType::create(array('name' => 'ACH')); PaymentType::create(array('name' => 'Visa Card')); PaymentType::create(array('name' => 'MasterCard')); PaymentType::create(array('name' => 'American Express')); PaymentType::create(array('name' => 'Discover Card')); PaymentType::create(array('name' => 'Diners Card')); PaymentType::create(array('name' => 'EuroCard')); PaymentType::create(array('name' => 'Nova')); PaymentType::create(array('name' => 'Credit Card Other')); PaymentType::create(array('name' => 'PayPal')); PaymentType::create(array('name' => 'Google Wallet')); PaymentType::create(array('name' => 'Check')); Theme::create(array('name' => 'amelia')); Theme::create(array('name' => 'cerulean')); Theme::create(array('name' => 'cosmo')); Theme::create(array('name' => 'cyborg')); Theme::create(array('name' => 'flatly')); Theme::create(array('name' => 'journal')); Theme::create(array('name' => 'readable')); Theme::create(array('name' => 'simplex')); Theme::create(array('name' => 'slate')); Theme::create(array('name' => 'spacelab')); Theme::create(array('name' => 'united')); Theme::create(array('name' => 'yeti')); InvoiceStatus::create(array('name' => 'Draft')); InvoiceStatus::create(array('name' => 'Sent')); InvoiceStatus::create(array('name' => 'Viewed')); InvoiceStatus::create(array('name' => 'Partial')); InvoiceStatus::create(array('name' => 'Paid')); Frequency::create(array('name' => 'Weekly')); Frequency::create(array('name' => 'Two weeks')); Frequency::create(array('name' => 'Four weeks')); Frequency::create(array('name' => 'Monthly')); Frequency::create(array('name' => 'Three months')); Frequency::create(array('name' => 'Six months')); Frequency::create(array('name' => 'Annually')); Industry::create(array('name' => 'Accounting & Legal')); Industry::create(array('name' => 'Advertising')); Industry::create(array('name' => 'Aerospace')); Industry::create(array('name' => 'Agriculture')); Industry::create(array('name' => 'Automotive')); Industry::create(array('name' => 'Banking & Finance')); Industry::create(array('name' => 'Biotechnology')); Industry::create(array('name' => 'Broadcasting')); Industry::create(array('name' => 'Business Services')); Industry::create(array('name' => 'Commodities & Chemicals')); Industry::create(array('name' => 'Communications')); Industry::create(array('name' => 'Computers & Hightech')); Industry::create(array('name' => 'Defense')); Industry::create(array('name' => 'Energy')); Industry::create(array('name' => 'Entertainment')); Industry::create(array('name' => 'Government')); Industry::create(array('name' => 'Healthcare & Life Sciences')); Industry::create(array('name' => 'Insurance')); Industry::create(array('name' => 'Manufacturing')); Industry::create(array('name' => 'Marketing')); Industry::create(array('name' => 'Media')); Industry::create(array('name' => 'Nonprofit & Higher Ed')); Industry::create(array('name' => 'Pharmaceuticals')); Industry::create(array('name' => 'Professional Services & Consulting')); Industry::create(array('name' => 'Real Estate')); Industry::create(array('name' => 'Retail & Wholesale')); Industry::create(array('name' => 'Sports')); Industry::create(array('name' => 'Transportation')); Industry::create(array('name' => 'Travel & Luxury')); Industry::create(array('name' => 'Other')); Industry::create(array('name' => 'Photography')); Size::create(array('name' => '1 - 3')); Size::create(array('name' => '4 - 10')); Size::create(array('name' => '11 - 50')); Size::create(array('name' => '51 - 100')); Size::create(array('name' => '101 - 500')); Size::create(array('name' => '500+')); PaymentTerm::create(array('num_days' => 7, 'name' => 'Net 7')); PaymentTerm::create(array('num_days' => 10, 'name' => 'Net 10')); PaymentTerm::create(array('num_days' => 14, 'name' => 'Net 14')); PaymentTerm::create(array('num_days' => 15, 'name' => 'Net 15')); PaymentTerm::create(array('num_days' => 30, 'name' => 'Net 30')); PaymentTerm::create(array('num_days' => 60, 'name' => 'Net 60')); PaymentTerm::create(array('num_days' => 90, 'name' => 'Net 90')); Currency::create(array('name' => 'US Dollar', 'code' => 'USD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Pound Sterling', 'code' => 'GBP', 'symbol' => '£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Euro', 'code' => 'EUR', 'symbol' => '€', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Rand', 'code' => 'ZAR', 'symbol' => 'R', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Danish Krone', 'code' => 'DKK', 'symbol' => 'kr ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Israeli Shekel', 'code' => 'ILS', 'symbol' => 'NIS ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Swedish Krona', 'code' => 'SEK', 'symbol' => 'kr ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Kenyan Shilling', 'code' => 'KES', 'symbol' => 'KSh ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Canadian Dollar', 'code' => 'CAD', 'symbol' => 'C$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Philippine Peso', 'code' => 'PHP', 'symbol' => 'P ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Indian Rupee', 'code' => 'INR', 'symbol' => 'Rs. ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Australian Dollar', 'code' => 'AUD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Singapore Dollar', 'code' => 'SGD', 'symbol' => 'SGD ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Norske Kroner', 'code' => 'NOK', 'symbol' => 'kr ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'New Zealand Dollar', 'code' => 'NZD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Vietnamese Dong', 'code' => 'VND', 'symbol' => 'VND ', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => '.')); Currency::create(array('name' => 'Swiss Franc', 'code' => 'CHF', 'symbol' => 'CHF ', 'precision' => '2', 'thousand_separator' => '\'', 'decimal_separator' => '.')); Currency::create(array('name' => 'Guatemalan Quetzal', 'code' => 'GTQ', 'symbol' => 'Q', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.')); DatetimeFormat::create(array('format' => 'd/M/Y g:i a', 'label' => '10/Mar/2013')); DatetimeFormat::create(array('format' => 'd-M-Yk g:i a', 'label' => '10-Mar-2013')); DatetimeFormat::create(array('format' => 'd/F/Y g:i a', 'label' => '10/March/2013')); DatetimeFormat::create(array('format' => 'd-F-Y g:i a', 'label' => '10-March-2013')); DatetimeFormat::create(array('format' => 'M j, Y g:i a', 'label' => 'Mar 10, 2013 6:15 pm')); DatetimeFormat::create(array('format' => 'F j, Y g:i a', 'label' => 'March 10, 2013 6:15 pm')); DatetimeFormat::create(array('format' => 'D M jS, Y g:ia', 'label' => 'Mon March 10th, 2013 6:15 pm')); DateFormat::create(array('format' => 'd/M/Y', 'picker_format' => 'dd/M/yyyy', 'label' => '10/Mar/2013')); DateFormat::create(array('format' => 'd-M-Y', 'picker_format' => 'dd-M-yyyy', 'label' => '10-Mar-2013')); DateFormat::create(array('format' => 'd/F/Y', 'picker_format' => 'dd/MM/yyyy', 'label' => '10/March/2013')); DateFormat::create(array('format' => 'd-F-Y', 'picker_format' => 'dd-MM-yyyy', 'label' => '10-March-2013')); DateFormat::create(array('format' => 'M j, Y', 'picker_format' => 'M d, yyyy', 'label' => 'Mar 10, 2013')); DateFormat::create(array('format' => 'F j, Y', 'picker_format' => 'MM d, yyyy', 'label' => 'March 10, 2013')); DateFormat::create(array('format' => 'D M j, Y', 'picker_format' => 'D MM d, yyyy', 'label' => 'Mon March 10, 2013')); DateFormat::create(array('format' => 'Y-M-d', 'picker_format' => 'yyyy-M-dd', 'label' => '2013-03-10')); PaymentLibrary::create(['name' => 'Omnipay']); PaymentLibrary::create(['name' => 'PHP-Payments [Deprecated]']); /* d, dd: Numeric date, no leading zero and leading zero, respectively. Eg, 5, 05. D, DD: Abbreviated and full weekday names, respectively. Eg, Mon, Monday. m, mm: Numeric month, no leading zero and leading zero, respectively. Eg, 7, 07. M, MM: Abbreviated and full month names, respectively. Eg, Jan, January yy, yyyy: 2- and 4-digit years, respectively. Eg, 12, 2012.) */ $gateways = [array('name' => 'Authorize.Net AIM', 'provider' => 'AuthorizeNet_AIM'), array('name' => 'Authorize.Net SIM', 'provider' => 'AuthorizeNet_SIM'), array('name' => 'CardSave', 'provider' => 'CardSave'), array('name' => 'Eway Rapid', 'provider' => 'Eway_Rapid'), array('name' => 'FirstData Connect', 'provider' => 'FirstData_Connect'), array('name' => 'GoCardless', 'provider' => 'GoCardless'), array('name' => 'Migs ThreeParty', 'provider' => 'Migs_ThreeParty'), array('name' => 'Migs TwoParty', 'provider' => 'Migs_TwoParty'), array('name' => 'Mollie', 'provider' => 'Mollie'), array('name' => 'MultiSafepay', 'provider' => 'MultiSafepay'), array('name' => 'Netaxept', 'provider' => 'Netaxept'), array('name' => 'NetBanx', 'provider' => 'NetBanx'), array('name' => 'PayFast', 'provider' => 'PayFast'), array('name' => 'Payflow Pro', 'provider' => 'Payflow_Pro'), array('name' => 'PaymentExpress PxPay', 'provider' => 'PaymentExpress_PxPay'), array('name' => 'PaymentExpress PxPost', 'provider' => 'PaymentExpress_PxPost'), array('name' => 'PayPal Express', 'provider' => 'PayPal_Express'), array('name' => 'PayPal Pro', 'provider' => 'PayPal_Pro'), array('name' => 'Pin', 'provider' => 'Pin'), array('name' => 'SagePay Direct', 'provider' => 'SagePay_Direct'), array('name' => 'SagePay Server', 'provider' => 'SagePay_Server'), array('name' => 'SecurePay DirectPost', 'provider' => 'SecurePay_DirectPost'), array('name' => 'Stripe', 'provider' => 'Stripe'), array('name' => 'TargetPay Direct eBanking', 'provider' => 'TargetPay_Directebanking'), array('name' => 'TargetPay Ideal', 'provider' => 'TargetPay_Ideal'), array('name' => 'TargetPay Mr Cash', 'provider' => 'TargetPay_Mrcash'), array('name' => 'TwoCheckout', 'provider' => 'TwoCheckout'), array('name' => 'WorldPay', 'provider' => 'WorldPay')]; foreach ($gateways as $gateway) { Gateway::create($gateway); } $timezones = array('Pacific/Midway' => "(GMT-11:00) Midway Island", 'US/Samoa' => "(GMT-11:00) Samoa", 'US/Hawaii' => "(GMT-10:00) Hawaii", 'US/Alaska' => "(GMT-09:00) Alaska", 'US/Pacific' => "(GMT-08:00) Pacific Time (US & Canada)", 'America/Tijuana' => "(GMT-08:00) Tijuana", 'US/Arizona' => "(GMT-07:00) Arizona", 'US/Mountain' => "(GMT-07:00) Mountain Time (US & Canada)", 'America/Chihuahua' => "(GMT-07:00) Chihuahua", 'America/Mazatlan' => "(GMT-07:00) Mazatlan", 'America/Mexico_City' => "(GMT-06:00) Mexico City", 'America/Monterrey' => "(GMT-06:00) Monterrey", 'Canada/Saskatchewan' => "(GMT-06:00) Saskatchewan", 'US/Central' => "(GMT-06:00) Central Time (US & Canada)", 'US/Eastern' => "(GMT-05:00) Eastern Time (US & Canada)", 'US/East-Indiana' => "(GMT-05:00) Indiana (East)", 'America/Bogota' => "(GMT-05:00) Bogota", 'America/Lima' => "(GMT-05:00) Lima", 'America/Caracas' => "(GMT-04:30) Caracas", 'Canada/Atlantic' => "(GMT-04:00) Atlantic Time (Canada)", 'America/La_Paz' => "(GMT-04:00) La Paz", 'America/Santiago' => "(GMT-04:00) Santiago", 'Canada/Newfoundland' => "(GMT-03:30) Newfoundland", 'America/Buenos_Aires' => "(GMT-03:00) Buenos Aires", 'Greenland' => "(GMT-03:00) Greenland", 'Atlantic/Stanley' => "(GMT-02:00) Stanley", 'Atlantic/Azores' => "(GMT-01:00) Azores", 'Atlantic/Cape_Verde' => "(GMT-01:00) Cape Verde Is.", 'Africa/Casablanca' => "(GMT) Casablanca", 'Europe/Dublin' => "(GMT) Dublin", 'Europe/Lisbon' => "(GMT) Lisbon", 'Europe/London' => "(GMT) London", 'Africa/Monrovia' => "(GMT) Monrovia", 'Europe/Amsterdam' => "(GMT+01:00) Amsterdam", 'Europe/Belgrade' => "(GMT+01:00) Belgrade", 'Europe/Berlin' => "(GMT+01:00) Berlin", 'Europe/Bratislava' => "(GMT+01:00) Bratislava", 'Europe/Brussels' => "(GMT+01:00) Brussels", 'Europe/Budapest' => "(GMT+01:00) Budapest", 'Europe/Copenhagen' => "(GMT+01:00) Copenhagen", 'Europe/Ljubljana' => "(GMT+01:00) Ljubljana", 'Europe/Madrid' => "(GMT+01:00) Madrid", 'Europe/Paris' => "(GMT+01:00) Paris", 'Europe/Prague' => "(GMT+01:00) Prague", 'Europe/Rome' => "(GMT+01:00) Rome", 'Europe/Sarajevo' => "(GMT+01:00) Sarajevo", 'Europe/Skopje' => "(GMT+01:00) Skopje", 'Europe/Stockholm' => "(GMT+01:00) Stockholm", 'Europe/Vienna' => "(GMT+01:00) Vienna", 'Europe/Warsaw' => "(GMT+01:00) Warsaw", 'Europe/Zagreb' => "(GMT+01:00) Zagreb", 'Europe/Athens' => "(GMT+02:00) Athens", 'Europe/Bucharest' => "(GMT+02:00) Bucharest", 'Africa/Cairo' => "(GMT+02:00) Cairo", 'Africa/Harare' => "(GMT+02:00) Harare", 'Europe/Helsinki' => "(GMT+02:00) Helsinki", 'Europe/Istanbul' => "(GMT+02:00) Istanbul", 'Asia/Jerusalem' => "(GMT+02:00) Jerusalem", 'Europe/Kiev' => "(GMT+02:00) Kyiv", 'Europe/Minsk' => "(GMT+02:00) Minsk", 'Europe/Riga' => "(GMT+02:00) Riga", 'Europe/Sofia' => "(GMT+02:00) Sofia", 'Europe/Tallinn' => "(GMT+02:00) Tallinn", 'Europe/Vilnius' => "(GMT+02:00) Vilnius", 'Asia/Baghdad' => "(GMT+03:00) Baghdad", 'Asia/Kuwait' => "(GMT+03:00) Kuwait", 'Africa/Nairobi' => "(GMT+03:00) Nairobi", 'Asia/Riyadh' => "(GMT+03:00) Riyadh", 'Asia/Tehran' => "(GMT+03:30) Tehran", 'Europe/Moscow' => "(GMT+04:00) Moscow", 'Asia/Baku' => "(GMT+04:00) Baku", 'Europe/Volgograd' => "(GMT+04:00) Volgograd", 'Asia/Muscat' => "(GMT+04:00) Muscat", 'Asia/Tbilisi' => "(GMT+04:00) Tbilisi", 'Asia/Yerevan' => "(GMT+04:00) Yerevan", 'Asia/Kabul' => "(GMT+04:30) Kabul", 'Asia/Karachi' => "(GMT+05:00) Karachi", 'Asia/Tashkent' => "(GMT+05:00) Tashkent", 'Asia/Kolkata' => "(GMT+05:30) Kolkata", 'Asia/Kathmandu' => "(GMT+05:45) Kathmandu", 'Asia/Yekaterinburg' => "(GMT+06:00) Ekaterinburg", 'Asia/Almaty' => "(GMT+06:00) Almaty", 'Asia/Dhaka' => "(GMT+06:00) Dhaka", 'Asia/Novosibirsk' => "(GMT+07:00) Novosibirsk", 'Asia/Bangkok' => "(GMT+07:00) Bangkok", 'Asia/Ho_Chi_Minh' => "(GMT+07.00) Ho Chi Minh", 'Asia/Jakarta' => "(GMT+07:00) Jakarta", 'Asia/Krasnoyarsk' => "(GMT+08:00) Krasnoyarsk", 'Asia/Chongqing' => "(GMT+08:00) Chongqing", 'Asia/Hong_Kong' => "(GMT+08:00) Hong Kong", 'Asia/Kuala_Lumpur' => "(GMT+08:00) Kuala Lumpur", 'Australia/Perth' => "(GMT+08:00) Perth", 'Asia/Singapore' => "(GMT+08:00) Singapore", 'Asia/Taipei' => "(GMT+08:00) Taipei", 'Asia/Ulaanbaatar' => "(GMT+08:00) Ulaan Bataar", 'Asia/Urumqi' => "(GMT+08:00) Urumqi", 'Asia/Irkutsk' => "(GMT+09:00) Irkutsk", 'Asia/Seoul' => "(GMT+09:00) Seoul", 'Asia/Tokyo' => "(GMT+09:00) Tokyo", 'Australia/Adelaide' => "(GMT+09:30) Adelaide", 'Australia/Darwin' => "(GMT+09:30) Darwin", 'Asia/Yakutsk' => "(GMT+10:00) Yakutsk", 'Australia/Brisbane' => "(GMT+10:00) Brisbane", 'Australia/Canberra' => "(GMT+10:00) Canberra", 'Pacific/Guam' => "(GMT+10:00) Guam", 'Australia/Hobart' => "(GMT+10:00) Hobart", 'Australia/Melbourne' => "(GMT+10:00) Melbourne", 'Pacific/Port_Moresby' => "(GMT+10:00) Port Moresby", 'Australia/Sydney' => "(GMT+10:00) Sydney", 'Asia/Vladivostok' => "(GMT+11:00) Vladivostok", 'Asia/Magadan' => "(GMT+12:00) Magadan", 'Pacific/Auckland' => "(GMT+12:00) Auckland", 'Pacific/Fiji' => "(GMT+12:00) Fiji"); foreach ($timezones as $name => $location) { Timezone::create(array('name' => $name, 'location' => $location)); } }
/** * Stores new account * */ public function save($accountGatewayPublicId = false) { $gatewayId = Input::get('primary_gateway_id') ?: Input::get('secondary_gateway_id'); $gateway = Gateway::findOrFail($gatewayId); $rules = []; $fields = $gateway->getFields(); $optional = array_merge(Gateway::$hiddenFields, Gateway::$optionalFields); if ($gatewayId == GATEWAY_DWOLLA) { $optional = array_merge($optional, ['key', 'secret']); } elseif ($gatewayId == GATEWAY_STRIPE) { if (Utils::isNinjaDev()) { // do nothing - we're unable to acceptance test with StripeJS } else { $rules['publishable_key'] = 'required'; $rules['enable_ach'] = 'boolean'; } } if ($gatewayId != GATEWAY_WEPAY) { foreach ($fields as $field => $details) { if (!in_array($field, $optional)) { if (strtolower($gateway->name) == 'beanstream') { if (in_array($field, ['merchant_id', 'passCode'])) { $rules[$gateway->id . '_' . $field] = 'required'; } } else { $rules[$gateway->id . '_' . $field] = 'required'; } } } } $creditcards = Input::get('creditCardTypes'); $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return Redirect::to('gateways/create?other_providers=' . ($gatewayId == GATEWAY_WEPAY ? 'false' : 'true'))->withErrors($validator)->withInput(); } else { $account = Account::with('account_gateways')->findOrFail(Auth::user()->account_id); $oldConfig = null; if ($accountGatewayPublicId) { $accountGateway = AccountGateway::scope($accountGatewayPublicId)->firstOrFail(); $oldConfig = $accountGateway->getConfig(); } else { // check they don't already have an active gateway for this provider // TODO complete this $accountGateway = AccountGateway::scope()->whereGatewayId($gatewayId)->first(); if ($accountGateway) { Session::flash('error', trans('texts.gateway_exists')); return Redirect::to("gateways/{$accountGateway->public_id}/edit"); } $accountGateway = AccountGateway::createNew(); $accountGateway->gateway_id = $gatewayId; if ($gatewayId == GATEWAY_WEPAY) { if (!$this->setupWePay($accountGateway, $wepayResponse)) { return $wepayResponse; } $oldConfig = $accountGateway->getConfig(); } } $config = new stdClass(); if ($gatewayId != GATEWAY_WEPAY) { foreach ($fields as $field => $details) { $value = trim(Input::get($gateway->id . '_' . $field)); // if the new value is masked use the original value if ($oldConfig && $value && $value === str_repeat('*', strlen($value))) { $value = $oldConfig->{$field}; } if (!$value && ($field == 'testMode' || $field == 'developerMode')) { // do nothing } else { $config->{$field} = $value; } } } elseif ($oldConfig) { $config = clone $oldConfig; } $publishableKey = Input::get('publishable_key'); if ($publishableKey = str_replace('*', '', $publishableKey)) { $config->publishableKey = $publishableKey; } elseif ($oldConfig && property_exists($oldConfig, 'publishableKey')) { $config->publishableKey = $oldConfig->publishableKey; } $plaidClientId = Input::get('plaid_client_id'); if ($plaidClientId = str_replace('*', '', $plaidClientId)) { $config->plaidClientId = $plaidClientId; } elseif ($oldConfig && property_exists($oldConfig, 'plaidClientId')) { $config->plaidClientId = $oldConfig->plaidClientId; } $plaidSecret = Input::get('plaid_secret'); if ($plaidSecret = str_replace('*', '', $plaidSecret)) { $config->plaidSecret = $plaidSecret; } elseif ($oldConfig && property_exists($oldConfig, 'plaidSecret')) { $config->plaidSecret = $oldConfig->plaidSecret; } $plaidPublicKey = Input::get('plaid_public_key'); if ($plaidPublicKey = str_replace('*', '', $plaidPublicKey)) { $config->plaidPublicKey = $plaidPublicKey; } elseif ($oldConfig && property_exists($oldConfig, 'plaidPublicKey')) { $config->plaidPublicKey = $oldConfig->plaidPublicKey; } if ($gatewayId == GATEWAY_STRIPE || $gatewayId == GATEWAY_WEPAY) { $config->enableAch = boolval(Input::get('enable_ach')); } if ($gatewayId == GATEWAY_BRAINTREE) { $config->enablePayPal = boolval(Input::get('enable_paypal')); } $cardCount = 0; if ($creditcards) { foreach ($creditcards as $card => $value) { $cardCount += intval($value); } } $accountGateway->accepted_credit_cards = $cardCount; $accountGateway->show_address = Input::get('show_address') ? true : false; $accountGateway->update_address = Input::get('update_address') ? true : false; $accountGateway->setConfig($config); if ($accountGatewayPublicId) { $accountGateway->save(); } else { $account->account_gateways()->save($accountGateway); } if (isset($wepayResponse)) { return $wepayResponse; } else { if ($accountGatewayPublicId) { $message = trans('texts.updated_gateway'); } else { $message = trans('texts.created_gateway'); } Session::flash('message', $message); return Redirect::to("gateways/{$accountGateway->public_id}/edit"); } } }
/** * Stores new account * */ public function save($accountGatewayPublicId = false) { $rules = array(); $paymentType = Input::get('payment_type_id'); $gatewayId = Input::get('gateway_id'); if ($paymentType == PAYMENT_TYPE_PAYPAL) { $gatewayId = GATEWAY_PAYPAL_EXPRESS; } elseif ($paymentType == PAYMENT_TYPE_BITCOIN) { $gatewayId = GATEWAY_BITPAY; } if (!$gatewayId) { Session::flash('error', trans('validation.required', ['attribute' => 'gateway'])); return Redirect::to('gateways/create')->withInput(); } $gateway = Gateway::findOrFail($gatewayId); $fields = $gateway->getFields(); foreach ($fields as $field => $details) { if (!in_array($field, ['testMode', 'developerMode', 'headerImageUrl', 'solutionType', 'landingPage', 'brandName', 'logoImageUrl', 'borderColor'])) { if (strtolower($gateway->name) == 'beanstream') { if (in_array($field, ['merchant_id', 'passCode'])) { $rules[$gateway->id . '_' . $field] = 'required'; } } else { $rules[$gateway->id . '_' . $field] = 'required'; } } } $creditcards = Input::get('creditCardTypes'); $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return Redirect::to('gateways/create')->withErrors($validator)->withInput(); } else { $account = Account::with('account_gateways')->findOrFail(Auth::user()->account_id); $oldConfig = null; if ($accountGatewayPublicId) { $accountGateway = AccountGateway::scope($accountGatewayPublicId)->firstOrFail(); $oldConfig = json_decode($accountGateway->config); } else { $accountGateway = AccountGateway::createNew(); $accountGateway->gateway_id = $gatewayId; } $config = new stdClass(); foreach ($fields as $field => $details) { $value = trim(Input::get($gateway->id . '_' . $field)); // if the new value is masked use the original value if ($value && $value === str_repeat('*', strlen($value))) { $value = $oldConfig->{$field}; } if (!$value && ($field == 'testMode' || $field == 'developerMode')) { // do nothing } else { $config->{$field} = $value; } } $cardCount = 0; if ($creditcards) { foreach ($creditcards as $card => $value) { $cardCount += intval($value); } } $accountGateway->accepted_credit_cards = $cardCount; $accountGateway->config = json_encode($config); if ($accountGatewayPublicId) { $accountGateway->save(); } else { $account->account_gateways()->save($accountGateway); } if (Input::get('token_billing_type_id')) { $account->token_billing_type_id = Input::get('token_billing_type_id'); $account->save(); } if ($accountGatewayPublicId) { $message = trans('texts.updated_gateway'); } else { $message = trans('texts.created_gateway'); } Session::flash('message', $message); return Redirect::to('company/payments'); } }