1 | <?php |
||
31 | final class Request { |
||
32 | /** |
||
33 | * Payment.Ninja API endpoint |
||
34 | */ |
||
35 | const ENDPOINT_URI = 'https://api.payment.ninja/v1'; |
||
36 | |||
37 | /** |
||
38 | * @var string API method name |
||
39 | */ |
||
40 | private $method = ''; |
||
41 | |||
42 | /** |
||
43 | * @var array method call parameters |
||
44 | */ |
||
45 | private $parameters = []; |
||
46 | |||
47 | /** |
||
48 | * @var Closure|null response builder function |
||
49 | */ |
||
50 | private $ResponseBuilder = null; |
||
51 | |||
52 | /** |
||
53 | * @var int request timeout, seconds |
||
54 | */ |
||
55 | private $timeout = 0; |
||
56 | |||
57 | /** |
||
58 | * @var array map that store relations between API and HTTP methods for requests |
||
59 | */ |
||
60 | private static $methodMap = [ |
||
61 | 'user/resolve' => HttpRequest::METHOD_POST, |
||
62 | 'user/changeRecurring' => HttpRequest::METHOD_POST, |
||
63 | 'user/cancelRecurring' => HttpRequest::METHOD_POST, |
||
64 | 'card/getToken' => HttpRequest::METHOD_GET, |
||
65 | 'card/process' => HttpRequest::METHOD_POST, |
||
66 | 'card/authenticate' => HttpRequest::METHOD_POST, |
||
67 | 'card/processRecurring' => HttpRequest::METHOD_POST, |
||
68 | ]; |
||
69 | |||
70 | /** |
||
71 | * @param string $method API method name |
||
72 | * @param Closure $ResponseBuilder |
||
73 | * @param array $parameters method call parameters |
||
74 | * @param int $timeout request timeout, seconds |
||
75 | */ |
||
76 | 11 | public function __construct($method, Closure $ResponseBuilder, array $parameters = [], $timeout = 10) { |
|
82 | |||
83 | /** |
||
84 | * Sign request |
||
85 | * @param string $publicKey public application key |
||
86 | * @param string $privateKey private application key |
||
87 | * @throws LogicException when parameters already signed |
||
88 | */ |
||
89 | 8 | public function sign($publicKey, $privateKey) { |
|
99 | |||
100 | /** |
||
101 | * Execute API method |
||
102 | * @codeCoverageIgnore |
||
103 | * @return AbstractResponse response instance |
||
104 | * @throws ErrorException if there is an API error |
||
105 | */ |
||
106 | public function execute() { |
||
114 | |||
115 | /** |
||
116 | * Create HTTP request instance fr this API call |
||
117 | * @return HttpRequest HTTP request instance |
||
118 | */ |
||
119 | 1 | private function createRequest() { |
|
130 | |||
131 | /** |
||
132 | * Append parameters to HTTP request |
||
133 | * @param HttpRequest $HttpRequest HTTP request instance |
||
134 | */ |
||
135 | 1 | private function appendParameters(HttpRequest $HttpRequest) { |
|
147 | |||
148 | /** |
||
149 | * Calculates signature for incoming parameters |
||
150 | * @param array $parameters parameters |
||
151 | * @param string $privateKey private application key |
||
152 | * @return string signature |
||
153 | */ |
||
154 | 8 | private function signParameters(array $parameters, $privateKey) { |
|
158 | } |
||
159 |