mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-08 17:54:30 -04:00
Payment webhook fixes
This commit is contained in:
parent
d71017e203
commit
406249ef95
@ -13,6 +13,7 @@ use Datatable;
|
||||
use Validator;
|
||||
use Cache;
|
||||
use Redirect;
|
||||
use Exception;
|
||||
use App\Models\Gateway;
|
||||
use App\Models\Invitation;
|
||||
use App\Models\Document;
|
||||
|
@ -152,6 +152,7 @@ class OnlinePaymentController extends BaseController
|
||||
$result = $paymentDriver->handleWebHook(Input::all());
|
||||
return response()->json(['message' => $result]);
|
||||
} catch (Exception $exception) {
|
||||
Utils::logError($exception->getMessage(), 'PHP');
|
||||
return response()->json(['message' => $exception->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ Route::get('/auth_unlink', 'Auth\AuthController@authUnlink');
|
||||
|
||||
Route::post('/hook/email_bounced', 'AppController@emailBounced');
|
||||
Route::post('/hook/email_opened', 'AppController@emailOpened');
|
||||
Route::post('/payment_hook/{accountKey}/{gatewayId}', 'PaymentController@handlePaymentWebhook');
|
||||
Route::post('/payment_hook/{accountKey}/{gatewayId}', 'OnlinePaymentController@handlePaymentWebhook');
|
||||
|
||||
// Laravel auth routes
|
||||
Route::get('/signup', array('as' => 'signup', 'uses' => 'Auth\AuthController@getRegister'));
|
||||
|
@ -154,12 +154,14 @@ class BraintreePaymentDriver extends BasePaymentDriver
|
||||
|
||||
public function removePaymentMethod($paymentMethod)
|
||||
{
|
||||
parent::removePaymentMethod($paymentMethod);
|
||||
|
||||
$response = $this->gateway()->deletePaymentMethod([
|
||||
'token' => $paymentMethod->source_reference
|
||||
])->send();
|
||||
|
||||
if ($response->isSuccessful()) {
|
||||
return parent::removePaymentMethod($paymentMethod);
|
||||
return true;
|
||||
} else {
|
||||
throw new Exception($response->getMessage());
|
||||
}
|
||||
|
@ -179,6 +179,8 @@ class StripePaymentDriver extends BasePaymentDriver
|
||||
|
||||
public function removePaymentMethod($paymentMethod)
|
||||
{
|
||||
parent::removePaymentMethod($paymentMethod);
|
||||
|
||||
if ( ! $paymentMethod->relationLoaded('account_gateway_token')) {
|
||||
$paymentMethod->load('account_gateway_token');
|
||||
}
|
||||
@ -189,7 +191,7 @@ class StripePaymentDriver extends BasePaymentDriver
|
||||
])->send();
|
||||
|
||||
if ($response->isSuccessful()) {
|
||||
return parent::removePaymentMethod($paymentMethod);
|
||||
return true;
|
||||
} else {
|
||||
throw new Exception($response->getMessage());
|
||||
}
|
||||
@ -322,8 +324,10 @@ class StripePaymentDriver extends BasePaymentDriver
|
||||
$supportedEvents = array(
|
||||
'charge.failed',
|
||||
'charge.succeeded',
|
||||
'charge.refunded',
|
||||
'customer.source.updated',
|
||||
'customer.source.deleted',
|
||||
'customer.bank_account.deleted',
|
||||
);
|
||||
|
||||
if (!in_array($eventType, $supportedEvents)) {
|
||||
@ -345,7 +349,7 @@ class StripePaymentDriver extends BasePaymentDriver
|
||||
throw new Exception('This is not a pending event');
|
||||
}
|
||||
|
||||
if ($eventType == 'charge.failed' || $eventType == 'charge.succeeded') {
|
||||
if ($eventType == 'charge.failed' || $eventType == 'charge.succeeded' || $eventType == 'charge.refunded') {
|
||||
$charge = $eventDetails['data']['object'];
|
||||
$transactionRef = $charge['id'];
|
||||
|
||||
@ -367,7 +371,7 @@ class StripePaymentDriver extends BasePaymentDriver
|
||||
} elseif ($eventType == 'charge.refunded') {
|
||||
$payment->recordRefund($charge['amount_refunded'] / 100 - $payment->refunded);
|
||||
}
|
||||
} elseif($eventType == 'customer.source.updated' || $eventType == 'customer.source.deleted') {
|
||||
} elseif($eventType == 'customer.source.updated' || $eventType == 'customer.source.deleted' || $eventType == 'customer.bank_account.deleted') {
|
||||
$source = $eventDetails['data']['object'];
|
||||
$sourceRef = $source['id'];
|
||||
|
||||
@ -377,7 +381,7 @@ class StripePaymentDriver extends BasePaymentDriver
|
||||
throw new Exception('Unknown payment method');
|
||||
}
|
||||
|
||||
if ($eventType == 'customer.source.deleted') {
|
||||
if ($eventType == 'customer.source.deleted' || $eventType == 'customer.bank_account.deleted') {
|
||||
$paymentMethod->delete();
|
||||
}
|
||||
|
||||
|
@ -165,6 +165,8 @@ class WePayPaymentDriver extends BasePaymentDriver
|
||||
|
||||
public function removePaymentMethod($paymentMethod)
|
||||
{
|
||||
parent::removePaymentMethod($paymentMethod);
|
||||
|
||||
$wepay = Utils::setupWePay($this->accountGateway);
|
||||
$response = $wepay->request('/credit_card/delete', [
|
||||
'client_id' => WEPAY_CLIENT_ID,
|
||||
@ -173,7 +175,7 @@ class WePayPaymentDriver extends BasePaymentDriver
|
||||
]);
|
||||
|
||||
if ($response->state == 'deleted') {
|
||||
return parent::removePaymentMethod($paymentMethod);
|
||||
return true;
|
||||
} else {
|
||||
throw new Exception(trans('texts.failed_remove_payment_method'));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user