Fixes for Sofort

This commit is contained in:
David Bomba 2021-09-14 22:01:28 +10:00
parent 42ff354eb9
commit 778cf73ad1
3 changed files with 38 additions and 5 deletions

View File

@ -62,10 +62,10 @@ class SupportMessageSent extends Mailable
$company = auth()->user()->company();
$user = auth()->user();
$db = str_replace("db-ninja-", "", $company->db);
$is_large = $company->is_large ? "L" : "";
$is_large = $company->is_large ? "L" : "S";
if(Ninja::isHosted())
$subject = "{$priority}Hosted-{$db}{$is_large} :: {$plan} :: ".date('M jS, g:ia');
$subject = "{$priority}Hosted-{$db}-{$is_large} :: {$plan} :: ".date('M jS, g:ia');
else
$subject = "{$priority}Self Hosted :: {$plan} :: ".date('M jS, g:ia');

View File

@ -85,7 +85,7 @@ class SOFORT
'gateway_type_id' => GatewayType::SOFORT,
];
$payment = $this->stripe->createPayment($data, Payment::STATUS_PENDING);
// $payment = $this->stripe->createPayment($data, Payment::STATUS_PENDING);
SystemLogger::dispatch(
['response' => $this->stripe->payment_hash->data, 'data' => $data],
@ -96,7 +96,7 @@ class SOFORT
$this->stripe->client->company,
);
return redirect()->route('client.payments.show', ['payment' => $this->stripe->encodePrimaryKey($payment->id)]);
return redirect()->route('client.payments.index');
}
public function processUnsuccessfulPayment()

View File

@ -22,6 +22,7 @@ use App\Models\ClientGatewayToken;
use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentHash;
use App\Models\PaymentType;
use App\Models\SystemLog;
use App\PaymentDrivers\Stripe\ACH;
use App\PaymentDrivers\Stripe\Alipay;
@ -422,7 +423,7 @@ class StripePaymentDriver extends BaseDriver
// Allow app to catch up with webhook request.
sleep(2);
if ($request->type === 'charge.succeeded' || $request->type === 'source.chargeable') {
if ($request->type === 'charge.succeeded') {
foreach ($request->data as $transaction) {
$payment = Payment::query()
->where('transaction_reference', $transaction['id'])
@ -435,6 +436,33 @@ class StripePaymentDriver extends BaseDriver
}
}
}
elseif($request->type === 'source.chargeable'){
$this->init();
$charge = \Stripe\Charge::create([
'amount' => $request->amount,
'currency' => $request->currency,
'source' => $request->id,
], $this->stripe_connect_auth);
if($charge->captured)
{
$this->setClientFromCustomer($request->customer);
$data = [
'payment_method' => $request->id,
'payment_type' => PaymentType::SOFORT,
'amount' => $this->convertFromStripeAmount($request->amount, $this->client->currency()->precision, $this->client->currency()),
'transaction_reference' => $charge->id,
'gateway_type_id' => GatewayType::SOFORT,
];
$payment = $this->createPayment($data, Payment::STATUS_COMPLETED);
}
}
return response()->json([], 200);
}
@ -540,6 +568,11 @@ class StripePaymentDriver extends BaseDriver
return Account::all();
}
public function setClientFromCustomer($customer)
{
$this->client = ClientGatewayToken::where('gateway_customer_reference', $customer)->client;
}
/**
* Pull all client payment methods and update
* the respective tokens in the system.