diff --git a/app/PaymentDrivers/WePay/CreditCard.php b/app/PaymentDrivers/WePay/CreditCard.php
index 5d8bc96d4a9f..2c1d76878db1 100644
--- a/app/PaymentDrivers/WePay/CreditCard.php
+++ b/app/PaymentDrivers/WePay/CreditCard.php
@@ -12,6 +12,8 @@
namespace App\PaymentDrivers\WePay;
+use App\Exceptions\PaymentFailed;
+use App\Models\GatewayType;
use App\PaymentDrivers\WePayPaymentDriver;
class CreditCard
@@ -33,21 +35,79 @@ class CreditCard
public function authorizeResponse($request)
{
//https://developer.wepay.com/api/api-calls/credit_card#authorize
-
$data = $request->all();
// authorize the credit card
nlog($data);
+ /*
+ '_token' => '1Fk5CRj34up5ntKPvrFyMIAJhDdUNF3boqT3iIN3',
+ 'company_gateway_id' => '39',
+ 'payment_method_id' => '1',
+ 'gateway_response' => NULL,
+ 'is_default' => NULL,
+ 'credit_card_id' => '180642154638',
+ 'q' => '/client/payment_methods',
+ 'method' => '1',
+ */
$response = $this->wepay_payment_driver->wepay->request('credit_card/authorize', array(
- 'account_id' => $this->wepay_payment_driver->company_gateway->getConfigField('accountId'),
'client_id' => config('ninja.wepay.client_id'),
'client_secret' => config('ninja.wepay.client_secret'),
- 'credit_card_id' => $data['credit_card_id'],
+ 'credit_card_id' => (int)$data['credit_card_id'],
));
// display the response
- print_r($response);
- nlog($response);
- }
+ //nlog($response);
+
+ if(in_array($response->state, ['new', 'authorized'])){
+
+ $this->storePaymentMethod($response, GatewayType::CREDIT_CARD);
+
+ return redirect()->route('client.payment_methods.index');
+ }
+
+ throw new PaymentFailed("There was a problem adding this payment method.", 400);
+
+ /*
+ [credit_card_id] => 348084962473
+ [credit_card_name] => Visa xxxxxx4018
+ [state] => authorized
+ [user_name] => Joey Diaz
+ [email] => user@example.com
+ [create_time] => 1623798172
+ [expiration_month] => 10
+ [expiration_year] => 2023
+ [last_four] => 4018
+ [input_source] => card_keyed
+ [virtual_terminal_mode] => none
+ [card_on_file] =>
+ [recurring] =>
+ [cvv_provided] => 1
+ [auto_update] =>
+ */
+
+ }
+
+
+ private function storePaymentMethod($response, $payment_method_id)
+ {
+
+ $payment_meta = new \stdClass;
+ $payment_meta->exp_month = (string) $response->expiration_month;
+ $payment_meta->exp_year = (string) $response->expiration_year;
+ $payment_meta->brand = (string) $response->credit_card_name;
+ $payment_meta->last4 = (string) $response->last_four;
+ $payment_meta->type = GatewayType::CREDIT_CARD;
+
+ $data = [
+ 'payment_meta' => $payment_meta,
+ 'token' => $response->credit_card_id,
+ 'payment_method_id' => $payment_method_id,
+ ];
+
+ $this->wepay_payment_driver->storeGatewayToken($data);
+
+ }
+
}
+
diff --git a/resources/views/portal/ninja2020/gateways/wepay/authorize/authorize.blade.php b/resources/views/portal/ninja2020/gateways/wepay/authorize/authorize.blade.php
index 160fdd847c94..8be02b9c9b17 100644
--- a/resources/views/portal/ninja2020/gateways/wepay/authorize/authorize.blade.php
+++ b/resources/views/portal/ninja2020/gateways/wepay/authorize/authorize.blade.php
@@ -44,10 +44,11 @@