{"id":24382967,"url":"https://github.com/richtermeister/symfony-shopify-bundle","last_synced_at":"2025-04-11T01:12:14.650Z","repository":{"id":30002343,"uuid":"33549897","full_name":"Richtermeister/symfony-shopify-bundle","owner":"Richtermeister","description":"Makes Shopify app development easier, quicker, stronger.","archived":false,"fork":false,"pushed_at":"2023-12-06T04:57:42.000Z","size":204,"stargazers_count":27,"open_issues_count":8,"forks_count":28,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-11T01:12:08.101Z","etag":null,"topics":["php","shopify","symfony"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Richtermeister.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-04-07T14:58:36.000Z","updated_at":"2025-03-17T16:08:42.000Z","dependencies_parsed_at":"2023-12-06T05:43:32.536Z","dependency_job_id":null,"html_url":"https://github.com/Richtermeister/symfony-shopify-bundle","commit_stats":{"total_commits":57,"total_committers":2,"mean_commits":28.5,"dds":0.1228070175438597,"last_synced_commit":"e6579eca881f4f22a98dc2aacfe994f55ac3d44f"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Richtermeister%2Fsymfony-shopify-bundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Richtermeister%2Fsymfony-shopify-bundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Richtermeister%2Fsymfony-shopify-bundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Richtermeister%2Fsymfony-shopify-bundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Richtermeister","download_url":"https://codeload.github.com/Richtermeister/symfony-shopify-bundle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248322571,"owners_count":21084337,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["php","shopify","symfony"],"created_at":"2025-01-19T10:11:14.439Z","updated_at":"2025-04-11T01:12:14.627Z","avatar_url":"https://github.com/Richtermeister.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Symfony Shopify Bundle\n\nThis bundle enables quick and easy integration with Shopify.\n\n[![Build Status on Travis](https://img.shields.io/travis/Richtermeister/symfony-shopify-bundle/master.svg)](http://travis-ci.org/Richtermeister/symfony-shopify-bundle)\n[![Scrutinizer Quality Score](https://img.shields.io/scrutinizer/g/Richtermeister/symfony-shopify-bundle.svg)](https://scrutinizer-ci.com/g/Richtermeister/symfony-shopify-bundle/)\n\n## Features\n\n* Shopify OAuth signup flow with a few configuration options.\n* Thin wrapper around Guzzle for easy API interactions. All API endpoints are supported.\n* Symfony firewall to verify incoming API requests are authenticated (to embed app in Shopify Admin)\n* Webhook support to listen for Shopify events.\n\n## The Store Model\n\nStores are represented by instances of `ShopifyStoreInterface`. It is up to you to provide an implementation of it and handle persistence.\n\n## OAUTH Configuration\n\n``` yml\n// app/confiy.yml\n\ncode_cloud_shopify:\n    store_manager_id: { id of your store manager service }\n    oauth:\n        api_key: { your app's API Key }\n        shared_secret: { your app's shared secret } \n        scope: { the scopes your app requires, i.e.: \"read_customers,write_customers\" }\n        redirect_route: { the route to redirect users to after installing the app, i.e.: \"admin_dashboard\".. }\n    webhooks:\n        - orders/create\n        - customers/update\n```\n\n## API Usage\n\nYou can access the API of an authorized store via the `` service:\n \n``` php\n// in Controller\n\n$api = $this-\u003eget('')-\u003egetForStore(\"name-of-store\");\n\n$customers = $api-\u003eCustomer-\u003efindAll();\n$orders = $api-\u003eOrder-\u003efindAll();\n```\n\n## Webhooks\n\nYou can register a list of webhooks you are interested in receiving. \nThe bundle will automatically register them with Shopify and dispatch an event every time a webhook is received.\n\n```php\n\u003c?php\n\nnamespace AppBundle\\Event;\n\nuse CodeCloud\\Bundle\\ShopifyBundle\\Event\\WebhookEvent;\nuse Symfony\\Component\\EventDispatcher\\EventSubscriberInterface;\n\nclass WebhookListener implements EventSubscriberInterface\n{\n    public static function getSubscribedEvents()\n    {\n        return [\n            WebhookEvent::NAME =\u003e 'onWebhook',\n        ];\n    }\n\n    public function onWebhook(WebhookEvent $event)\n    {\n        switch ($event-\u003egetTopic()) {\n            case 'orders/create':\n                // your custom logic here\n                break;\n            case 'orders/update':\n                // your custom logic here\n                break;\n        }\n    }\n}\n\n```\n\n## Security \u0026 Authentication\n\nBy default, the bundle provides session-based authentication for admin areas embedded within Shopify.\n\n```yaml\nsecurity:\n    providers:\n        codecloud_shopify:\n            id: codecloud_shopify.security.admin_user_provider\n\n    firewalls:\n        admin:\n            pattern: ^/admin\n            provider: codecloud_shopify\n            guard:\n                authenticators:\n                    - codecloud_shopify.security.session_authenticator\n```\n\nAuthenticated users will be an instance of `CodeCloud\\Bundle\\ShopifyBundle\\Security\\ShopifyAdminUser`,\ntheir username will be the name of the authenticated store (storename.myshopify.com), and their roles will include `ROLE_SHOPIFY_ADMIN`.\n\nFor development purposes, you can impersonate any existing store.\n\n```yaml\n# in config_dev.yml\ncode_cloud_shopify:\n    dev_impersonate_store: \"{store-name}.myshopify.com\"\n```\n\n## Credits\n\nMany thanks to [David Smith](http://code-cloud.uk) for originally creating this bundle.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichtermeister%2Fsymfony-shopify-bundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichtermeister%2Fsymfony-shopify-bundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichtermeister%2Fsymfony-shopify-bundle/lists"}