我正在为商家创建一个应用程序,并使用laravel为Shopify创建一个应用程序。我已经配置并安装了 Webhook,以便在我的应用程序中以config/shopify.php
创建新客户时向管理员发送通知。
购物.php
use OseintowShopifyFacadesShopify;
use LaravelSocialiteFacadesSocialite;
use AppUser;
use AppStore;
use AppUserProvider;
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并发送测试通知或创建客户时,我会收到短信/电子邮件
但是,当我从管理页面中删除网络钩子设置并为商店创建新客户时,我没有收到短信。
我的应用的 shopify.php(网络钩子配置(是否有任何错误?
PS:商店域名founz.myshopify.com
,应用程序托管https://shopify.kast.com
很可能您没有使用访问令牌注册 Webhook。
如果您使用的是OseintowShopify
,您的shopify.php
文件应如下所示:
<?php
return [
'key' => env("SHOPIFY_APIKEY", '0f20e4692981aefb8558etrgrh72thty5'),
'secret' => env("SHOPIFY_SECRET", 'fgghg55666585f1a09214drtg56454g')
];
让它只保存公共应用的凭据。
看起来您尚未使用访问令牌注册任何 Webhook。当您使用 shopify 管理员注册网络钩子时,该网络钩子将触发到所有应用程序。除非你知道自己在做什么,否则不要这样做。
相反,请尝试使用带有访问令牌的 Postman 注册相同的 Webhook,看看它是否正常工作。然后使用您的编程技能将其自动化。干杯!
这可能有两个主要原因。
1( 无法成功创建网络钩子。检查此 请与 API 调用 获取请求
GET /admin/api/2019-10/webhooks.json
如果您在响应中没有获得所需的网络钩子,请创建它
2(在Laravel太平洋开发中,你需要绕过VerifyCsrfToken中间件进行Webhook路由 由于Laravel不允许和阻止跨站点请求 default.to 请按照以下步骤操作。
转到app/http/middleware/VerifyCsrfToken并将您的路由添加到$except数组中。
例如:
protected $except = [
'/app/uninstalled-webhook-shopify/*',
'/products/create-webhook-shopify/*',
];