1
0

repo initialized with test cases

This commit is contained in:
moizgillani
2024-09-06 15:38:17 +05:00
parent c9cb1ad04a
commit b20aa829db
754 changed files with 76684 additions and 1 deletions

View File

@@ -0,0 +1,203 @@
<?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\Models\Builders\AmountWithBreakdownBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderTrackerItemBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderTrackerRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\PatchBuilder;
use PayPalRESTAPIsLib\Models\Builders\PaymentSourceBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\UniversalProductCodeBuilder;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\Order;
use PayPalRESTAPIsLib\Models\PatchOp;
use PayPalRESTAPIsLib\Models\PayPalExperienceLandingPage;
use PayPalRESTAPIsLib\Models\ShipmentCarrier;
use PayPalRESTAPIsLib\Models\UPCType;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
use PayPalRESTAPIsLib\Tests\WebDriverUtilities;
class AddShippingTrackerInformationToOrderFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
}
public function testCreateOrder(): Order
{
$request = [
'body' => OrderRequestBuilder::init(
CheckoutPaymentIntent::CAPTURE,
[
PurchaseUnitRequestBuilder::init(
AmountWithBreakdownBuilder::init(
'USD',
'100.00'
)->build()
)
->referenceId('d9f80740-38f0-11e8-b467-0ed5f89f718b')
->build()
]
)
->paymentSource(
PaymentSourceBuilder::init()
->paypal(
PayPalWalletBuilder::init()
->experienceContext(
PayPalWalletExperienceContextBuilder::init()
->locale('en-US')
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->landingPage(PayPalExperienceLandingPage::LOGIN)
->build()
)
->build()
)
->build()
)
->build()
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
* @throws Exception
*/
public function testCompletePayment(Order $orderDetail): void
{
$links = $orderDetail->getLinks();
$url = null;
if (isset($links)) {
$url = $links[1]->getHref();
}
$this->assertNotNull($url);
WebDriverUtilities::completePayment($url ?? '');
}
/**
* @depends testCreateOrder
* @depends testCompletePayment
*/
public function testCaptureOrder(Order $orderDetail): Order
{
$request = [
'id' => $orderDetail->getId(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCapture($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCaptureOrder
*/
public function testCreateOrderTrack(Order $captureDetail): Order
{
$purchaseUnits = $captureDetail->getPurchaseUnits();
$captureId = null;
if (isset($purchaseUnits)) {
$captures = $purchaseUnits[0]->getPayments()->getCaptures();
if (isset($captures)) {
$captureId = $captures[0]->getId();
}
}
$this->assertNotNull($captureId);
$request = [
'id' => $captureDetail->getId(),
'body' => OrderTrackerRequestBuilder::init($captureId ?? '')
->trackingNumber('443844607820')
->carrier(ShipmentCarrier::FEDEX)
->notifyPayer(false)
->items(
[
OrderTrackerItemBuilder::init()
->name('T-Shirt')
->quantity('1')
->sku('sku02')
->url('https://www.example.com/example')
->imageUrl('https://www.example.com/example.jpg')
->upc(UniversalProductCodeBuilder::init(UPCType::UPCA, 'upc001')->build())
->build()
]
)
->build(),
];
$response = self::$ordersController->ordersTrackCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrderTrack
*/
public function testUpdateOrderTrack(Order $shippingOrder): void
{
$purchaseUnits = $shippingOrder->getPurchaseUnits();
$trackerId = null;
if (isset($purchaseUnits)) {
$trackers = $purchaseUnits[0]->getShipping()->getTrackers();
if (isset($trackers)) {
$trackerId = $trackers[0]->getId();
}
}
$this->assertNotNull($trackerId);
$request = [
'id' => $shippingOrder->getId(),
'trackerId' => $trackerId ?? '',
'body' => [
PatchBuilder::init(
PatchOp::REPLACE
)
->path('/notify_payer')
->value(true)
->build()
]
];
$response = self::$ordersController->ordersTrackersPatch($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(204, $response->getStatusCode());
}
}

View File

@@ -0,0 +1,220 @@
<?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\Models\Builders\AddressBuilder;
use PayPalRESTAPIsLib\Models\Builders\AmountBreakdownBuilder;
use PayPalRESTAPIsLib\Models\Builders\AmountWithBreakdownBuilder;
use PayPalRESTAPIsLib\Models\Builders\CardAttributesBuilder;
use PayPalRESTAPIsLib\Models\Builders\CardExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\CardRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\CardVerificationBuilder;
use PayPalRESTAPIsLib\Models\Builders\ItemBuilder;
use PayPalRESTAPIsLib\Models\Builders\MoneyBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderCaptureRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderCaptureRequestPaymentSourceBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\CardVerificationMethod;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\Order;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
use PayPalRESTAPIsLib\Tests\WebDriverUtilities;
class AuthenticationMultiStepFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
}
public function testCreateOrder(): Order
{
$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')
->customId('testcustom_id')
->invoiceId('invoice_number_' . rand(1, 99999999999))
->items([
ItemBuilder::init(
'Levis 501 Selvedge STF',
MoneyBuilder::init(
'USD',
'5.00'
)->build(),
'1'
)
->tax(MoneyBuilder::init(
'USD',
'0.00'
)->build())
->sku('5158936')
->build(),
ItemBuilder::init(
'T-Shirt',
MoneyBuilder::init(
'USD',
'5.00'
)->build(),
'1'
)
->tax(MoneyBuilder::init(
'USD',
'0.00'
)->build())
->sku('1457432')
->build()
])
->build()
]
)->build(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'payPalPartnerAttributionId' => 'PayPal-Partner-Attribution-Id',
'payPalClientMetadataId' => 'PayPal-Client-Metadata-Id',
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
*/
public function testCaptureOrder(Order $orderDetail): ?string
{
$request = [
'id' => $orderDetail->getId(),
'prefer' => 'return=representation',
'body' => OrderCaptureRequestBuilder::init()
->paymentSource(
OrderCaptureRequestPaymentSourceBuilder::init()
->card(
CardRequestBuilder::init()
->name('John Doe')
->number('4868719460707704')
->expiry('2027-02')
->billingAddress(
AddressBuilder::init(
'US'
)
->addressLine1('2211 N First Street')
->adminArea1('CA')
->adminArea2('San Jose')
->postalCode('95131')
->build()
)
->attributes(
CardAttributesBuilder::init()
->verification(
CardVerificationBuilder::init()
->method(CardVerificationMethod::SCA_ALWAYS)
->build()
)
->build()
)
->experienceContext(CardExperienceContextBuilder::init()
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->build())
->build()
)
->build()
)
->build()
];
$response = self::$ordersController->ordersCapture($request);
// TODO: Verify status 422, as its currently considered as a success case
$this->assertTrue($response->isError());
$this->assertEquals(422, $response->getStatusCode());
return $response->getResult()['links'][0]->href;
}
/**
* @depends testCaptureOrder
* @throws Exception
*/
public function testCompleteHeliosVerification(?string $href): void
{
$this->assertNotNull($href);
WebDriverUtilities::completeHeliosVerification($href ?? '');
}
/**
* @depends testCreateOrder
* @depends testCompleteHeliosVerification
*/
public function testCaptureOrderAgain(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCapture($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
}
/**
* @depends testCreateOrder
* @depends testCaptureOrderAgain
*/
public function testGetOrderDetails(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId()
];
$response = self::$ordersController->ordersGet($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('COMPLETED', $response->getResult()->getStatus());
}
}

View File

@@ -0,0 +1,205 @@
<?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\Models\Builders\AddressBuilder;
use PayPalRESTAPIsLib\Models\Builders\AmountBreakdownBuilder;
use PayPalRESTAPIsLib\Models\Builders\AmountWithBreakdownBuilder;
use PayPalRESTAPIsLib\Models\Builders\CardAttributesBuilder;
use PayPalRESTAPIsLib\Models\Builders\CardExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\CardRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\CardVerificationBuilder;
use PayPalRESTAPIsLib\Models\Builders\ItemBuilder;
use PayPalRESTAPIsLib\Models\Builders\MoneyBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\PaymentSourceBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\CardVerificationMethod;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\Order;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
use PayPalRESTAPIsLib\Tests\WebDriverUtilities;
class AuthenticationSingleStepFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
}
public function testCreateOrder(): Order
{
$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')
->customId('testcustom_id')
->invoiceId('invoice_number_' . rand(1, 99999999999))
->items([
ItemBuilder::init(
'Levis 501 Selvedge STF',
MoneyBuilder::init(
'USD',
'5.00'
)->build(),
'1'
)
->tax(MoneyBuilder::init(
'USD',
'0.00'
)->build())
->sku('5158936')
->build(),
ItemBuilder::init(
'T-Shirt',
MoneyBuilder::init(
'USD',
'5.00'
)->build(),
'1'
)
->tax(MoneyBuilder::init(
'USD',
'0.00'
)->build())
->sku('1457432')
->build()
])
->build()
]
)
->paymentSource(
PaymentSourceBuilder::init()
->card(
CardRequestBuilder::init()
->name('John Doe')
->number('4868719995056080')
->expiry('2027-02')
->billingAddress(
AddressBuilder::init(
'US'
)
->addressLine1('2211 N First Street')
->adminArea1('CA')
->adminArea2('San Jose')
->postalCode('95131')
->build()
)
->attributes(
CardAttributesBuilder::init()
->verification(
CardVerificationBuilder::init()
->method(CardVerificationMethod::SCA_ALWAYS)
->build()
)
->build()
)
->experienceContext(CardExperienceContextBuilder::init()
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->build())
->build()
)
->build()
)
->build(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'payPalPartnerAttributionId' => 'PayPal-Partner-Attribution-Id',
'payPalClientMetadataId' => 'PayPal-Client-Metadata-Id',
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
* @throws Exception
*/
public function testCompleteHeliosVerification(Order $orderDetail): void
{
$links = $orderDetail->getLinks();
$url = null;
if (isset($links)) {
$url = $links[1]->getHref();
}
$this->assertNotNull($url);
WebDriverUtilities::completeHeliosVerification($url ?? '');
}
/**
* @depends testCreateOrder
* @depends testCompleteHeliosVerification
*/
public function testCaptureOrder(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCapture($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
}
/**
* @depends testCreateOrder
* @depends testCaptureOrder
*/
public function getOrderDetails(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId()
];
$response = self::$ordersController->ordersGet($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
$this->assertNotNull($response->getResult()->getPaymentSource());
$this->assertEquals('COMPLETED', $response->getResult()->getStatus());
}
}

View File

@@ -0,0 +1,232 @@
<?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\PaymentsController;
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\PayPalWalletBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\CapturedPayment;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\Order;
use PayPalRESTAPIsLib\Models\OrderAuthorizeResponse;
use PayPalRESTAPIsLib\Models\PayPalExperienceLandingPage;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
use PayPalRESTAPIsLib\Tests\WebDriverUtilities;
class AuthorizeAndCaptureFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* @var PaymentsController PaymentsController instance
*/
protected static $paymentsController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
self::$paymentsController = $client->getPaymentsController();
}
public function testCreateOrder(): Order
{
$request = [
'body' => OrderRequestBuilder::init(
CheckoutPaymentIntent::AUTHORIZE,
[
PurchaseUnitRequestBuilder::init(
AmountWithBreakdownBuilder::init(
'USD',
'25.00'
)
->breakdown(
AmountBreakdownBuilder::init()
->itemTotal(
MoneyBuilder::init(
'USD',
'25.00'
)->build()
)
->shipping(
MoneyBuilder::init(
'USD',
'0'
)->build()
)
->taxTotal(
MoneyBuilder::init(
'USD',
'0'
)->build()
)
->build()
)->build()
)
->description('Clothing Shop')
->items([
ItemBuilder::init(
'Levis 501',
MoneyBuilder::init(
'USD',
'25.00'
)->build(),
'1'
)
->tax(
MoneyBuilder::init(
'USD',
'0.00'
)->build()
)
->sku('5158936')
->build()
])
->build()
]
)
->paymentSource(
PaymentSourceBuilder::init()
->paypal(
PayPalWalletBuilder::init()
->experienceContext(
PayPalWalletExperienceContextBuilder::init()
->locale('en-US')
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->landingPage(PayPalExperienceLandingPage::LOGIN)
->build()
)
->build()
)
->build()
)
->build()
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
* @throws Exception
*/
public function testCompletePayment(Order $orderDetail): void
{
$links = $orderDetail->getLinks();
$url = null;
if (isset($links)) {
$url = $links[1]->getHref();
}
$this->assertNotNull($url);
WebDriverUtilities::completePayment($url ?? '');
}
/**
* @depends testCreateOrder
* @depends testCompletePayment
*/
public function testAuthorizeOrder(Order $orderDetail): OrderAuthorizeResponse
{
$request = [
'id' => $orderDetail->getId(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersAuthorize($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testAuthorizeOrder
*/
public function testCaptureAuthorization(OrderAuthorizeResponse $authorizeResponse): CapturedPayment
{
$purchaseUnits = $authorizeResponse->getPurchaseUnits();
$authorizationId = null;
if (isset($purchaseUnits)) {
$authorizations = $purchaseUnits[0]->getPayments()->getAuthorizations();
if (isset($authorizations)) {
$authorizationId = $authorizations[0]->getId();
}
}
$this->assertNotNull($authorizationId);
$request = [
'authorizationId' => $authorizationId,
'prefer' => 'return=representation'
];
$response = self::$paymentsController->authorizationsCapture($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testAuthorizeOrder
*/
public function testGetAuthorization(OrderAuthorizeResponse $authorizeResponse): void
{
$purchaseUnits = $authorizeResponse->getPurchaseUnits();
$authorizationId = null;
if (isset($purchaseUnits)) {
$authorizations = $purchaseUnits[0]->getPayments()->getAuthorizations();
if (isset($authorizations)) {
$authorizationId = $authorizations[0]->getId();
}
}
$this->assertNotNull($authorizationId);
$response = self::$paymentsController->authorizationsGet($authorizationId ?? '');
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('CAPTURED', $response->getResult()->getStatus());
}
/**
* @depends testCaptureAuthorization
*/
public function testCapturePayment(CapturedPayment $capturedPayment): void
{
$response = self::$paymentsController->capturesGet($capturedPayment->getId() ?? '');
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('COMPLETED', $response->getResult()->getStatus());
}
}

View File

@@ -0,0 +1,169 @@
<?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\Models\Builders\AmountWithBreakdownBuilder;
use PayPalRESTAPIsLib\Models\Builders\ConfirmOrderRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\NameBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\PaymentSourceBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\Order;
use PayPalRESTAPIsLib\Models\PayeePaymentMethodPreference;
use PayPalRESTAPIsLib\Models\PayPalExperienceLandingPage;
use PayPalRESTAPIsLib\Models\PayPalExperienceUserAction;
use PayPalRESTAPIsLib\Models\ShippingPreference;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
use PayPalRESTAPIsLib\Tests\WebDriverUtilities;
class ConfirmOrderFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
}
public function testCreateOrder(): Order
{
$request = [
'body' => OrderRequestBuilder::init(
CheckoutPaymentIntent::CAPTURE,
[
PurchaseUnitRequestBuilder::init(
AmountWithBreakdownBuilder::init(
'USD',
'100.00'
)->build()
)
->referenceId('d9f80740-38f0-11e8-b467-0ed5f89f718b')
->build()
]
)
->paymentSource(
PaymentSourceBuilder::init()
->paypal(
PayPalWalletBuilder::init()
->experienceContext(
PayPalWalletExperienceContextBuilder::init()
->locale('en-US')
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->landingPage(PayPalExperienceLandingPage::LOGIN)
->build()
)
->build()
)
->build()
)
->build(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
*/
public function testConfirmOrder(Order $orderDetail): Order
{
$request = [
'id' => $orderDetail->getId(),
'prefer' => 'return=representation',
'body' => ConfirmOrderRequestBuilder::init(
PaymentSourceBuilder::init()
->paypal(
PayPalWalletBuilder::init()
->emailAddress('customer@example.com')
->name(
NameBuilder::init()
->givenName('John')
->surname('Doe')
->build()
)
->experienceContext(
PayPalWalletExperienceContextBuilder::init()
->brandName('EXAMPLE INC')
->locale('en-US')
->shippingPreference(ShippingPreference::SET_PROVIDED_ADDRESS)
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->landingPage(PayPalExperienceLandingPage::LOGIN)
->userAction(PayPalExperienceUserAction::PAY_NOW)
->paymentMethodPreference(PayeePaymentMethodPreference::IMMEDIATE_PAYMENT_REQUIRED)
->build()
)->build()
)->build()
)->build()
];
$response = self::$ordersController->ordersConfirm($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testConfirmOrder
* @throws Exception
*/
public function testCompletePayment(Order $orderDetail): void
{
$links = $orderDetail->getLinks();
$url = null;
if (isset($links)) {
$url = $links[1]->getHref();
}
$this->assertNotNull($url);
WebDriverUtilities::completePayment($url ?? '');
}
/**
* @depends testCreateOrder
* @depends testCompletePayment
*/
public function testCaptureOrder(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCapture($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
$this->assertEquals('COMPLETED', $response->getResult()->getStatus());
}
}

View File

@@ -0,0 +1,210 @@
<?php
declare(strict_types=1);
/*
* PayPalRESTAPIsLib
*
* This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
*/
namespace PayPalRESTAPIsLib\Tests\E2E;
use PayPalRESTAPIsLib\Controllers\OrdersController;
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\PatchBuilder;
use PayPalRESTAPIsLib\Models\Builders\PaymentSourceBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\ShippingDetailsBuilder;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\Order;
use PayPalRESTAPIsLib\Models\PatchOp;
use PayPalRESTAPIsLib\Models\PayPalExperienceLandingPage;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
class PatchOrderFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
}
public function testCreateOrder(): Order
{
$request = [
'body' => OrderRequestBuilder::init(
CheckoutPaymentIntent::CAPTURE,
[
PurchaseUnitRequestBuilder::init(
AmountWithBreakdownBuilder::init(
'USD',
'10.00'
)
->breakdown(
AmountBreakdownBuilder::init()
->itemTotal(
MoneyBuilder::init(
'USD',
'10.00'
)->build()
)
->shipping(
MoneyBuilder::init(
'USD',
'0.00'
)->build()
)
->taxTotal(
MoneyBuilder::init(
'USD',
'0'
)->build()
)->build()
)->build()
)
->description('Camera Shop')
->items([
ItemBuilder::init(
'Levis 501 Selvedge STF',
MoneyBuilder::init(
'USD',
'5.00'
)->build(),
'1'
)
->tax(MoneyBuilder::init(
'USD',
'0.00'
)->build())
->sku('5158936')
->build(),
ItemBuilder::init(
'T-Shirt',
MoneyBuilder::init(
'USD',
'5.00'
)->build(),
'1'
)
->tax(MoneyBuilder::init(
'USD',
'0.00'
)->build())
->sku('1457432')
->build()
])
->shipping(
ShippingDetailsBuilder::init()
->address(
AddressBuilder::init(
'US'
)
->addressLine1('123 Main Street')
->adminArea1('CA')
->adminArea2('San Jose')
->postalCode('95131')
->build()
)->build()
)->build()
]
)
->paymentSource(
PaymentSourceBuilder::init()
->paypal(
PayPalWalletBuilder::init()
->experienceContext(
PayPalWalletExperienceContextBuilder::init()
->locale('en-US')
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->landingPage(PayPalExperienceLandingPage::LOGIN)
->build()
)
->build()
)
->build()
)
->build(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
*/
public function testPatchOrder(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId(),
'body' => [
PatchBuilder::init(
PatchOp::REPLACE
)
->path("/purchase_units/@reference_id==d'default'/shipping/address")
->value([
'address_line_1' => '1234 Main St',
'address_line_2' => 'Floor 6',
'admin_area_2' => 'San Francisco',
'admin_area_1' => 'CA',
'postal_code' => '94107',
'country_code' => 'US',
])
->build()
]
];
$response = self::$ordersController->ordersPatch($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(204, $response->getStatusCode());
}
/**
* @depends testCreateOrder
* @depends testPatchOrder
*/
public function testGetOrderDetails(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId()
];
$response = self::$ordersController->ordersGet($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(
'1234 Main St',
$response->getResult()
->getPurchaseUnits()[0]
->getShipping()
->getAddress()
->getAddressLine1()
);
}
}

View File

@@ -0,0 +1,169 @@
<?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\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\PayPalWalletAttributesBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletVaultInstructionBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\ShippingDetailsBuilder;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\Order;
use PayPalRESTAPIsLib\Models\PayPalPaymentTokenUsageType;
use PayPalRESTAPIsLib\Models\ShippingPreference;
use PayPalRESTAPIsLib\Models\StoreInVaultInstruction;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
use PayPalRESTAPIsLib\Tests\WebDriverUtilities;
class PaymentMethodWithPurchaseFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
}
public function testCreateOrder(): Order
{
$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()
->attributes(PayPalWalletAttributesBuilder::init()
->vault(
PayPalWalletVaultInstructionBuilder::init(
PayPalPaymentTokenUsageType::MERCHANT
)
->storeInVault(StoreInVaultInstruction::ON_SUCCESS)
->build()
)->build())
->experienceContext(
PayPalWalletExperienceContextBuilder::init()
->shippingPreference(ShippingPreference::SET_PROVIDED_ADDRESS)
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->build()
)
->build()
)
->build()
)
->build(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
* @throws Exception
*/
public function testCompletePayment(Order $orderDetail): void
{
$links = $orderDetail->getLinks();
$url = null;
if (isset($links)) {
$url = $links[1]->getHref();
}
$this->assertNotNull($url);
WebDriverUtilities::completePayment($url ?? '');
}
/**
* @depends testCreateOrder
* @depends testCompletePayment
*/
public function testCaptureOrder(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCapture($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
}
}

View File

@@ -0,0 +1,231 @@
<?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);
}
}

View File

@@ -0,0 +1,167 @@
<?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\PaymentsController;
use PayPalRESTAPIsLib\Models\Builders\AmountWithBreakdownBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\PaymentSourceBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\Order;
use PayPalRESTAPIsLib\Models\PayPalExperienceLandingPage;
use PayPalRESTAPIsLib\Models\Refund;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
use PayPalRESTAPIsLib\Tests\WebDriverUtilities;
class RefundFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* @var PaymentsController PaymentsController instance
*/
protected static $paymentsController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
self::$paymentsController = $client->getPaymentsController();
}
public function testCreateOrder(): Order
{
$request = [
'body' => OrderRequestBuilder::init(
CheckoutPaymentIntent::CAPTURE,
[
PurchaseUnitRequestBuilder::init(
AmountWithBreakdownBuilder::init(
'USD',
'100.00'
)->build()
)
->referenceId('d9f80740-38f0-11e8-b467-0ed5f89f718b')
->build()
]
)
->paymentSource(
PaymentSourceBuilder::init()
->paypal(
PayPalWalletBuilder::init()
->experienceContext(
PayPalWalletExperienceContextBuilder::init()
->locale('en-US')
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->landingPage(PayPalExperienceLandingPage::LOGIN)
->build()
)
->build()
)
->build()
)
->build()
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
* @throws Exception
*/
public function testCompletePayment(Order $orderDetail): void
{
$links = $orderDetail->getLinks();
$url = null;
if (isset($links)) {
$url = $links[1]->getHref();
}
$this->assertNotNull($url);
WebDriverUtilities::completePayment($url ?? '');
}
/**
* @depends testCreateOrder
* @depends testCompletePayment
*/
public function testCaptureOrder(Order $orderDetail): Order
{
$request = [
'id' => $orderDetail->getId(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCapture($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCaptureOrder
*/
public function testRefund(Order $captureDetail): Refund
{
$purchaseUnits = $captureDetail->getPurchaseUnits();
$captureId = null;
if (isset($purchaseUnits)) {
$captures = $purchaseUnits[0]->getPayments()->getCaptures();
if (isset($captures)) {
$captureId = $captures[0]->getId();
}
}
$this->assertNotNull($captureId);
$request = [
'captureId' => $captureId,
'prefer' => 'return=representation'
];
$response = self::$paymentsController->capturesRefund($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testRefund
*/
public function testGetRefund(Refund $refund): void
{
$response = self::$paymentsController->refundsGet($refund->getId() ?? '');
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('COMPLETED', $response->getResult()->getStatus());
}
}

View File

@@ -0,0 +1,134 @@
<?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\Models\Builders\AmountWithBreakdownBuilder;
use PayPalRESTAPIsLib\Models\Builders\OrderRequestBuilder;
use PayPalRESTAPIsLib\Models\Builders\PaymentSourceBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\Order;
use PayPalRESTAPIsLib\Models\PayPalExperienceLandingPage;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
use PayPalRESTAPIsLib\Tests\WebDriverUtilities;
class StandardCheckoutFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
}
public function testCreateOrder(): Order
{
$request = [
'body' => OrderRequestBuilder::init(
CheckoutPaymentIntent::CAPTURE,
[
PurchaseUnitRequestBuilder::init(
AmountWithBreakdownBuilder::init(
'USD',
'100.00'
)->build()
)
->referenceId('d9f80740-38f0-11e8-b467-0ed5f89f718b')
->build()
]
)
->paymentSource(
PaymentSourceBuilder::init()
->paypal(
PayPalWalletBuilder::init()
->experienceContext(
PayPalWalletExperienceContextBuilder::init()
->locale('en-US')
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->landingPage(PayPalExperienceLandingPage::LOGIN)
->build()
)
->build()
)
->build()
)
->build()
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
* @throws Exception
*/
public function testCompletePayment(Order $orderDetail): void
{
$links = $orderDetail->getLinks();
$url = null;
if (isset($links)) {
$url = $links[1]->getHref();
}
$this->assertNotNull($url);
WebDriverUtilities::completePayment($url ?? '');
}
/**
* @depends testCreateOrder
* @depends testCompletePayment
*/
public function testCaptureOrder(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCapture($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
}
/**
* @depends testCreateOrder
* @depends testCaptureOrder
*/
public function testGetOrderDetails(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId()
];
$response = self::$ordersController->ordersGet($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
}
}

View File

@@ -0,0 +1,197 @@
<?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\PaymentsController;
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\PayPalWalletBuilder;
use PayPalRESTAPIsLib\Models\Builders\PayPalWalletExperienceContextBuilder;
use PayPalRESTAPIsLib\Models\Builders\PurchaseUnitRequestBuilder;
use PayPalRESTAPIsLib\Models\CheckoutPaymentIntent;
use PayPalRESTAPIsLib\Models\Order;
use PayPalRESTAPIsLib\Models\OrderAuthorizeResponse;
use PayPalRESTAPIsLib\Models\PayPalExperienceLandingPage;
use PayPalRESTAPIsLib\Tests\Controllers\BaseTestController;
use PayPalRESTAPIsLib\Tests\WebDriverUtilities;
class VoidAuthorizationFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* @var PaymentsController PaymentsController instance
*/
protected static $paymentsController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
self::$paymentsController = $client->getPaymentsController();
}
public function testCreateOrder(): Order
{
$request = [
'body' => OrderRequestBuilder::init(
CheckoutPaymentIntent::AUTHORIZE,
[
PurchaseUnitRequestBuilder::init(
AmountWithBreakdownBuilder::init(
'USD',
'25.00'
)
->breakdown(
AmountBreakdownBuilder::init()
->itemTotal(
MoneyBuilder::init(
'USD',
'25.00'
)->build()
)
->shipping(
MoneyBuilder::init(
'USD',
'0'
)->build()
)
->taxTotal(
MoneyBuilder::init(
'USD',
'0'
)->build()
)
->build()
)->build()
)
->description('Clothing Shop')
->items([
ItemBuilder::init(
'Levis 501',
MoneyBuilder::init(
'USD',
'25.00'
)->build(),
'1'
)
->tax(
MoneyBuilder::init(
'USD',
'0.00'
)->build()
)
->sku('5158936')
->build()
])
->build()
]
)
->paymentSource(
PaymentSourceBuilder::init()
->paypal(
PayPalWalletBuilder::init()
->experienceContext(
PayPalWalletExperienceContextBuilder::init()
->locale('en-US')
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->landingPage(PayPalExperienceLandingPage::LOGIN)
->build()
)
->build()
)
->build()
)
->build(),
'payPalRequestId' => strval(rand(1, 99999999999))
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
* @throws Exception
*/
public function testCompletePayment(Order $orderDetail): void
{
$links = $orderDetail->getLinks();
$url = null;
if (isset($links)) {
$url = $links[1]->getHref();
}
$this->assertNotNull($url);
WebDriverUtilities::completePayment($url ?? '');
}
/**
* @depends testCreateOrder
* @depends testCompletePayment
*/
public function testAuthorizeOrder(Order $orderDetail): OrderAuthorizeResponse
{
$request = [
'id' => $orderDetail->getId(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersAuthorize($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testAuthorizeOrder
*/
public function testCaptureAuthorization(OrderAuthorizeResponse $authorizeResponse): void
{
$purchaseUnits = $authorizeResponse->getPurchaseUnits();
$authorizationId = null;
if (isset($purchaseUnits)) {
$authorizations = $purchaseUnits[0]->getPayments()->getAuthorizations();
if (isset($authorizations)) {
$authorizationId = $authorizations[0]->getId();
}
}
$this->assertNotNull($authorizationId);
$request = [
'authorizationId' => $authorizationId,
'prefer' => 'return=representation'
];
$response = self::$paymentsController->authorizationsCapture($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
}
}