mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-07 18:14:32 -04:00
Add Credit card to client portal
This commit is contained in:
parent
70d146333b
commit
0f9f418e7e
@ -145,7 +145,7 @@ class StripePaymentDriver extends BasePaymentDriver
|
|||||||
|
|
||||||
$gateway_id = $request->input('gateway_id');
|
$gateway_id = $request->input('gateway_id');
|
||||||
$gateway_type_id = $request->input('payment_method_id');
|
$gateway_type_id = $request->input('payment_method_id');
|
||||||
$is_default = $request->input('is_default') ?: 0;
|
$is_default = $request->input('is_default');
|
||||||
|
|
||||||
$payment_method = $server_response->payment_method;
|
$payment_method = $server_response->payment_method;
|
||||||
|
|
||||||
@ -166,7 +166,7 @@ class StripePaymentDriver extends BasePaymentDriver
|
|||||||
$cgt->save();
|
$cgt->save();
|
||||||
|
|
||||||
|
|
||||||
if($is_default)
|
if($is_default == 'true')
|
||||||
{
|
{
|
||||||
$this->client->gateway_tokens()->update(['is_default'=>0]);
|
$this->client->gateway_tokens()->update(['is_default'=>0]);
|
||||||
|
|
||||||
@ -179,31 +179,51 @@ class StripePaymentDriver extends BasePaymentDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new String Payment Intent
|
* Creates a new String Payment Intent
|
||||||
|
*
|
||||||
* @param array $data The data array to be passed to Stripe
|
* @param array $data The data array to be passed to Stripe
|
||||||
* @return PaymentIntent The Stripe payment intent object
|
* @return PaymentIntent The Stripe payment intent object
|
||||||
*/
|
*/
|
||||||
public function createIntent($data)
|
public function createIntent($data) :?\Stripe\PaymentIntent
|
||||||
{
|
{
|
||||||
|
|
||||||
$this->init();
|
$this->init();
|
||||||
|
|
||||||
return PaymentIntent::create($data);
|
return PaymentIntent::create($data);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a setup intent that allows the user to enter card details without initiating a transaction.
|
* Returns a setup intent that allows the user
|
||||||
|
* to enter card details without initiating a transaction.
|
||||||
*
|
*
|
||||||
* @return \Stripe\SetupIntent
|
* @return \Stripe\SetupIntent
|
||||||
*/
|
*/
|
||||||
public function getSetupIntent()
|
public function getSetupIntent() :\Stripe\SetupIntent
|
||||||
{
|
{
|
||||||
|
|
||||||
$this->init();
|
$this->init();
|
||||||
|
|
||||||
return SetupIntent::create();
|
return SetupIntent::create();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPublishableKey()
|
|
||||||
|
/**
|
||||||
|
* Returns the Stripe publishable key
|
||||||
|
* @return NULL|string The stripe publishable key
|
||||||
|
*/
|
||||||
|
public function getPublishableKey() :?string
|
||||||
{
|
{
|
||||||
|
|
||||||
return $this->company_gateway->getPublishableKey();
|
return $this->company_gateway->getPublishableKey();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds or creates a Stripe Customer object
|
||||||
|
*
|
||||||
|
* @return NULL|\Stripe\Customer A Stripe customer object
|
||||||
|
*/
|
||||||
public function findOrCreateCustomer() :?\Stripe\Customer
|
public function findOrCreateCustomer() :?\Stripe\Customer
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -213,8 +233,11 @@ class StripePaymentDriver extends BasePaymentDriver
|
|||||||
|
|
||||||
$client_gateway_token = ClientGatewayToken::whereClientId($this->client->id)->whereCompanyGatewayId($this->company_gateway->id)->first();
|
$client_gateway_token = ClientGatewayToken::whereClientId($this->client->id)->whereCompanyGatewayId($this->company_gateway->id)->first();
|
||||||
|
|
||||||
if($client_gateway_token && $client_gateway_token->gateway_customer_reference)
|
if($client_gateway_token && $client_gateway_token->gateway_customer_reference){
|
||||||
|
|
||||||
$customer = \Stripe\Customer::retrieve($client_gateway_token->gateway_customer_reference);
|
$customer = \Stripe\Customer::retrieve($client_gateway_token->gateway_customer_reference);
|
||||||
|
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
|
|
||||||
$data['name'] = $this->client->present()->name();
|
$data['name'] = $this->client->present()->name();
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-check form-check-inline mr-1">
|
<div class="form-check form-check-inline mr-1">
|
||||||
<input class="form-check-input" id="proxy_is_default" type="checkbox" value="1">
|
<input class="form-check-input" id="proxy_is_default" type="checkbox">
|
||||||
<label class="form-check-label" for="proxy_is_default">{{ ctrans('texts.save_as_default') }}</label>
|
<label class="form-check-label" for="proxy_is_default">{{ ctrans('texts.save_as_default') }}</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -75,6 +75,7 @@
|
|||||||
|
|
||||||
$("#card-errors").empty();
|
$("#card-errors").empty();
|
||||||
$("#card-errors").append("<b>" + result.error.message + "</b>");
|
$("#card-errors").append("<b>" + result.error.message + "</b>");
|
||||||
|
$("#card-button").removeAttr("disabled");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// The setup has succeeded. Display a success message.
|
// The setup has succeeded. Display a success message.
|
||||||
@ -97,9 +98,9 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
$("#gateway_response").val(JSON.stringify(result.setupIntent));
|
$("#gateway_response").val(JSON.stringify(result.setupIntent));
|
||||||
$("#is_default").val($("#proxy_is_default").val());
|
$("#is_default").val($('#proxy_is_default').is(":checked"));
|
||||||
|
$("#card-button").attr("disabled", true);
|
||||||
$('#server_response').submit();
|
$('#server_response').submit();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user