forked from LiveCarta/PayPal-PHP-Server-SDK
repo initialized with test cases
This commit is contained in:
203
tests/E2E/AddShippingTrackerInformationToOrderFlowTest.php
Normal file
203
tests/E2E/AddShippingTrackerInformationToOrderFlowTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
220
tests/E2E/AuthenticationMultiStepFlowTest.php
Normal file
220
tests/E2E/AuthenticationMultiStepFlowTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
205
tests/E2E/AuthenticationSingleStepFlowTest.php
Normal file
205
tests/E2E/AuthenticationSingleStepFlowTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
232
tests/E2E/AuthorizeAndCaptureFlowTest.php
Normal file
232
tests/E2E/AuthorizeAndCaptureFlowTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
169
tests/E2E/ConfirmOrderFlowTest.php
Normal file
169
tests/E2E/ConfirmOrderFlowTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
210
tests/E2E/PatchOrderFlowTest.php
Normal file
210
tests/E2E/PatchOrderFlowTest.php
Normal 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()
|
||||
);
|
||||
}
|
||||
}
|
||||
169
tests/E2E/PaymentMethodWithPurchaseFlowTest.php
Normal file
169
tests/E2E/PaymentMethodWithPurchaseFlowTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
231
tests/E2E/PaymentMethodWithoutPurchaseFlowTest.php
Normal file
231
tests/E2E/PaymentMethodWithoutPurchaseFlowTest.php
Normal 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);
|
||||
}
|
||||
}
|
||||
167
tests/E2E/RefundFlowTest.php
Normal file
167
tests/E2E/RefundFlowTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
134
tests/E2E/StandardCheckoutFlowTest.php
Normal file
134
tests/E2E/StandardCheckoutFlowTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
197
tests/E2E/VoidAuthorizationFlowTest.php
Normal file
197
tests/E2E/VoidAuthorizationFlowTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user