nimfus / laravel-shopify
Laravel Shopify 包
2.0.1
2020-04-15 11:24 UTC
Requires
- php: >=7.0.0
- guzzlehttp/guzzle: ^6.2
- illuminate/support: ^7.0
README
Laravel Shopify 是一个简单的包,可以帮助您建立健壮的 Shopify 集成。
安装
将包添加到 composer.json 文件中
composer require oseintow/laravel-shopify
Laravel 5.5+
包自动发现将为您处理设置别名和外观
Laravel 5.4 <
将服务提供者添加到 config/app.php 中的 providers 数组。
<?php 'providers' => [ ... Oseintow\Shopify\ShopifyServiceProvider::class, ],
为外观设置别名
<?php 'aliases' => [ ... 'Shopify' => Oseintow\Shopify\Facades\Shopify::class, ],
配置
Laravel Shopify 需要连接配置。您需要发布供应商资源
php artisan vendor:publish
这将在配置目录中创建一个 shopify.php 文件。您需要设置您的 API_KEY 和 SECRET
使用方法
要安装/集成商店,您需要使用 Shopify API 初始化 OAuth 认证,并且这需要三个组件。
它们是
1. Shop URL (eg. example.myshopify.com)
2. Scope (eg. write_products, read_orders, etc)
3. Redirect URL (eg. http://mydomain.com/process_oauth_result)
此过程将使我们能够获取商店的访问令牌
use Oseintow\Shopify\Facades\Shopify; Route::get("install_shop",function() { $shopUrl = "example.myshopify.com"; $scope = ["write_products","read_orders"]; $redirectUrl = "http://mydomain.com/process_oauth_result"; $shopify = Shopify::setShopUrl($shopUrl); return redirect()->to($shopify->getAuthorizeUrl($scope,$redirectUrl)); });
让我们获取访问令牌
Route::get("process_oauth_result",function(\Illuminate\Http\Request $request) { $shopUrl = "example.myshopify.com"; $accessToken = Shopify::setShopUrl($shopUrl)->getAccessToken($request->code); dd($accessToken); // redirect to success page or billing etc. });
为了验证请求(hmac)
public function verifyRequest(Request $request) { $queryString = $request->getQueryString(); if(Shopify::verifyRequest($queryString)){ logger("verification passed"); }else{ logger("verification failed"); } }
为了验证 webhook(hmac)
public function verifyWebhook(Request $request) { $data = $request->getContent(); $hmacHeader = $request->server('HTTP_X_SHOPIFY_HMAC_SHA256'); if (Shopify::verifyWebHook($data, $hmacHeader)) { logger("verification passed"); } else { logger("verification failed"); } }
要访问 API 资源,请使用
Shopify::get("resource uri", ["query string params"]); Shopify::post("resource uri", ["post body"]); Shopify::put("resource uri", ["put body"]); Shopify::delete("resource uri");
让我们使用我们的访问令牌从 Shopify 获取产品。
注意:您可以使用此方法访问 Shopify 上的任何资源(无论是产品、商店、订单等)
$shopUrl = "example.myshopify.com"; $accessToken = "xxxxxxxxxxxxxxxxxxxxx"; $products = Shopify::setShopUrl($shopUrl)->setAccessToken($accessToken)->get("admin/products.json");
传递查询参数
// returns Collection $shopify = Shopify::setShopUrl($shopUrl)->setAccessToken($accessToken); $products = $shopify->get("admin/products.json", ["limit"=>20, "page" => 1]);
控制器示例
如果您像我一样更喜欢使用依赖注入而不是外观,则可以注入该类
use Illuminate\Http\Request; use Oseintow\Shopify\Shopify; class Foo { protected $shopify; public function __construct(Shopify $shopify) { $this->shopify = $shopify; } /* * returns Collection */ public function getProducts(Request $request) { $products = $this->shopify->setShopUrl($shopUrl) ->setAccessToken($accessToken) ->get('admin/products.json'); $products->each(function($product){ \Log::info($product->title); }); } }
杂项
获取响应头
Shopify::getHeaders();
获取特定头
Shopify::getHeader("Content-Type");
检查头是否存在
if(Shopify::hasHeader("Content-Type")){ echo "Yes header exist"; }
获取响应状态码或状态信息
Shopify::getStatusCode(); // 200 Shopify::getReasonPhrase(); // ok