This repository has been archived by the owner on Feb 7, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
QuickPay.php
65 lines (48 loc) · 1.79 KB
/
QuickPay.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
namespace nickknissen\QuickPay;
use Illuminate\Support\Facades\App;
use QuickPay\QuickPay as QuickPayVendor;
use nickknissen\QuickPay\Exceptions\QuickPayValidationError;
use nickknissen\QuickPay\Exceptions\QuickPayTestNotAllowed;
use nickknissen\QuickPay\Exceptions\ConfigNotCorrect;
use nickknissen\QuickPay\Exceptions\CardNotAccepted;
class QuickPay
{
protected $client;
public function __construct()
{
$credentials = null;
if (config('quickpay.api_key')) {
$credentials = ":".config('quickpay.api_key');
} else if (config('quickpay.login') && config('quickpay.password')) {
$credentials = sprintf('%s:%s', config('quickpay.login'), config('quickpay.password'));
}
if (!$credentials) {
throw new ConfigNotCorrect('You should specify an `api_key` or `login` and `password` in the `quickpay` config file');
}
$this->client = new QuickPayVendor($credentials);
}
public function request(string $method, string $url, array $data = []) : object
{
$response = $this->client->request->$method($url, $data);
if ($response->isSuccess()) {
$data = $response->asObject();
if (App::environment('production') && $data->test_mode) {
throw new QuickPayTestNotAllowed();
}
if (!empty($data->operations) && !$data->accepted) {
throw new CardNotAccepted($data);
}
return $data;
} else {
throw new QuickPayValidationError($response);
}
}
public function orderIdPrefix() : string
{
if (str_contains(strtolower(config('app.env')), 'prod')) {
return '';
}
return 'E' . mb_substr(config('app.env'), 0, 1);
}
}