提问者:小点点

未接收来自webhook的通知-laravel


我正在使用laravel为商家和Shopify创建一个应用程序。我已经配置并安装了webhook,以便在config/shopify中创建新客户时向管理员发送通知。我的应用程序中的php

购物化。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');

接收器控制器

 public function webhook()
    {
       send sms/email to admin
    }

现在,当我在商店管理设置中配置webook并发送测试通知或创建客户时,我会收到短信/电子邮件

但是当我从管理页面删除webhook设置并为商店创建新客户时,我不会收到短信。

我的应用程序在shopify.php(webook配置)中是否有任何错误?

PS:商店域名是founz。神秘化。com和应用程序被托管https://shopify.kast.com


共2个答案

匿名用户

很可能您没有使用访问令牌注册webhook。

如果您使用的是Oseintow\Shopify,您的Shopify。php文件应如下所示:

<?php

return [        
    'key' => env("SHOPIFY_APIKEY", '0f20e4692981aefb8558etrgrh72thty5'),
    'secret' => env("SHOPIFY_SECRET", 'fgghg55666585f1a09214drtg56454g')
]; 

让它只保存公共应用的凭据。

看起来您还没有使用访问令牌注册任何webhook。当您使用shopify admin注册webhook时,该webhook将被激发到所有应用程序。除非你知道自己在做什么,否则不要那样做。

相反,尝试使用邮递员和访问令牌注册相同的网络钩子,看看它是否工作。然后使用你的编程技能来自动化它。干杯!

匿名用户

这可能有两个主要原因。

1)网络钩子无法成功创建。要检查此请使用GET请求进行API调用

GET /admin/api/2019-10/webhooks.json

如果您没有在响应中获得所需的webhook,请创建它

2) 在Laravel spacific开发中,您需要为您的webhook路线绕过VerifyCsrfToken中间件,因为Laravel不允许这样做

转到app/http/middleware/VerifyCsrfToken

例如:

protected $except = [
  '/app/uninstalled-webhook-shopify/*',
  '/products/create-webhook-shopify/*',
];