Exception handling

This commit is contained in:
David Bomba 2024-09-09 16:28:56 +10:00
parent 2e114692e7
commit 54afae4d8b
4 changed files with 30 additions and 12 deletions

View File

@ -153,8 +153,9 @@ class CreditCard implements LivewireMethodInterface
nlog($r->body());
if($r->failed())
$r->throw();
if ($r->failed()) {
return $this->processUnsuccessfulPayment($r);
}
$charge = $r->json();
nlog($charge['resource']['data']);
@ -165,6 +166,8 @@ class CreditCard implements LivewireMethodInterface
public function paymentResponse(PaymentResponseRequest $request)
{
nlog($request->all());
$request->headers->set('Accept', 'application/json');
$this->powerboard->payment_hash->data = array_merge((array) $this->powerboard->payment_hash->data, ['response' => $request->all()]);
$this->powerboard->payment_hash->save();
@ -219,7 +222,7 @@ class CreditCard implements LivewireMethodInterface
$r = $this->powerboard->gatewayRequest("/v1/charges", (\App\Enum\HttpVerb::POST)->value, $payload, []);
if($r->failed())
$r->throw();
return $this->processUnsuccessfulPayment($r);
$charge = (new \App\PaymentDrivers\CBAPowerBoard\Models\Parse())->encode(Charge::class, $r->object()->resource->data) ?? $r->throw();
@ -229,9 +232,6 @@ class CreditCard implements LivewireMethodInterface
$this->powerboard->logSuccessfulGatewayResponse(['response' => $charge, 'data' => $this->powerboard->payment_hash], SystemLog::TYPE_POWERBOARD);
$vt = $charge->customer->payment_source->vault_token;
// nlog($this->powerboard->payment_hash->data);
// $vt = $r->object()->resource->data->_3ds->id;
if($request->store_card){
$data = [
@ -283,8 +283,19 @@ class CreditCard implements LivewireMethodInterface
return redirect()->route('client.payments.show', ['payment' => $payment->hashed_id]);
}
public function processUnsuccessfulPayment($server_response)
public function processUnsuccessfulPayment($response)
{
try{
$response->throw();
}
catch(\Throwable $exception){
$error_object = $exception->response->object();
nlog($error_object);
return response()->json(['message' => $error_object->error->details->messages[0]->gateway_specific_code, 'code' => 400], 400);
}
// $this->stripe->sendFailureMail($server_response->cancellation_reason);
// $message = [

View File

@ -22,7 +22,9 @@ return new class extends Migration
$fields->secretKey = '';
// $fields->applicationId = '';
// $fields->locationId = '';
$fields->testMode = false;
$fields->Threeds = false;
$powerboard = new Gateway();
$powerboard->id = 64;

View File

@ -89,7 +89,7 @@ class PaymentLibrariesSeeder extends Seeder
['id' => 61, 'name' => 'PayPal Platform', 'provider' => 'PayPal_PPCP', 'key' => '80af24a6a691230bbec33e930ab40666', 'fields' => '{"testMode":false}'],
['id' => 62, 'name' => 'BTCPay', 'provider' => 'BTCPay', 'key' => 'vpyfbmdrkqcicpkjqdusgjfluebftuva', 'fields' => '{"btcpayUrl":"", "apiKey":"", "storeId":"", "webhookSecret":""}'],
['id' => 63, 'name' => 'Rotessa', 'is_offsite' => false, 'sort_order' => 22, 'provider' => 'Rotessa', 'key' => '91be24c7b792230bced33e930ac61676', 'fields' => '{"apiKey":"", "testMode":false}'],
['id' => 64, 'name' => 'CBA PowerBoard', 'is_offsite' => false, 'sort_order' => 26, 'provider' => 'CBAPowerBoard', 'key' => 'b67581d804dbad1743b61c57285142ad', 'fields' => '{"publicKey":"", "secretKey":"", "testMode":false}'],
['id' => 64, 'name' => 'CBA PowerBoard', 'is_offsite' => false, 'sort_order' => 26, 'provider' => 'CBAPowerBoard', 'key' => 'b67581d804dbad1743b61c57285142ad', 'fields' => '{"publicKey":"", "secretKey":"", "testMode":false, "Threeds":true}'],
];
foreach ($gateways as $gateway) {

View File

@ -265,16 +265,21 @@
headers: {
'Content-Type': 'application/json',
"X-Requested-With": "XMLHttpRequest",
"Accept": 'application/json',
"X-CSRF-Token": document.querySelector('meta[name="csrf-token"]').content
},
body: formData
})
if (!response.ok) {
if (!response.ok) {
const text = await response.text();
throw new Error(`Network response was not ok: ${response.statusText}. Response text: ${text}`);
}
return await response.json().then(errorData => {
throw new Error(errorData.message ?? 'Unknown error.');
});
// const text = await response.text();
// throw new Error(`Network response was not ok: ${response.statusText}. Response text: ${text}`);
}
return await response.json()