diff --git a/app/Http/Requests/Payments/PaymentWebhookRequest.php b/app/Http/Requests/Payments/PaymentWebhookRequest.php index 50bc276c14ae..5aac0825e4f4 100644 --- a/app/Http/Requests/Payments/PaymentWebhookRequest.php +++ b/app/Http/Requests/Payments/PaymentWebhookRequest.php @@ -65,54 +65,6 @@ class PaymentWebhookRequest extends Request return false; } - /** - * Resolve possible payment in the request. - * - * @return null|\App\Models\Payment - */ - public function getPayment() - { - // For testing purposes we'll slow down the webhook processing by 2 seconds - // to make sure webhook request doesn't came before our processing. - //if (app()->environment() !== 'production') { - sleep(2); - //} - - // Some gateways, like Checkout, we can dynamically pass payment hash, - // which we will resolve here and get payment information from it. - if ($this->getPaymentHash()) { - return $this->getPaymentHash()->payment; - } - - // While for some gateways, we need to extract the payment source/reference from the webhook request. - // Gateways like this: Stripe - if ($this->has('api_version') && $this->has('type') && $this->has('data')) { - $src = $this->data['object']['id']; - - return Payment::where('transaction_reference', $src)->firstOrFail(); - } - - // If none of previously done logics is correct, we'll just display - // not found page. - return false; - } - - /** - * Resolve client from payment hash. - * - * @return null|\App\Models\Client|bool - */ - public function getClient() - { - $hash = $this->getPaymentHash(); - - if($hash) { - return Client::find($hash->data->client_id)->firstOrFail(); - } - - return false; - } - /** * Resolve company from company_key parameter. * diff --git a/app/PaymentDrivers/CheckoutComPaymentDriver.php b/app/PaymentDrivers/CheckoutComPaymentDriver.php index 708ada890f03..e820808316e3 100644 --- a/app/PaymentDrivers/CheckoutComPaymentDriver.php +++ b/app/PaymentDrivers/CheckoutComPaymentDriver.php @@ -332,7 +332,7 @@ class CheckoutComPaymentDriver extends BaseDriver } } - public function processWebhookRequest(PaymentWebhookRequest $request, Payment $payment = null) + public function processWebhookRequest(PaymentWebhookRequest $request) { return true; } diff --git a/app/PaymentDrivers/StripePaymentDriver.php b/app/PaymentDrivers/StripePaymentDriver.php index 99695f13aa15..82d45ce1490d 100644 --- a/app/PaymentDrivers/StripePaymentDriver.php +++ b/app/PaymentDrivers/StripePaymentDriver.php @@ -388,21 +388,23 @@ class StripePaymentDriver extends BaseDriver return $this->payment_method->processVerification($request, $payment_method); } - public function processWebhookRequest(PaymentWebhookRequest $request, Payment $payment) + public function processWebhookRequest(PaymentWebhookRequest $request) { - if ($request->type == 'source.chargeable') { - $payment->status_id = Payment::STATUS_COMPLETED; - $payment->save(); + if ($request->type === 'charge.succeeded' || $request->type === 'source.chargeable') { + foreach ($request->data as $transaction) { + $payment = Payment::query() + ->where('transaction_reference', $transaction['id']) + ->where('company_id', $request->getCompany()->id) + ->first(); + + if ($payment) { + $payment->status_id = Payment::STATUS_COMPLETED; + $payment->save(); + } + } } - if ($request->type == 'charge.succeeded') { - $payment->status_id = Payment::STATUS_COMPLETED; - $payment->save(); - } - - // charge.failed, charge.refunded - - return response([], 200); + return response()->json([], 200); } public function tokenBilling(ClientGatewayToken $cgt, PaymentHash $payment_hash) diff --git a/app/PaymentDrivers/WePayPaymentDriver.php b/app/PaymentDrivers/WePayPaymentDriver.php index cebe3812c2d2..89f628654b3f 100644 --- a/app/PaymentDrivers/WePayPaymentDriver.php +++ b/app/PaymentDrivers/WePayPaymentDriver.php @@ -168,6 +168,8 @@ class WePayPaymentDriver extends BaseDriver $input = $request->all(); + $config = $this->company_gateway->getConfig(); + $accountId = $this->company_gateway->getConfigField('accountId'); foreach (array_keys($input) as $key) {