Attendize/app/Services/PaymentGateway/Stripe.php

92 lines
2.2 KiB
PHP

<?php
namespace Services\PaymentGateway;
class Stripe
{
CONST GATEWAY_NAME = 'Stripe';
private $transaction_data;
private $gateway;
private $extra_params = ['stripeToken'];
public function __construct($gateway)
{
$this->gateway = $gateway;
$this->options = [];
}
private function createTransactionData($order_total, $order_email, $event)
{
$this->transaction_data = [
'amount' => $order_total,
'currency' => $event->currency->code,
'description' => 'Order for customer: ' . $order_email,
'token' => $this->options['stripeToken'],
'receipt_email' => $order_email
];
return $this->transaction_data;
}
public function startTransaction($order_total, $order_email, $event)
{
$this->createTransactionData($order_total, $order_email, $event);
$transaction = $this->gateway->purchase($this->transaction_data);
$response = $transaction->send();
return $response;
}
public function getTransactionData()
{
return $this->transaction_data;
}
public function extractRequestParameters($request)
{
foreach ($this->extra_params as $param) {
if (!empty($request->get($param))) {
$this->options[$param] = $request->get($param);
}
}
}
public function completeTransaction($transactionId)
{
}
public function getAdditionalData()
{
}
public function storeAdditionalData()
{
return false;
}
public function refundTransaction($order, $refund_amount, $refund_application_fee)
{
$request = $this->gateway->refund([
'transactionReference' => $order->transaction_id,
'amount' => $refund_amount,
'refundApplicationFee' => $refund_application_fee
]);
$response = $request->send();
if ($response->isSuccessful()) {
$refundResponse['successful'] = true;
} else {
$refundResponse['successful'] = false;
$refundResponse['error_message'] = $response->getMessage();
}
return $refundResponse;
}
}