Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transaction authorize #5

Merged
merged 3 commits into from
Mar 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions example/Transaction/example-authorize.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?php declare(strict_types=1);

use Ticketpark\SaferpayJson\Request\Exception\SaferpayErrorException;
use Ticketpark\SaferpayJson\Request\RequestConfig;
use Ticketpark\SaferpayJson\Request\Transaction\AuthorizeRequest;

require_once __DIR__ . '/../../vendor/autoload.php';
require_once __DIR__ . '/../credentials.php';

// A token you received after initializing a transaction (see example-initialize.php)

$token = 'xxx';

// -----------------------------
// Step 1:
// Prepare the authorize request
// See https://saferpay.github.io/jsonapi/#Payment_v1_Transaction_Authorize

$requestConfig = new RequestConfig(
$apiKey,
$apiSecret,
$customerId,
true
);

// -----------------------------
// Step 2:
// Create the request with required data

$authorizeRequest = new AuthorizeRequest(
$requestConfig,
$token,
);

// Note: More data can be provided to InitializeRequest with setters,
// for example: $authorizeRequest->setCondition()
// See Saferpay documentation for available options.

// -----------------------------
// Step 3:
// Execute and check for successful response

try {
$response = $authorizeRequest->execute();
} catch (SaferpayErrorException $e) {
die ($e->getErrorResponse()->getErrorMessage());
}

echo 'The transaction has been successful! Transaction id: ' . $response->getTransaction()->getId()."\n";

// -----------------------------
// Step 4:
// Capture the transaction to get the cash flowing.
// See ../Transaction/example-capture.php
94 changes: 94 additions & 0 deletions lib/SaferpayJson/Request/Transaction/AuthorizeRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?php

declare(strict_types=1);

namespace Ticketpark\SaferpayJson\Request\Transaction;

use JMS\Serializer\Annotation\SerializedName;
use Ticketpark\SaferpayJson\Request\Container\RegisterAlias;
use Ticketpark\SaferpayJson\Request\Request;
use Ticketpark\SaferpayJson\Request\RequestCommonsTrait;
use Ticketpark\SaferpayJson\Request\RequestConfig;
use Ticketpark\SaferpayJson\Response\Transaction\AuthorizeResponse;

final class AuthorizeRequest extends Request
{
use RequestCommonsTrait;
public const API_PATH = '/Payment/v1/Transaction/Authorize';
public const RESPONSE_CLASS = AuthorizeResponse::class;

/**
* @var string
* @SerializedName("Token")
*/
private $token;

/**
* @var string|null
* @SerializedName("Condition")
*/
private $condition;

/**
* @var string|null
* @SerializedName("VerificationCode")
*/
private $verificationCode;

/**
* @var RegisterAlias|null
* @SerializedName("RegisterAlias")
*/
private $registerAlias;

public function __construct(
RequestConfig $requestConfig,
string $token
) {
$this->token = $token;

parent::__construct($requestConfig);
}

public function getToken(): string
{
return $this->token;
}

public function getCondition(): ?string
{
return $this->condition;
}

public function getVerificationCode(): ?string
{
return $this->verificationCode;
}

public function getRegisterAlias(): ?RegisterAlias
{
return $this->registerAlias;
}

public function setCondition(?string $condition): void
{
$this->condition = $condition;
}

public function setVerificationCode(?string $verificationCode): void
{
$this->verificationCode = $verificationCode;
}

public function setRegisterAlias(?RegisterAlias $registerAlias): void
{
$this->registerAlias = $registerAlias;
}
public function execute(): AuthorizeResponse
{
/** @var AuthorizeResponse $response */
$response = $this->doExecute();

return $response;
}
}
115 changes: 115 additions & 0 deletions lib/SaferpayJson/Response/Transaction/AuthorizeResponse.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
<?php

declare(strict_types=1);

namespace Ticketpark\SaferpayJson\Response\Transaction;

use JMS\Serializer\Annotation\SerializedName;
use JMS\Serializer\Annotation\Type;
use Ticketpark\SaferpayJson\Response\Container\Dcc;
use Ticketpark\SaferpayJson\Response\Container\FraudPrevention;
use Ticketpark\SaferpayJson\Response\Container\Liability;
use Ticketpark\SaferpayJson\Response\Container\MastercardIssuerInstallments;
use Ticketpark\SaferpayJson\Response\Container\Payer;
use Ticketpark\SaferpayJson\Response\Container\PaymentMeans;
use Ticketpark\SaferpayJson\Response\Container\RegistrationResult;
use Ticketpark\SaferpayJson\Response\Container\Transaction;
use Ticketpark\SaferpayJson\Response\Response;

final class AuthorizeResponse extends Response
{
/**
* @var Transaction|null
* @SerializedName("Transaction")
* @Type("Ticketpark\SaferpayJson\Response\Container\Transaction")
*/
private $transaction;

/**
* @var PaymentMeans|null
* @SerializedName("PaymentMeans")
* @Type("\Ticketpark\SaferpayJson\Response\Container\PaymentMeans")
*/
private $paymentMeans;

/**
* @var Payer|null
* @SerializedName("Payer")
* @Type("\Ticketpark\SaferpayJson\Response\Container\Payer")
*/
private $payer;

/**
* @var RegistrationResult|null
* @SerializedName("RegistrationResult")
* @Type("\Ticketpark\SaferpayJson\Response\Container\RegistrationResult")
*/
private $registrationResult;

/**
* @var MastercardIssuerInstallments|null
* @SerializedName("MastercardIssuerInstallments")
* @Type("\Ticketpark\SaferpayJson\Response\Container\MastercardIssuerInstallments")
*/
private $mastercardIssuerInstallments;

/**
* @var FraudPrevention|null
* @SerializedName("FraudPrevention")
* @Type("\Ticketpark\SaferpayJson\Response\Container\FraudPrevention")
*/
private $fraudPrevention;

/**
* @var Liability|null
* @SerializedName("Liability")
* @Type("\Ticketpark\SaferpayJson\Response\Container\Liability")
*/
private $liability;

/**
* @var Dcc|null
* @SerializedName("Dcc")
* @Type("\Ticketpark\SaferpayJson\Response\Container\Dcc")
*/
private $dcc;

public function getTransaction(): ?Transaction
{
return $this->transaction;
}

public function getPayer(): ?Payer
{
return $this->payer;
}
public function getPaymentMeans(): ?PaymentMeans
{
return $this->paymentMeans;
}

public function getRegistrationResult(): ?RegistrationResult
{
return $this->registrationResult;
}

public function getMastercardIssuerInstallments(): ?MastercardIssuerInstallments
{
return $this->mastercardIssuerInstallments;
}

public function getFraudPrevention(): ?FraudPrevention
{
return $this->fraudPrevention;
}

public function getLiability(): ?Liability
{
return $this->liability;
}

public function getDcc(): ?Dcc
{
return $this->dcc;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace SaferpayJson\Tests\Request\Transaction;

use Ticketpark\SaferpayJson\Request\Transaction\AuthorizeRequest;
use Ticketpark\SaferpayJson\Response\Transaction\AuthorizeResponse;
use Ticketpark\SaferpayJson\Tests\Request\CommonRequestTest;

class AuthorizeRequestTest extends CommonRequestTest
{
protected function getInstance()
{
return new AuthorizeRequest(
$this->getRequestConfig(),
'someToken123'
);
}

public function testSuccessfulResponse(): void
{
parent::doTestSuccessfulResponse(
AuthorizeResponse::class
);
}
}