PHP code example of moirei / laravel-google-merchant-api
1. Go to this page and download the library: Download moirei/laravel-google-merchant-api library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
moirei / laravel-google-merchant-api example snippets
use MOIREI\GoogleMerchantApi\Facades\ProductApi;
use MOIREI\GoogleMerchantApi\Facades\OrderApi;
...
ProductApi::insert(function($product){
$product->offerId(1)
->title('Purple Shoes')
->description('What are thooose!!')
->price(10)
->custom('purchase_quantity_limit', 1000)
->availabilityDate( today()->addDays(7) );
})->then(function($response){
echo 'Product inserted';
})->otherwise(function($response){
echo 'Insert failed';
})->catch(function($e){
echo($e->getResponse()->getBody()->getContents());
});
OrderApi::list()->then(function($response){
//
})->otherwise(function($response){
echo 'List failed';
})->catch(function($e){
echo($e->getResponse()->getBody()->getContents());
});
OrderApi::scout(); // Scout and fire event
$attributes = [
'id' => 1, // maps to offerId (if set in config)
'name' => 'Product 1', // likewise maps to title
];
ProductApi::insert(function($product) use($attributes){
$product->with($attributes)
->link('https://moirei.com/mg001')
->price(60, 'USD');
})->then(function($data){
echo 'Product inserted';
})->otherwise(function(){
echo 'Insert failed';
})->catch(function($e){
dump($e);
});
use MOIREI\GoogleMerchantApi\Contents\Product\Product as GMProduct;
...
$attributes = [
'id' => 1,
'name' => 'Product 1',
];
$product = (new GMProduct)->with($attributes);
use App\Models\Product;
use MOIREI\GoogleMerchantApi\Contents\Product\Product as GMProduct;
...
$model = Product::find(1);
$product = (new GMProduct)->with($model);
ProductApi::insert($product)->catch(function($e){
// always catch exceptions
});
protected $appends = [
'availability',
'gm_price',
];
...
public function getAvailabilityAttribute(){
return 'in stock'; // calculate
}
public function getGmPriceAttribute(){
return [
'value' => $this->price,
'currency' => $this->currency->code,
];
}
use MOIREI\GoogleMerchantApi\Events\ProductCreatedOrUpdatedEvent;
...
/**
* The "booting" method of the model.
*
* @return void
*/
protected static function boot() {
parent::boot();
// when a product is created
static::created(function(Product $product){
// perhaps a logic to ignore drafts and private products
if($product->is_active && (config('app.env') === 'production')){
event(new ProductCreatedOrUpdatedEvent($product));
}
});
// when a product is updated
static::updated(function(Product $product){
// perhaps a logic to ignore drafts and private products
if($product->is_active && (config('app.env') === 'production')){
event(new ProductCreatedOrUpdatedEvent(function($gm_product) use ($product){
$gm_product->with($product)
->preorder()
->availabilityDate($product->preorder_date);
}));
}
});
}
use MOIREI\GoogleMerchantApi\Listeners\ProductCreatedOrUpdatedListener;
...
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
...,
/**
* Product events
*/
ProductCreatedOrUpdatedEvent::class => [
ProductCreatedOrUpdatedListener::class,
],
];
$order = (new Order)->with([
'id' => 'TEST-1953-43-0514',
]);
OrderApi::acknowledge($order);
use MOIREI\GoogleMerchantApi\Events\NewOrdersScoutedEvent;
use MOIREI\GoogleMerchantApi\Facades\OrderApi;
...
public function handle(NewOrdersScoutedEvent $event)
{
$merchant = $event->merchant; // array key as defined in config
$merchant_id = $event->merchant_id;
foreach($event->orders as $gm_order){
OrderApi::acknowledge($gm_order);
$gm_order = $gm_order->all(); // get all attributes, including mutated attributes
foreach($gm_order['lineItems'] as $line_item){
$model = $line_item['model']; // retrieves model
$quantity = $line_item['quantityOrdered'];
$shipping = $line_item['shippingDetails'];
$delivery_date = $shipping['deliverByDate']->diffForHumans();
// register new order item
}
// register new order
}
}