没有收到来自Webhook的通知-Laravel和Shopify

时间:2018-10-19 10:48:09

标签: php laravel shopify webhooks

我正在使用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

2 个答案:

答案 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/*',
];