Skip to content

The easy way to work with the Snipcart API in your Laravel application.

License

Notifications You must be signed in to change notification settings

aerni/snipcart-api

Repository files navigation

Laravel Snipcart API

This package makes it super easy to work with the Snipcart API in your Laravel application.

Installation

Install the package using Composer.

composer require aerni/snipcart-api

Set your Snipcart Live Secret and Test Secret in your .env. You can find them in your Snipcart Dashboard.

SNIPCART_LIVE_SECRET=********************************
SNIPCART_TEST_SECRET=********************************

You may also publish the config of the package.

php artisan vendor:publish --provider="Aerni\SnipcartApi\SnipcartApiServiceProvider"

The following config will be published to config/snipcart-api.php.

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Snipcart API Keys
    |--------------------------------------------------------------------------
    |
    | Your secret Snipcart API Keys for the Live and Test Environment.
    |
    */

    'live_secret' => env('SNIPCART_LIVE_SECRET'),
    'test_secret' => env('SNIPCART_TEST_SECRET'),

    /*
    |--------------------------------------------------------------------------
    | Test Mode
    |--------------------------------------------------------------------------
    |
    | Set this to 'false' to authenticate using the 'live_secret'.
    | You probably want to do this in production only.
    |
    */

    'test_mode' => env('SNIPCART_TEST_MODE', true),

];

Usage Example

Import the package at the top of your file. All of the following examples use the Facade.

use Aerni\SnipcartApi\Facades\SnipcartApi;

The SnipcartApi interface is made up of four parts. From defining the HTTP method to sending the request off to Snipcart.

// 1. Set the HTTP method to be used for the API request.
SnipcartApi::get() ...

// 2. Call the main method for the request.
SnipcartApi::get()->product('product_id') ...

// 3. Add optional parameter methods.
SnipcartApi::get()->product('product_id')->limit(10)->offset(10) ...

// 4. Send the request off to Snipcart.
SnipcartApi::get()->product('product_id')->limit(10)->offset(10)->send();

This gets a Snipcart product by ID.

$product = SnipcartApi::get()->product('product_id')->send();

All responses are wrapped in a Laravel Collection to make working with it super easy.

$product->get('stock');

Snipcart API Reference

Products

Snipcart API Reference on Products

// Get all products.
SnipcartApi::get()->products()->send();

// Post all products found on the URL.
SnipcartApi::post()->products('fetch_url')->send();

// Get a product by ID.
SnipcartApi::get()->product('product_id')->send();

// Update a product by ID. This requires additional parameter methods.
SnipcartApi::put()->product('product_id')->send();

// Delete a product by ID.
SnipcartApi::delete()->product('product_id')->send();

Orders

Snipcart API Reference on Orders

// Get all orders.
SnipcartApi::get()->orders()->send();

// Get an order by token.
SnipcartApi::get()->order('order_token')->send();

// Update an order by token. This requires additional parameter methods.
SnipcartApi::put()->order('order_token')->send();

Notifications

Snipcart API Reference on Notifications

// Get all notifications of an order.
SnipcartApi::get()->notifications('order_token')->send();

// Post a notification to an order. This requires additional parameter methods.
SnipcartApi::post()->notification('order_token')->send();

Refunds

Snipcart API Reference on Refunds

// Get all refunds of an order.
SnipcartApi::get()->refunds('order_token')->send();

// Get a specific refund from an order.
SnipcartApi::get()->refund('order_token', 'refund_id')->send();

// Post a refund to an order. This requires additional parameter methods.
SnipcartApi::post()->refund('order_token')->send();

Parameter Methods

Pass required or optional parameters to your requests using the fluent interface provided by this package. A common use case is to set a limit and offset to your request.

SnipcartApi::get()->products()->limit(10)->offset(10)->send();

Parameter Methods API Reference

Consult the Snipcart API Reference Documentation to check which parameters are available to what endpoint.

// The maximum number of items returned by the request.
limit(int $limit);

// The number of items that will be skipped.
offset(int $offset);

// The product ID defined by the user.
userDefinedId(string $id);

// The product ID defined by the user.
productId(string $id);

// Filter products to return those that have been bought from specified date.
from(string $from);

// Filter products to return those that have been bought until specified date.
to(string $to);

// The URL where we will find product details.
fetchUrl(string $url);

// Specifies how inventory should be tracked for this product.
// Can be 'Single' or 'Variant.
// Variant can be used when a product has some dropdown custom fields.
inventoryManagementMethod(string $method);

// Allows to set stock per product variant.
variants(array $variants);

// The number of items in stock.
// Will be used when 'inventoryManagementMethod' is 'Single'.
stock(int $stock = null);

// If true a customer will be able to buy the product even if it's out of stock.
// The stock level might be negative.
// If false it will be impossible to buy the product.
allowOutOfStockPurchases(bool $bool)

// A status criteria for your order collection.
// Possible values: InProgress, Processed, Disputed, Shipped, Delivered, Pending, Cancelled
status(string $status)

// The order payment status.
// Possible values: Paid, Deferred, PaidDeferred, ChargedBack, Refunded, Paidout,
// Failed, Pending, Expired, Cancelled, Open, Authorized.
paymentStatus(string $status)

// The invoice number of the order to retrieve.
invoiceNumber(string $invoiceNumber)

// The name of the person who made the purchase.
placedBy(string $name)

// Returns only the orders that are recurring or not.
isRecurringOrder(bool $bool)

// The tracking number associated to the order.
trackingNumber(string $number)

// The URL where the customer will be able to track its order.
trackingUrl(string $url)

// A simple array that can hold any data associated to this order.
metadata(array $metadata)

// The type of notification.
// Possible values: Comment, OrderStatusChanged, OrderShipped, TrackingNumber, Invoice
type(string $type)

// The delivery method of the notification.
// Possible values: Email, None
deliveryMethod(string $method)

// The message of the notification.
// Possible values: Email, None
message(string $message)

// The amount of the refund.
amount(string $amount)

// The reason for the refund.
comment(string $comment)

Tests

Run the tests like this:

vendor/bin/phpunit

About

The easy way to work with the Snipcart API in your Laravel application.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages