Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rsoury/buyte
Apple Pay and Google Pay in a single install. Digital Wallet Payment Orchestration built on a Serverless Stack for AWS using Golang, Node.js, Serverless Framework and AWS Amplify
https://github.com/rsoury/buyte
amplify applepay aws checkout golang googlepay graphql nodejs payments serverless
Last synced: 4 days ago
JSON representation
Apple Pay and Google Pay in a single install. Digital Wallet Payment Orchestration built on a Serverless Stack for AWS using Golang, Node.js, Serverless Framework and AWS Amplify
- Host: GitHub
- URL: https://github.com/rsoury/buyte
- Owner: rsoury
- License: bsd-3-clause
- Created: 2021-09-26T08:23:31.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2021-10-12T10:48:07.000Z (about 3 years ago)
- Last Synced: 2024-06-21T18:52:13.508Z (5 months ago)
- Topics: amplify, applepay, aws, checkout, golang, googlepay, graphql, nodejs, payments, serverless
- Language: Go
- Homepage:
- Size: 1.74 MB
- Stars: 10
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Buyte
Digital wallet payment orchestration on a serverless stack
Accelerate your eCommerce website checkout with an enhanced digital wallet payment orchestration. Integrate native Apple Pay and Google Pay with your Payment Processor(s).
![Buyte Banner](https://github.com/rsoury/buyte/blob/master/examples/images/banner-1544x500.jpg)
## Table of Contents
- [Table of Contents](#table-of-contents)
- [Features](#features)
- [Supported Digital Wallets](#supported-digital-wallets)
- [Supported Payment Processors](#supported-payment-processors)
- [Overview](#overview)
- [Installation Requirements](#installation-requirements)
- [Supporting Repositories](#supporting-repositories)
- [Getting Started](#getting-started)
- [1. Amplify](#1-amplify)
- [2. ApplePay Certificates](#2-applepay-certificates)
- [3. Serverless](#3-serverless)
- [3. CLI](#3-cli)
- [5. Finalise Cognito](#5-finalise-cognito)
- [Database Set Up](#database-set-up)
- [(Optional) Update Database Schema](#optional-update-database-schema)
- [Testing](#testing)
- [Caveats](#caveats)
- [Development Endpoints](#development-endpoints)
- [Contribution](#contribution)
- [Enterprise Support](#enterprise-support)
- [Found this repo interesting?](#found-this-repo-interesting)## Features
- **Frictionless:** Skip passwords, account forms and the standard checkout flow. Minimise time to checkout, maximising conversions.
- **Familiar:** Allow your users to checkout using the same technology they use in-store.
- **Secure:** Apple and Google's security infrastructure prevents card/payment details from leaving your user's devices.
- **Widgetised:** Complete your checkout from anywhere on your website with the [Buyte Checkout](https://github.com/rsoury/buyte-checkout).
- **Extensible:** Bring your Payment Processor and pass on raw/decrypted payment data.
- **Serverless:** Scalable by default.## Supported Digital Wallets
- Apple Pay
- Google Pay## Supported Payment Processors
- Stripe
- Adyen
- [**Add your own**](#contribution)## Overview
This repository responsible for tokenisation of digital wallet payloads before passing on raw/decrypted payment data to the connected Payment Processor.
It is comprised of the Serverless API, CLI, Scripts, and AWS Amplify Configuration
The produced Binary is a CLI tool capable of running commands for administrative and development purposes as well as a command for starting the Tokenisation and Payment Processing API.
## Installation Requirements
- Go 1.16.0+
- Node.js 10.0+## Supporting Repositories
Once this codebase has been set up, please visit:
- [Buyte Dashboard](https://github.com/rsoury/buyte-dashboard)
- Set up the Administration Portal where Checkouts can be created and connected to different Payment Processors.
- [Buyte Checkout](https://github.com/rsoury/buyte-checkout)
- Configure and then install the Buyte Checkout JS library into your website referencing the Checkout ID produced in your Buyte Dashboard.## Getting Started
1. Clone the repository `git clone [email protected]:rsoury/buyte.git`
2. Install Node.js Dependencies: `yarn`### 1. Amplify
1. Set up your Amplify Configuration
1. `amplify configure`
2. Make a `dev` directory under the amplify directory. In each directory (`dev` or `prod`), you can manage an environment for your Amplify configurations. We advise committing these configurations to a private repository. These configurations will include references to components in your cloud infrastructure.
1. `mkdir -p ./amplify/dev`
2. `cd ./amplify/dev`
3. `amplify init`
2. Add a Data Storage (DynamoDB and AppSync GraphQL) to Amplify
`amplify api add`
1. Select **"GraphQL"** for the interface and **"Amazon Cognito User Pools"** for authentication
2. Select **"Yes"** for "Do you want to configure advanced settings for the GraphQL API" and provide the path to the GraphQL Schema `../graphql.schema`
3. Add Auth (Cognito) to Amplify
`amplify add auth`
You should receive a message that Auth has already been added.
4. Push your Amplify configuration
`amplify push`
Ensure you auto-generate code from GraphQL schema when prompted.
5. Add the GraphQL Endpoint to your Environment file `.env.development` or `.env.production`### 2. ApplePay Certificates
[Visit the Certs directory](https://github.com/rsoury/buyte/blob/master/certs/) and follow the guide to produce your Apple Pay Certificates
### 3. Serverless
1. Deploy to AWS
For Production - `sls deploy --env production --stage prod`
For Development - `sls deploy`For development, use `sls offline` to test requests to a locally hosted web server.
### 3. CLI
1. Install Golang dependencies - `go mod download`
2. Build the binary - `make`
3. Run the API in Development - `buyte api`
4. Run the API in Production - `buyte api --production`For development, use `make init && make watch` to rebuild the binary on file change.
### 5. Finalise Cognito
Go to your AWS Console and visit the Cognito Portal.
1. Add the Serverless Lambda Functions as the Cognito Triggers.
2. Add a Domain Name to your Hosted UI
3. Update your `COGNITO_CLIENTID` and `COGNITO_USERPOOLID` your Environment file(s).Further configuration for Cognito will continue in the [Buyte Dashboard](https://github.com/rsoury/buyte-dashboard) set up.
## Database Set Up
*We highly advise configuring your `.env.development` or `.env.production` files before proceeding to minimise the number of flags passed to each command.*
1. Create yourself a super user
```
buyte create-super-user -e [email protected] -p somepassword
```
1. Add your `ADMIN_USERNAME` and `ADMIN_PASSWORD` environment variables to your `.env` file
2. Set up Cognito Custom User Attributes - for [Dashboard](https://github.com/rsoury/buyte-dashboard)
```
buyte auth-setup
```
3. Create your payment options
```
buyte payments add --name "Apple Pay" --image https://s3.url/to-imaage.png
buyte payments add --name "Google Pay"
```
4. Create your payment providers
```
buyte providers add --name Adyen
buyte providers add --name Stripe
```
5. Use the List commands to identify the Ids of each Payment and Provider record. ie. `buyte payments list` or `buyte providers list`
6. Connect your Payment Options to each of your Payment Providers.
```
buyte providers connect --provider-id adyen-xxxx-xxxx-xxxx --payment-id applepay-yyyy-yyyy-yyyy
buyte providers connect --provider-id stripe-xxxx-xxxx-xxxx --payment-id applepay-yyyy-yyyy-yyyy
buyte providers connect --provider-id adyen-xxxx-xxxx-xxxx --payment-id googlepay-yyyy-yyyy-yyyy
buyte providers connect --provider-id stripe-xxxx-xxxx-xxxx --payment-id googlepay-yyyy-yyyy-yyyy
```
7. List your providers to check which payment options are connected - `buyte providers list`You should see an output of the Provider details and their associated Payment Options.
## (Optional) Update Database Schema
In case you have unique storage requirements that fall outside of the schema, here's a simple way to update your schema.
1. Create a symlink to the Amplify backend directory.
```
ln -s ./amplify/schema.graphql ./amplify/dev/amplify/backend/api/buytedev/schema.graphql
```
2. Make modifications to `./amplify/schema.graphql`
3. `cd ./amplify/dev/`
4. `amplify api update`
5. `amplify push`## Testing
```shell
go test -v
```## Caveats
- [ApplePay](https://github.com/rsoury/applepay/) dependency has some caveats:
- You may need to change your `PKG_CONFIG_PATH` to include OpenSSL. For example, on my Mac I use `PKG_CONFIG_PATH=$(brew --prefix openssl)/lib/pkgconfig go test`.
- After Serverless Deploy, go to AWS Cognito in AWS console and save the Cognito Triggers page.
**There is a bug here where without saving manually, they will not run when required.**## Development Endpoints
Development endpoints were made to assist in spinning up a landing page with the appropriate digital wallet.
## Contribution
Simply fork this repo and make it your own, or create a pull request and we can build something awesome together!
## Enterprise Support
Whether you're looking to integrate a Legacy Payment Processor or Banking API, or looking for managed deployment and operation in your cloud, you can contact us at [Web Doodle](https://www.webdoodle.com.au/?ref=github-buyte) to discuss tailored solutions.
## Found this repo interesting?
Star this project ⭐️⭐️⭐️, and feel free to follow me on [Github](https://github.com/rsoury), [Twitter](https://twitter.com/@ryan_soury) or [Medium](https://rsoury.medium.com/)