1
0
Files
PayPal-PHP-Server-SDK/tests/E2E/PaymentMethodWithoutPurchaseFlowTest.php
2024-09-06 15:38:17 +05:00

232 lines
8.5 KiB
PHP

<?php
declare(strict_types=1);
/*
* PayPalRESTAPIsLib
*
* This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
*/
namespace PayPalRESTAPIsLib\Tests\E2E;
use Exception;
use PayPalRESTAPIsLib\Controllers\OrdersController;
use PayPalRESTAPIsLib\Controllers\VaultController;
use PayPalRESTAPIsLib\Models\Builders\AddressBuilder;
use PayPalRESTAPIsLib\Models\Builders\AmountBreakdownBuilder;
use PayPalRESTAPIsLib\Models\Builders\AmountWithBreakdownBuilder;
use PayPalRESTAPIsLib\Models\Builders\ItemBuilder;
use PayPalRESTAPIsLib\Models\Builders\MoneyBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\PaymentSourceBuilder;
use PayPalRESTAPIsLib\Models\Builders\PaymentTokenRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\PaymentTokenRequestPaymentSourceBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\SetupTokenRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\SetupTokenRequestPaymentSourceBuilder;
use PayPalRESTAPIsLib\Models\Builders\ShippingDetailsBuilder;
use PayPalRESTAPIsLib\Models\Builders\VaultExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\VaultPayPalWalletRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\VaultTokenRequestBuilder;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\PaymentTokenResponse;
use PayPalRESTAPIsLib\Models\SetupTokenResponse;
use PayPalRESTAPIsLib\Models\TokenType;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
use PayPalRESTAPIsLib\Tests\WebDriverUtilities;
class PaymentMethodWithoutPurchaseFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* @var VaultController VaultController instance
*/
protected static $vaultController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
self::$vaultController = $client->getVaultController();
}
public function testCreateSetupToken(): SetupTokenResponse
{
$request = [
'payPalRequestId' => strval(rand(1, 99999999999)),
'body' => SetupTokenRequestBuilder::init(
SetupTokenRequestPaymentSourceBuilder::init()
->paypal(
VaultPayPalWalletRequestBuilder::init()
->description('Description for PayPal to be shown to PayPal payer')
->permitMultiplePaymentTokens(true)
->usageType('MERCHANT')
->customerType('CONSUMER')
->experienceContext(
VaultExperienceContextBuilder::init()
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->build()
)
->build()
)->build()
)->build()
];
$response = self::$vaultController->setupTokensCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateSetupToken
* @throws Exception
*/
public function testSavePaymentMethod(SetupTokenResponse $setupTokenDetail): void
{
$links = $setupTokenDetail->getLinks();
$url = null;
if (isset($links)) {
$url = $links[1]->getHref();
}
$this->assertNotNull($url);
WebDriverUtilities::savePaymentMethod($url ?? '');
}
/**
* @depends testCreateSetupToken
* @depends testSavePaymentMethod
*/
public function testCreatePaymentToken(SetupTokenResponse $setupTokenResponse): PaymentTokenResponse
{
$request = [
'payPalRequestId' => strval(rand(1, 99999999999)),
'body' => PaymentTokenRequestBuilder::init(
PaymentTokenRequestPaymentSourceBuilder::init()
->token(
VaultTokenRequestBuilder::init(
$setupTokenResponse->getId() ?? '',
TokenType::SETUP_TOKEN
)->build()
)->build()
)->build()
];
$response = self::$vaultController->paymentTokensCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreatePaymentToken
*/
public function testCreateOrder(PaymentTokenResponse $paymentToken): void
{
$request = [
'body' => OrderRequestBuilder::init(
CheckoutPaymentIntent::CAPTURE,
[
PurchaseUnitRequestBuilder::init(
AmountWithBreakdownBuilder::init(
'USD',
'10.00'
)
->breakdown(
AmountBreakdownBuilder::init()
->itemTotal(
MoneyBuilder::init(
'USD',
'10.00'
)->build()
)->build()
)->build()
)
->description('Camera Shop')
->items([
ItemBuilder::init(
'Camera',
MoneyBuilder::init(
'USD',
'10.00'
)->build(),
'1'
)->build(),
])
->shipping(
ShippingDetailsBuilder::init()
->address(
AddressBuilder::init(
'US'
)
->addressLine1('500 Main Street')
->addressLine2('#1000')
->adminArea1('CA')
->adminArea2('San Jose')
->postalCode('95131')
->build()
)->build()
)->build()
]
)
->paymentSource(
PaymentSourceBuilder::init()
->paypal(
PayPalWalletBuilder::init()
->vaultId($paymentToken->getId())
->build()
)
->build()
)
->build(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
}
/**
* @depends testCreateSetupToken
* @depends testCreateOrder
*/
public function testGetSetupToken(SetupTokenResponse $setupTokenDetail): void
{
$response = self::$vaultController->setupTokensGet($setupTokenDetail->getId() ?? '');
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('VAULTED', $response->getResult()->getStatus());
}
/**
* @depends testCreatePaymentToken
* @depends testGetSetupToken
*/
public function testGetPaymentToken(PaymentTokenResponse $paymentToken): void
{
$response = self::$vaultController->paymentTokensGet($paymentToken->getId() ?? '');
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
$this->assertNotNull($response);
}
}