Skip to content
This repository has been archived by the owner on Nov 30, 2022. It is now read-only.

Shopify Webhook is not working #478

Closed
jimmy818 opened this issue May 7, 2020 · 7 comments
Closed

Shopify Webhook is not working #478

jimmy818 opened this issue May 7, 2020 · 7 comments

Comments

@jimmy818
Copy link

jimmy818 commented May 7, 2020

Hi I am new to this package and facing issues with creating webhooks. I also want to store data in app's database when product will be created in shopify store, how can I do that?.

Any expert please help me out with that

What I have done so far.

  1. Created Job by using using php artisan shopify-app:make:webhook ProductsCreateJob products/create
  2. Created Webhook array parameters in shopify-app.php
    'webhooks' => [ 'topic' => env('SHOPIFY_WEBHOOK_CREATE_PRODUCTS', 'products/create'), 'address' => env('SHOPIFY_WEBHOOK_CREATE_PRODUCTS_ADDRESS', 'https://phpstack-227246-696630.cloudwaysapps.com/webhook/products-create') ], ],

But its giving me unknown error

[2020-05-07 00:16:18] local.ERROR: Unknown error {"userId":2,"exception":"[object] (Osiset\ShopifyApp\Exceptions\ApiException(code: 0): Unknown error at /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/osiset/laravel-shopify/src/ShopifyApp/Services/ApiHelper.php:340)
[stacktrace]
#0 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/osiset/laravel-shopify/src/ShopifyApp/Services/ApiHelper.php(267): Osiset\ShopifyApp\Services\ApiHelper->doRequest(Object(Osiset\ShopifyApp\Objects\Enums\ApiMethod), '/admin/webhooks...', Array)
#1 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/osiset/laravel-shopify/src/ShopifyApp/Actions/CreateWebhooks.php(78): Osiset\ShopifyApp\Services\ApiHelper->createWebhook(Array)
#2 [internal function]: Osiset\ShopifyApp\Actions\CreateWebhooks->__invoke(Object(Osiset\ShopifyApp\Objects\Values\ShopId), Array)
#3 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/osiset/laravel-shopify/src/ShopifyApp/Messaging/Jobs/WebhookInstaller.php(68): call_user_func(Object(Osiset\ShopifyApp\Actions\CreateWebhooks), Object(Osiset\ShopifyApp\Objects\Values\ShopId), Array)
#4 [internal function]: Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller->handle()
#5 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(33): call_user_func_array(Array, Array)
#6 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Container/Util.php(36): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#7 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(91): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
#8 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#9 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Container/Container.php(592): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#10 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(94): Illuminate\Container\Container->call(Array)
#11 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller))
#12 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller))
#13 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#14 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(83): Illuminate\Bus\Dispatcher->dispatchNow(Object(Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller), false)
#15 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Queue\CallQueuedHandler->Illuminate\Queue\{closure}(Object(Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller))
#16 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller))
#17 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(85): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#18 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(59): Illuminate\Queue\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\Queue\Jobs\SyncJob), Object(Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller))
#19 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(98): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\SyncJob), Array)
#20 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(43): Illuminate\Queue\Jobs\Job->fire()
#21 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(182): Illuminate\Queue\SyncQueue->push(Object(Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller))
#22 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(158): Illuminate\Bus\Dispatcher->pushCommandToQueue(Object(Illuminate\Queue\SyncQueue), Object(Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller))
#23 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(73): Illuminate\Bus\Dispatcher->dispatchToQueue(Object(Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller))
#24 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Foundation/Bus/PendingDispatch.php(134): Illuminate\Bus\Dispatcher->dispatch(Object(Osiset\ShopifyApp\Messaging\Jobs\WebhookInstaller))
#25 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/osiset/laravel-shopify/src/ShopifyApp/Actions/DispatchWebhooks.php(85): Illuminate\Foundation\Bus\PendingDispatch->__destruct()
#26 [internal function]: Osiset\ShopifyApp\Actions\DispatchWebhooks->__invoke(Object(Osiset\ShopifyApp\Objects\Values\ShopId), false)
#27 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/osiset/laravel-shopify/src/ShopifyApp/Actions/AuthenticateShop.php(118): call_user_func(Object(Osiset\ShopifyApp\Actions\DispatchWebhooks), Object(Osiset\ShopifyApp\Objects\Values\ShopId), false)
#28 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/osiset/laravel-shopify/src/ShopifyApp/Traits/AuthController.php(48): Osiset\ShopifyApp\Actions\AuthenticateShop->__invoke(Object(Illuminate\Http\Request))
#29 [internal function]: Osiset\ShopifyApp\Http\Controllers\AuthController->authenticate(Object(Illuminate\Http\Request), Object(Osiset\ShopifyApp\Actions\AuthenticateShop))
#30 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)
#31 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\Routing\Controller->callAction('authenticate', Array)
#32 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Routing/Route.php(225): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Osiset\ShopifyApp\Http\Controllers\AuthController), 'authenticate')
#33 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Routing/Route.php(182): Illuminate\Routing\Route->runController()
#34 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Routing/Router.php(685): Illuminate\Routing\Route->run()
#35 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#36 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#37 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(76): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#39 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#40 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#41 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#42 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#43 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#44 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#45 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#46 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#47 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#48 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#49 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Routing/Router.php(687): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#50 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Routing/Router.php(662): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#51 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Routing/Router.php(628): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#52 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Routing/Router.php(617): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#53 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#54 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#55 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#56 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#57 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#58 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#59 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#60 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#61 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(63): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#62 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#63 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/fruitcake/laravel-cors/src/HandleCors.php(36): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#64 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\Cors\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
#65 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#66 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#67 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#68 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(140): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#69 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(109): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#70 /home/227246.cloudwaysapps.com/kaxryrbare/public_html/shipping/public/index.php(55): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#71 {main}

@jimmy818
Copy link
Author

It was issue related to route. I am closing it.

@monykini
Copy link

@jimmy818 , Mate how did you create the webhook , Im so frustrated , Please help me out aswell , On how you fixed the issue

@jmanzo
Copy link

jmanzo commented Jan 21, 2021

Hi, why didn't you share the solution that worked? I'm stuck with the same weird error and now we can't see what worked for you

@monykini
Copy link

@jmanzo Are you working locally? I found a solution to this some time ago, Let me know if you still need help

@jmanzo
Copy link

jmanzo commented Jan 22, 2021

@monykini yes, I am. But I deployed my application to a cloudways environment and tested. So, it's publicly accessible. That's weird. I can't make the webhook respond with the application at all. There is no logs, nor a useful message

@monykini
Copy link

Okay, So please, Take me through the process you followed to create the hook,

  1. did you do this PHP artisan Shopify-app:make:webhook [name] [topic] ?
  2. did you add it in the config/shopify-app.php? if so how?
  3. What event are you adding?
    Also, some events can be test triggered from the admin, So you can also check if your address is working properly,
    Add me on Discord Mony#1703 if you need immediate help , Thanks

@alexrafuse
Copy link

alexrafuse commented Jun 1, 2021

Here is how I solved this:

To investigate I added a dump to the doRequest method of the Services/ApiHelper.php file:

protected function doRequest(ApiMethod $method, string $path, array $payload = null)
    {
        $response = $this->api->rest($method->toNative(), $path, $payload);
        if ($response['errors'] === true) {
            dump($response);
            // Request error somewhere, throw the exception
            throw new ApiException(
                is_string($response['body']) ? $response['body'] : 'Unknown error',
                0,
                $response['exception']
            );
        }

        return $response;
    }

Which showed me this:

"body" => array:1 [▶
    "topic" => array:1 [▶
      0 => "Invalid topic specified: orders/create. Does it exist? Is there a missing access scope? Topics allowed: app/uninstalled, collections/create, collections/delete, collections/update, products/create, products/delete, products/update, shop/update, app_purchases_one_time/update, app_subscriptions/update ◀Invalid topic specified: orders/create. Does it exist? Is there a missing access scope? Topics allowed: app/uninstalled, collections/create, collections/delete, ▶"
    ]
  ]

I added read_orders to my api scopes and now everything works perfectly.

'api_scopes' => 'read_orders,read_products,write_products,write_script_tags',

I had to uninstall and reinstall the app for it to work. Since the uninstall job never installed correctly I had to manually delete the user from the database, remove the app, and reinstall.

Hope this helps anyone that stumbles across this.

TLDR: Check your api_scopes

# for free to subscribe to this conversation on GitHub. Already have an account? #.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants