我正在使用laravel为商家和Shopify创建一个应用程序。我已配置并安装了webhooks,以便在我的应用中的config/shopify.php
中创建新客户时发送管理员通知。
shopify.php
use Oseintow\Shopify\Facades\Shopify;
use Laravel\Socialite\Facades\Socialite;
use App\User;
use App\Store;
use App\UserProvider;
use Auth;
$shopifyUser = Socialite::driver('shopify')->stateless()->user();
$shopUrl = $shopifyUser->nickname;
$accessToken = $shopifyUser->token;
Shopify::setShopUrl($shopUrl)->setAccessToken($accessToken)->post("admin/webhooks.json",
[
'webhook' =>
['topic' => 'customers/create',
'address' => 'https://shopify.kast.com/webhook',
'format' => 'json'
]
]);
路线
Route::post('/webhook', 'ReceiverController@webhook');
ReceiverController
public function webhook()
{
send sms/email to admin
}
现在,当我在商店管理员设置中配置Webhook并发送测试通知或创建客户时,我会收到短信/电子邮件
但是,当我从管理页面删除webhook设置并为商店创建新客户时,我没有收到短信。
我的应用程序的shopify.php(webhook配置)是否存在任何错误?
PS:商店域为founz.myshopify.com
,应用托管为https://shopify.kast.com
答案 0 :(得分:0)
很可能您没有使用访问令牌注册Webhook。
如果您使用的是Oseintow\Shopify
,则您的shopify.php
文件应如下所示:
<?php
return [
'key' => env("SHOPIFY_APIKEY", '0f20e4692981aefb8558etrgrh72thty5'),
'secret' => env("SHOPIFY_SECRET", 'fgghg55666585f1a09214drtg56454g')
];
让它仅保存您的公共应用程序的凭据。
您似乎尚未使用访问令牌注册任何Webhook。当您使用shopify admin注册Webhook时,该Webhook将被触发到所有应用程序。除非您知道自己在做什么,否则不要这样做。
相反,请尝试使用带有您的访问令牌的Postman注册相同的Webhook,然后查看其是否有效。然后使用您的编程技能将其自动化。干杯!
答案 1 :(得分:0)
可能有两个主要原因。
1)Webhook无法成功创建。要检查此,请使用 GET请求
GET /admin/api/2019-10/webhooks.json
如果您在响应中没有获得所需的网络挂钩,请创建它
2)在Laravel的特定开发中,您需要绕过Webhook路由的VerifyCsrfToken中间件 由于Laravel不允许默认设置并禁止跨站点请求。为此,请按照以下步骤操作。
转到 app / http / middleware / VerifyCsrfToken ,然后将路由添加到 $ except 数组中。
例如:
protected $except = [
'/app/uninstalled-webhook-shopify/*',
'/products/create-webhook-shopify/*',
];