Package Tracking

Server-side configuration

Important
Your integration may be impacted by upcoming certificate changes. Visit our best practices guide to learn more.

1. Place transaction

  1. PHP
$result = $gateway->transaction()->sale([
    'amount' => '100.00',
    'paymentMethodNonce' => nonceFromTheClient,
    'purchaseOrderNumber' => '12345',
    'taxAmount' => '5.00',
    'shippingAmount' => '1.00',
    'discountAmount' => '0.00',
    'shipsFromPostalCode' => '60654',
    'shipping' => [
        'firstName' => 'Clinton',
        'lastName' => 'Ecker',
        'streetAddress' => '1234 Main Street',
        'extendedAddress' => 'Unit 222',
        'locality' => 'Chicago',
        'region' => 'IL',
        'postalCode' => '60654',
        'countryCodeAlpha3' => 'USA'
    ],
    'lineItems' => [
        [
            'name' => 'Product',
            'kind' => BraintreeTransactionLineItem::DEBIT,
            'quantity' => '10.0000',
            'unitAmount' => '9.5000',
            'totalAmount' => '95.00',
            'productCode' => '54321',
            'upcCode' => '12345678012',
            // new field
            'upcType' => BraintreeTransactionLineItem::UPC_A,
            // new field
            'imageUrl' => 'https://example.com/product1.jpeg' // new field
        ]
    ]
);

2. Create tracking for transaction after submitting for settlement:

  1. PHP
<?php
function sampleIntegration() {
    // Send the package tracking request for the transaction
    $packageResult = Braintree\Transaction::packageTracking(
        $transactionId,
        // Create a Package Tracking request with optional line items
        [
            'carrier' => "UPS",
            'trackingNumber' => "tracking_number_1",
            'notifyPayer' => true,
            'lineItems' => [
                // Optionally create line items
                [
                    'quantity' => '1',
                    'name' => 'Product Name',
                    'productCode' => "ABC 01",
                    'description' => "Product Description",
                    'upcCode' => '12345678012', // new field
                    'upcType' => BraintreeTransactionLineItem::UPC_A, // new field
                    'imageUrl' => 'https://example.com/product1.jpeg' // new field
                ],
                [
                    'quantity' => '1',
                    'name' => 'Product Name',
                    'productCode' => "ABC 02",
                    'description' => "Product Description"
                ]
            ]
        ]
    );
    $id = $packageResult->transaction->packages[0]->id;
    $carrier = $packageResult->transaction->packages[0]->carrier;
    $trackingNumber = $packageResult->transaction->packages[0]->trackingNumber;
    // The PayPal tracker ID will not be immediately available in response to
    // package_tracking(). But should be there when merchant does a findTransaction
    // request at a later stage.
}
?>

3. Retrieve transactions with package trackers:

  1. PHP
<?php
function retrievePackageTracker() {
    // Get more details of the individual packages like so, replace 0 with the element #:
    $transaction = Braintree\Transaction::find($transactionId);
    $id = $transaction->packages[0]->id;
    $carrier = $transaction->packages[0]->carrier;
    $trackingNumber = $transaction->packages[0]->trackingNumber;
    $paypalTrackerId = $transaction->packages[0]->paypalTrackerId;
    // The PayPal tracker ID will not be immediately available in response to
    // package_tracking(). But should be there when merchant does a findTransaction
    // request at a later stage.
}
?>

If you accept cookies, we’ll use them to improve and customize your experience and enable our partners to show you personalized PayPal ads when you visit other sites. Manage cookies and learn more