2020-11-25 22:07:09 +01:00
< ? php
/**
* Invoice Ninja ( https :// invoiceninja . com ) .
*
* @ link https :// github . com / invoiceninja / invoiceninja source repository
*
2023-01-28 23:21:40 +01:00
* @ copyright Copyright ( c ) 2023. Invoice Ninja LLC ( https :// invoiceninja . com )
2020-11-25 22:07:09 +01:00
*
2021-06-16 08:58:16 +02:00
* @ license https :// www . elastic . co / licensing / elastic - license
2020-11-25 22:07:09 +01:00
*/
2021-08-18 16:45:16 +02:00
namespace App\PaymentDrivers\Sample ;
2020-11-25 22:07:09 +01:00
2021-06-24 11:45:45 +02:00
use App\Http\Requests\Payments\PaymentWebhookRequest ;
2021-04-13 01:52:17 +02:00
use App\Models\ClientGatewayToken ;
use App\Models\GatewayType ;
use App\Models\Payment ;
use App\Models\PaymentHash ;
use App\Models\SystemLog ;
2022-04-01 02:35:39 +02:00
use App\PaymentDrivers\BaseDriver ;
2020-11-25 22:07:09 +01:00
use App\Utils\Traits\MakesHash ;
2021-07-22 03:30:16 +02:00
class PaymentDriver extends BaseDriver
2020-11-25 22:07:09 +01:00
{
use MakesHash ;
public $refundable = true ; //does this gateway support refunds?
public $token_billing = true ; //does this gateway support token billing?
public $can_authorise_credit_card = true ; //does this gateway support authorizations?
public $gateway ; //initialized gateway
public $payment_method ; //initialized payment method
public static $methods = [
GatewayType :: CREDIT_CARD => CreditCard :: class , //maps GatewayType => Implementation class
];
2024-01-14 05:05:00 +01:00
public const SYSTEM_LOG_TYPE = SystemLog :: TYPE_STRIPE ; //define a constant for your gateway ie TYPE_YOUR_CUSTOM_GATEWAY - set the const in the SystemLog model
2020-11-25 22:07:09 +01:00
2021-06-24 07:51:30 +02:00
public function init ()
{
return $this ; /* This is where you boot the gateway with your auth credentials*/
}
/* Returns an array of gateway types for the payment gateway */
public function gatewayTypes () : array
{
$types = [];
2022-06-21 11:57:17 +02:00
$types [] = GatewayType :: CREDIT_CARD ;
2021-06-24 07:51:30 +02:00
return $types ;
}
/* Sets the payment method initialized */
2020-11-25 22:07:09 +01:00
public function setPaymentMethod ( $payment_method_id )
{
$class = self :: $methods [ $payment_method_id ];
$this -> payment_method = new $class ( $this );
2022-06-21 11:57:17 +02:00
2020-11-25 22:07:09 +01:00
return $this ;
}
public function authorizeView ( array $data )
{
return $this -> payment_method -> authorizeView ( $data ); //this is your custom implementation from here
}
public function authorizeResponse ( $request )
{
return $this -> payment_method -> authorizeResponse ( $request ); //this is your custom implementation from here
}
public function processPaymentView ( array $data )
{
return $this -> payment_method -> paymentView ( $data ); //this is your custom implementation from here
}
2020-11-27 12:08:42 +01:00
public function processPaymentResponse ( $request )
2020-11-25 22:07:09 +01:00
{
return $this -> payment_method -> paymentResponse ( $request ); //this is your custom implementation from here
}
public function refund ( Payment $payment , $amount , $return_client_response = false )
{
2021-07-22 03:30:16 +02:00
//this is your custom implementation from here
2020-11-25 22:07:09 +01:00
}
public function tokenBilling ( ClientGatewayToken $cgt , PaymentHash $payment_hash )
{
2021-07-22 03:30:16 +02:00
//this is your custom implementation from here
2020-11-25 22:07:09 +01:00
}
2021-06-24 11:45:45 +02:00
public function processWebhookRequest ( PaymentWebhookRequest $request , Payment $payment = null )
{
}
2020-11-25 22:07:09 +01:00
}