Add token billing into Rotessa
This commit is contained in:
parent
f8dbb2753b
commit
387ada1e02
|
|
@ -142,7 +142,7 @@ class PaymentMethod implements MethodInterface, LivewireMethodInterface
|
||||||
{
|
{
|
||||||
$data = $this->paymentData($data);
|
$data = $this->paymentData($data);
|
||||||
|
|
||||||
if ($data['authorize_then_redirect']) {
|
if ($data['authorize_then_redirect'] ?? false) {
|
||||||
return $this->authorizeView($data);
|
return $this->authorizeView($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -194,27 +194,7 @@ class PaymentMethod implements MethodInterface, LivewireMethodInterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function processPendingPayment($payment_id, float $amount, int $gateway_type_id, $payment_method)
|
|
||||||
{
|
|
||||||
$data = [
|
|
||||||
'payment_method' => $payment_method,
|
|
||||||
'payment_type' => $gateway_type_id,
|
|
||||||
'amount' => $amount,
|
|
||||||
'transaction_reference' => $payment_id,
|
|
||||||
'gateway_type_id' => $gateway_type_id,
|
|
||||||
];
|
|
||||||
$payment = $this->rotessa->createPayment($data, Payment::STATUS_PENDING);
|
|
||||||
SystemLogger::dispatch(
|
|
||||||
[ 'data' => $data ],
|
|
||||||
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
|
||||||
SystemLog::EVENT_GATEWAY_SUCCESS,
|
|
||||||
SystemLog::TYPE_ROTESSA,
|
|
||||||
$this->rotessa->client,
|
|
||||||
$this->rotessa->client->company,
|
|
||||||
);
|
|
||||||
|
|
||||||
return redirect()->route('client.payments.show', [ 'payment' => $payment->hashed_id ]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle unsuccessful payment for Rotessa.
|
* Handle unsuccessful payment for Rotessa.
|
||||||
|
|
@ -288,4 +268,76 @@ class PaymentMethod implements MethodInterface, LivewireMethodInterface
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function tokenBilling(\App\Models\ClientGatewayToken $customer, \App\Models\PaymentHash $payment_hash)
|
||||||
|
{
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
$transaction = array_merge($this->transaction, [
|
||||||
|
'amount' => $payment_hash->data->amount_with_fee,
|
||||||
|
'process_date' => now()->addSeconds($customer->client->utc_offset())->format('Y-m-d'),
|
||||||
|
'comment' => $this->rotessa->getDescription(false),
|
||||||
|
'customer_id' => $customer->gateway_customer_reference,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = $this->rotessa->gatewayRequest('post', 'transaction_schedules', $transaction);
|
||||||
|
|
||||||
|
if ($response->failed()) {
|
||||||
|
$response->throw();
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = $response->json();
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'payment_method' => $customer->token,
|
||||||
|
'payment_type' => PaymentType::ACSS,
|
||||||
|
'amount' => $response['amount'],
|
||||||
|
'transaction_reference' => $response['id'],
|
||||||
|
'gateway_type_id' => PaymentType::ACSS,
|
||||||
|
];
|
||||||
|
|
||||||
|
SystemLogger::dispatch(
|
||||||
|
[ 'data' => $data ],
|
||||||
|
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
||||||
|
SystemLog::EVENT_GATEWAY_SUCCESS,
|
||||||
|
SystemLog::TYPE_ROTESSA,
|
||||||
|
$this->rotessa->client,
|
||||||
|
$this->rotessa->client->company,
|
||||||
|
);
|
||||||
|
|
||||||
|
$payment = $this->rotessa->createPayment($data, Payment::STATUS_PENDING);
|
||||||
|
|
||||||
|
return $payment;
|
||||||
|
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$this->processUnsuccessfulPayment(new \Exception($e->getMessage(), (int) $e->getCode()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function processPendingPayment($payment_id, float $amount, int $gateway_type_id, $payment_method)
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'payment_method' => $payment_method,
|
||||||
|
'payment_type' => $gateway_type_id,
|
||||||
|
'amount' => $amount,
|
||||||
|
'transaction_reference' => $payment_id,
|
||||||
|
'gateway_type_id' => $gateway_type_id,
|
||||||
|
];
|
||||||
|
$payment = $this->rotessa->createPayment($data, Payment::STATUS_PENDING);
|
||||||
|
SystemLogger::dispatch(
|
||||||
|
[ 'data' => $data ],
|
||||||
|
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
||||||
|
SystemLog::EVENT_GATEWAY_SUCCESS,
|
||||||
|
SystemLog::TYPE_ROTESSA,
|
||||||
|
$this->rotessa->client,
|
||||||
|
$this->rotessa->client->company,
|
||||||
|
);
|
||||||
|
|
||||||
|
return redirect()->route('client.payments.show', [ 'payment' => $payment->hashed_id ]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -276,6 +276,15 @@ class RotessaPaymentDriver extends BaseDriver
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function tokenBilling(\App\Models\ClientGatewayToken $cgt, \App\Models\PaymentHash $payment_hash)
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->setPaymentMethod($cgt->gateway_type_id);
|
||||||
|
|
||||||
|
return $this->payment_method->tokenBilling($cgt, $payment_hash);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private function getUrl(): string
|
private function getUrl(): string
|
||||||
{
|
{
|
||||||
return $this->company_gateway->getConfigField('testMode') ? 'https://sandbox-api.rotessa.com/v1/' : 'https://api.rotessa.com/v1/';
|
return $this->company_gateway->getConfigField('testMode') ? 'https://sandbox-api.rotessa.com/v1/' : 'https://api.rotessa.com/v1/';
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue