Skip to content

Commit

Permalink
Add endpoints for Add Tracking API.
Browse files Browse the repository at this point in the history
  • Loading branch information
srmklive committed Sep 6, 2023
1 parent 40f1c8d commit ee23f27
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 13 deletions.
69 changes: 56 additions & 13 deletions src/Traits/PayPalAPI/Trackers.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,64 @@
trait Trackers
{
/**
* Show tracking information.
* Adds tracking information, with or without tracking numbers, for multiple PayPal transactions.
*
* @param string $tracking_id
* @param array $data
*
* @throws \Throwable
*
* @return array|\Psr\Http\Message\StreamInterface|string
*
* @see https://developer.paypal.com/docs/api/tracking/v1/#trackers_get
* @see https://developer.paypal.com/docs/api/tracking/v1/#trackers-batch_post
*/
public function showTrackingDetails(string $tracking_id)
public function addBatchTracking(array $data)
{
$this->apiEndPoint = "v1/shipping/trackers/{$tracking_id}";
$this->apiEndPoint = 'v1/shipping/trackers-batch';

$this->options['json'] = $data;

$this->verb = 'post';

return $this->doPayPalRequest();
}

/**
* Adds tracking information for a PayPal transaction.
*
* @param array $data
*
* @throws \Throwable
*
* @return array|\Psr\Http\Message\StreamInterface|string
*
* @see https://developer.paypal.com/docs/api/tracking/v1/#trackers_post
*/
public function addTracking(array $data)
{
$this->apiEndPoint = 'v1/shipping/trackers';

$this->options['json'] = $data;

$this->verb = 'post';

return $this->doPayPalRequest();
}

/**
* List tracking information based on Transaction ID or tracking number.
*
* @param string $transaction_id
* @param string $tracking_number
*
* @throws \Throwable
*
* @return array|\Psr\Http\Message\StreamInterface|string
*
* @see https://developer.paypal.com/docs/api/tracking/v1/#trackers-batch_get
*/
public function listTrackingDetails(string $transaction_id, string $tracking_number = null)
{
$this->apiEndPoint = "v1/shipping/trackers?transaction_id={$transaction_id}".!empty($tracking_number) ? "&tracking_number={$tracking_number}" : "";

$this->verb = 'get';

Expand Down Expand Up @@ -48,23 +93,21 @@ public function updateTrackingDetails(string $tracking_id, array $data)
}

/**
* Add batch tracking.
* Show tracking information.
*
* @param array $data
* @param string $tracking_id
*
* @throws \Throwable
*
* @return array|\Psr\Http\Message\StreamInterface|string
*
* @see https://developer.paypal.com/docs/api/tracking/v1/#trackers-batch_post
* @see https://developer.paypal.com/docs/api/tracking/v1/#trackers_get
*/
public function addBatchTracking(array $data)
public function showTrackingDetails(string $tracking_id)
{
$this->apiEndPoint = 'v1/shipping/trackers-batch';

$this->options['json'] = $data;
$this->apiEndPoint = "v1/shipping/trackers/{$tracking_id}";

$this->verb = 'post';
$this->verb = 'get';

return $this->doPayPalRequest();
}
Expand Down
44 changes: 44 additions & 0 deletions tests/Feature/AdapterFeatureTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -1907,6 +1907,28 @@ public function it_can_list_transactions_for_a_subscription()
$this->assertEquals($response, $this->mockListSubscriptionTransactionsResponse());
}

/** @test */
public function it_can_list_tracking_details()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);

$this->client->setClient(
$this->mock_http_client(
$this->mockGetTrackingDetailsResponse()
)
);

$response = $this->client->listTrackingDetails('8MC585209K746392H-443844607820');

$this->assertNotEmpty($response);
$this->assertEquals($response, $this->mockGetTrackingDetailsResponse());
$this->assertArrayHasKey('transaction_id', $response);
$this->assertArrayHasKey('tracking_number', $response);
}

/** @test */
public function it_can_get_tracking_details_for_tracking_id()
{
Expand Down Expand Up @@ -1970,6 +1992,28 @@ public function it_can_create_tracking_in_batches()
$this->assertArrayHasKey('tracker_identifiers', $response);
}

/** @test */
public function it_can_create_single_tracking_for_single_transaction()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);

$this->client->setClient(
$this->mock_http_client(
$this->mockCreateTrackinginBatchesResponse()
)
);

$expectedParams = $this->mockCreateTrackinginBatchesParams();

$response = $this->client->addTracking($expectedParams);

$this->assertNotEmpty($response);
$this->assertArrayHasKey('tracker_identifiers', $response);
}

/** @test */
public function it_can_list_web_hooks_event_types()
{
Expand Down

0 comments on commit ee23f27

Please sign in to comment.