Skip to content

Commit 405878c

Browse files
committed
feat: add direct transaction operation
1 parent 7f66447 commit 405878c

File tree

8 files changed

+2802
-2
lines changed

8 files changed

+2802
-2
lines changed

lib/Api/TatraPayPlusAPIApi.php

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public function setClient(object|null $client): void
125125
public function addAuthHeader(array $headers): array
126126
{
127127
if (is_null($this->access_token) || $this->access_token->isExpired()) {
128-
$response = $this->token('client_credentials', $this->client_id, $this->client_secret, $this->scope);
128+
$response = $this->token(self::GRANT_TYPE, $this->client_id, $this->client_secret, $this->scope);
129129
$responseObj = $response['object'];
130130
$this->access_token = new AccessToken($responseObj->getAccessToken(), (int) $responseObj->getExpiresIn());
131131
}
@@ -595,6 +595,87 @@ public function initiatePaymentRequest($redirect_uri, $initiate_payment_request,
595595
);
596596
}
597597

598+
/**
599+
* Operation initiateDirectTransaction
600+
*
601+
* Initiate direct payment intent
602+
*
603+
* @param string $redirect_uri URI of the client application endpoint, where the user shall be redirected to after payment process. URI has to be registered in Developer portal (required)
604+
* @param \Tatrapayplus\TatrapayplusApiClient\Model\InitiateDirectTransactionRequest $initiate_transaction_request
605+
*
606+
* @return array of \Tatrapayplus\TatrapayplusApiClient\Model\InitiatePaymentResponse|\Tatrapayplus\TatrapayplusApiClient\Model\Model400ErrorBody, HTTP status code, HTTP response headers (array of strings)
607+
*
608+
* @throws SanitizedInvalidArgumentException
609+
* @throws ApiException on non-2xx response or if the response body is not in the expected format
610+
*/
611+
public function initiateDirectTransaction($redirect_uri, $initiate_transaction_request)
612+
{
613+
$request = $this->initiateDirectTransactionRequest($redirect_uri, $initiate_transaction_request);
614+
615+
return $this->processRequest($request, '\Tatrapayplus\TatrapayplusApiClient\Model\InitiateDirectTransactionResponse', '\Tatrapayplus\TatrapayplusApiClient\Model\Model400ErrorBody');
616+
}
617+
618+
/**
619+
* Create request for operation 'initiateDirectTransactionRequest'
620+
*
621+
* @param string $redirect_uri URI of the client application endpoint, where the user shall be redirected to after payment process. URI has to be registered in Developer portal (required)
622+
* @param \Tatrapayplus\TatrapayplusApiClient\Model\InitiateDirectTransactionRequest $initiate_transaction_request
623+
*
624+
* @return Request
625+
*
626+
* @throws SanitizedInvalidArgumentException
627+
*/
628+
public function initiateDirectTransactionRequest($redirect_uri, $initiate_transaction_request)
629+
{
630+
// verify the required parameter 'redirect_uri' is set
631+
if ($redirect_uri === null || (is_array($redirect_uri) && count($redirect_uri) === 0)) {
632+
throw new SanitizedInvalidArgumentException('Missing the required parameter $redirect_uri when calling initiateDirectTransactionRequest');
633+
}
634+
635+
// verify the required parameter 'initiate_payment_request' is set
636+
if ($initiate_transaction_request === null || (is_array($initiate_transaction_request) && count($initiate_transaction_request) === 0)) {
637+
throw new SanitizedInvalidArgumentException('Missing the required parameter $initiate_transaction_request when calling initiateDirectTransactionRequest');
638+
}
639+
640+
$resourcePath = '/v1/payments-direct';
641+
$queryParams = [];
642+
$headerParams = [];
643+
644+
// header params
645+
if ($redirect_uri !== null) {
646+
$headerParams['Redirect-URI'] = ObjectSerializer::toHeaderValue($redirect_uri);
647+
}
648+
649+
$headers = $this->headerSelector->selectHeaders(
650+
['application/json'],
651+
self::contentTypes['initiatePayment'][0],
652+
false
653+
);
654+
655+
$httpBody = static::json_encode(ObjectSerializer::sanitizeForSerialization($initiate_transaction_request));
656+
$httpBody = str_replace('\\\\n', '\\n', $httpBody);
657+
// this endpoint requires OAuth (access token)
658+
$headers = $this->addAuthHeader($headers);
659+
660+
$defaultHeaders = $this->getDefaultHeaders();
661+
662+
$headers = array_merge(
663+
$defaultHeaders,
664+
$headerParams,
665+
$headers
666+
);
667+
668+
$operationHost = $this->config->getHost();
669+
$query = ObjectSerializer::buildQuery($queryParams);
670+
671+
return new Request(
672+
'POST',
673+
$operationHost . $resourcePath . ($query ? "?{$query}" : ''),
674+
$headers,
675+
$httpBody
676+
);
677+
}
678+
598679
public static function json_encode(...$args)
599680
{
600681
// Store the current precision

0 commit comments

Comments
 (0)