Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shop3/strapi-plugin-shopify
Build a Shopify application with Strapi.
https://github.com/shop3/strapi-plugin-shopify
shopify strapi strapi-plugin
Last synced: 23 days ago
JSON representation
Build a Shopify application with Strapi.
- Host: GitHub
- URL: https://github.com/shop3/strapi-plugin-shopify
- Owner: shop3
- License: mit
- Created: 2022-05-27T09:55:53.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-07-18T14:53:24.000Z (over 1 year ago)
- Last Synced: 2024-11-29T21:20:14.641Z (26 days ago)
- Topics: shopify, strapi, strapi-plugin
- Language: JavaScript
- Homepage:
- Size: 3.24 MB
- Stars: 25
- Watchers: 4
- Forks: 9
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Strapi Plugin Shopify
Build a Shopify application with Strapi.
## Table Of Content
- [Requirements](#requirements)
- [Installation](#installation)
- [Middlewares Configuration](#middlewares-configuration)
- [Shopify Configuration](#shopify-configuration)
- [Environment Variables](#environment-variables)
- [Endpoints](#endpoints)## Requirements
Strapi v4 is required.
## Installation
```bash
npm install --save strapi-plugin-shopify
```## Middlewares configuration
Webhooks are authenticated with **HMAC** calculated on the raw body, `strapi::body` middleware should be configured to pass the unparsed body as following:
```js
{
name: 'strapi::body',
config: {
includeUnparsed: true,
},
},
```If you want to serve an embedded app directly from Strapi you will find that default **CSP policies** will not allow to do that, `strapi::security` middleware should be configured as following *(this configuration should be used only if you have problem with the embedded app iframe)*:
```js
{
name: 'strapi::security',
config: {
contentSecurityPolicy: {
useDefaults: true,
directives: {
'frame-ancestors': null,
},
},
frameguard: false,
},
},
```## Shopify Configuration
The Shopify application should be configured as follow:
- App URL should be set as `https://your-domain.com/api/shopify`
- Allowed redirection URL(s) should have both
- `https://your-domain.com/api/shopify/install/callback`
- `https://your-domain.com/api/shopify/auth/callback`![Screenshot illustrating how to configure the Shopify application](https://github.com/shop3/strapi-plugin-shopify/blob/main/assets/screenshot-create-shopify-app.jpg)
## Environment Variables
This plugin needs the following environment variables to work:
| Variable | Example | Description |
| -------- | ------- | ----------- |
| HOST_NAME | `shop3.app` | the host name of your app without the protocol (http or https) |
| SHOPIFY_API_KEY | `553536bf79ee112525f63aaf25df59f8` | the API key generated by Shopify |
| SHOPIFY_API_SECRET | `687b73300b570bdbe53220d84a18e23d` | the API secret generated by Shopify |
| SHOPIFY_SCOPES | `read_locales,read_products` | the API scopes used by the application |
| SHOPIFY_APP_EMBEDDED | `true` | whether the app is an embedded app or not |
| SHOPIFY_REDIRECT_URL | `https://shop3.app/home` | the url where the user is redirect after authentication |## Endpoints
This are the endpoints exposed by this plugin:
| Method | Path | Description |
| ------ | ---- | ----------- |
| GET | /api/shopify | the entry point of the application, it handles installation and authentication |
| POST | /api/shopify/webhooks | the default webhooks endpoint called by Shopify |
| GET | /api/shopify/install | the installation endpoint, should not be called directly, use /api/shopify instead |
| GET | /api/shopify/install/callback | the installation callback endpoint, should be called only by Shopify |
| GET | /api/shopify/auth | the authentication endpoint, should not be called directly, use /api/shopify instead |
| GET | /api/shopify/auth/callback | the authentication callback endpoint, should be called only by Shopify |
| POST | /api/shopify/auth/logout | the logout endpoint, should be called to delete the Shopify session |
| GET | /api/shopify/shop | this endpoint should be called to get the authenticated shop data |
| GET | /api/shopify/plans | this endpoint should be called to get available subscription plans |
| GET | /api/shopify/subscription | this endpoint should be called to get the shop subscription |
| POST | /api/shopify/subscription | this endpoint should be called to create a shop subscription |