Appwrite Function to receive payments in Lemon Squeezy and store paid orders.
This endpoint creates a Lemon Squeezy checkout. The user ID is fetched from the headers of the request. If the user ID is not found or a Lemon Squeezy checkout fails, the request will be redirected to a failure URL.
Parameters
| Name | Description | Location | Type | Sample Value |
|---|---|---|---|---|
| x-appwrite-user-id | User ID from Appwrite. | Header | String | 642...7cd |
| Content-Type | The content type of the request body | Header | application/json |
N/A |
| failureUrl | The URL to redirect to after a cancelled payment attempt. | Body | String | https://example.com/failure |
Response
Sample 303 Response:
The response is a redirect to the Lemon Squeezy checkout URL or to the failure URL if an error occurs
Location: https://ap...re.lemonsqueezy.com/checkout/custom/7576abf3-...e2fb
Location: https://mywebapp.com/cancel
This endpoint is a webhook that handles Lemon Squeezy event order_created. It validates the incoming request using the X-Signature header from the Lemon Squeezy webhook. If the validation fails, a 401 response is sent.
Parameters
| Name | Description | Location | Type | Sample Value |
|---|---|---|---|---|
| None | Webhook payload from Lemon Squeezy. | Body | Object | See Lemon Squeezy docs |
| x-signature | Signature from Lemon Squeezy. | Headers | String | See Lemon Squeezy docs |
Response
Sample 200 Response:
In case of order_created event, document for the order is created in Appwrite Database.
{ "success": true }Sample 401 Response:
{ "success": false }| Setting | Value |
|---|---|
| Runtime | Node (18.0) |
| Entrypoint | src/main.js |
| Build Commands | npm install && npm run setup |
| Permissions | any |
| Timeout (Seconds) | 15 |
If using a demo web app to create order, make sure to add your function domain as a web platform to your Appwrite project. Doing this fixes CORS errors and allows proper functionality.
Your Appwrite project's API key.
| Question | Answer |
|---|---|
| Required | Yes |
| Sample Value | 083d341ee48... |
| Documentation | Appwrite: Create an API key |
The endpoint where your Appwrite server is located. If not provided, it defaults to the Appwrite Cloud server: https://cloud.appwrite.io/v1.
| Question | Answer |
|---|---|
| Required | No |
| Sample Value | https://cloud.appwrite.io/v1 |
The ID of the database to store the orders.
| Question | Answer |
|---|---|
| Required | No |
| Sample Value | orders |
The ID of the collection to store the orders.
| Question | Answer |
|---|---|
| Required | No |
| Sample Value | orders |
API key for sending requests to the Lemon Squeezy API.
| Question | Answer |
|---|---|
| Required | Yes |
| Sample Value | eyJ0eXAiOiJ... |
| Documentation | Lemon Squeezy: API Keys |
Secret used to validate the Lemon Squuezy Webhook signature.
| Question | Answer |
|---|---|
| Required | Yes |
| Sample Value | abcd... |
| Documentation | Lemon Squeezy: Webhooks |
Store ID required to create a checkout using the Lemon Squeezy API.
| Question | Answer |
|---|---|
| Required | Yes |
| Sample Value | 123456 |
| Documentation | Lemon Squeezy: Checkouts |
Variant ID of a product required to create a checkout using the Lemon Squeezy API.
| Question | Answer |
|---|---|
| Required | Yes |
| Sample Value | 123456 |
| Documentation | Lemon Squeezy: Checkouts |