【问题标题】:Not receiving notifications from webhook - laravel & shopify未收到来自 webhook 的通知 - laravel 和 shopify
【发布时间】:2018-10-19 10:48:09
【问题描述】:

我正在使用 laravel 为商家和 Shopify 创建一个应用程序。我已经配置并安装了 webhook,以便在我的应用程序中的 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');

接收控制器

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

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

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

我的应用的 shopify.php(webhook 配置)是否有任何错误?

PS:店铺域名为founz.myshopify.com,应用托管https://shopify.kast.com

【问题讨论】:

    标签: php laravel shopify webhooks


    【解决方案1】:

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

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

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

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

    您似乎没有使用访问令牌注册任何 webhook。当您使用 shopify 管理员注册 webhook 时,该 webhook 将被触发到所有应用程序。除非您知道自己在做什么,否则不要这样做。

    请尝试使用 Postman 使用您的访问令牌注册同一个 webhook,看看它是否正常工作。然后使用您的编程技能将其自动化。干杯!

    【讨论】:

      【解决方案2】:

      这可能有两个主要原因。

      1) 无法成功创建 Webhook。要检查这个请使用 API 调用 获取请求

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

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

      2) 在 Laravel 的开发中,你的 webhook 路由需要绕过 VerifyCsrfToken 中间件 因为 Laravel 默认不允许和阻止跨站点请求。要这样做,请按照以下步骤操作。

      转到 app/http/middleware/VerifyCsrfToken 并在 $except 数组中添加您的路线。

      例如:

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

      【讨论】:

        猜你喜欢
        • 2016-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-21
        • 2016-09-14
        • 1970-01-01
        • 2021-12-10
        • 2014-11-04
        相关资源
        最近更新 更多