A Self-hosted, High-performance Cryptocurrency Payment Gateway

Keagate (ki:geɪt) – A High-Performance Cryptocurrency Payment Gateway 

About the Project

Keagate is a self-hosted, high-performance cryptocurrency payment gateway. Payments can be administered via API for flexibility or with the built-in invoicing client (image below).

Supported currencies: Bitcoin, Ethereum, Dogecoin, Solana, Litecoin, Polygon, Dash, Ripple (coming soon), Tron (coming soon).

Invoice Preview

Purpose

  • No KYC
  • No fees, middleman, or escrow
  • Self-hosted/Private
  • Easily extensible
  • Lightweight and highly performant

Funds go directly to your wallet via a one-time address that is generated for each payment.

Installation

Keagate Youtube Preview
https://www.youtube.com/watch?v=dxMZIbeRJac

 

One-liner

The purpose of this installation script is to get Keagate up-and-running quickly in a Linux environment. The CLI will guide you in configuring, managing, and securing the instance.

bash -c "$(curl -sSL https://raw.githubusercontent.com/dilan-dio4/Keagate/main/packages/scripts/keagate.sh)"

Alternate:

curl -o keagate.sh https://raw.githubusercontent.com/dilan-dio4/Keagate/main/packages/scripts/keagate.sh
chmod +x keagate.sh
./keagate.sh

This helper script has been tested on...

  • Ubuntu 18+
  • Debian 10+
  • Amazon Linux 4.14+
  • CentOS 7.9+

...via AWS and Azure.

This script should run successfully on most flavors of Linux with some configuration. Otherwise, use the manual build, as it's fairly straightforward.

Manual Installation

Prerequisites

  • MongoDB – Install
    • Running on your machine OR remotely via a connection string
  • Web server (like Nginx or Apache2) – Install
    • Serving as a reverse proxy to localhost:8081
    • 8081 is the default port that Keagate runs on, can be changed via the PORT configuration option.
  • Node > 14 and NPM – Install
    • Use of nvm to manage Node and NPM is recommended
# +++ Don't have Node?
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install 16
nvm use 16
# ---

npm i -g pnpm
pnpm setup
pnpm -g pm2

git clone https://github.com/dilan-dio4/Keagate
cd Keagate
pnpm i
pnpm run build

# +++ Configure Keagate with:
node packages/scripts/build/configure.js
# --- OR manually (see Configuration section)

pm2 start packages/backend/build/index.js --name Keagate --time

Configuration

Keagate requires some configuration. This is done via a file called local.json in /config, next to default.json. This file will automatically be used when you start Keagate. Note that parameters in local.json will overwrite those in default.json.

There are two methods to configure Keagate, and they can be used in conjunction with each other.

CLI

Keagate has a built-in CLI to build configurations in packages/scripts. After you've cloned and built the package. Head to the root Keagate directory and execute the following:

node packages/scripts/build/configure.js

Note – this CLI is automatically launched in the one-liner installation script.

The CLI will write the config/local.json file upon completion unless one already exists. In that case, it will write to config/local2.json and ask that you manually merge your new parameters, as needed.

Custom

Create or open the file local.json in /config. You can use the provided default.json file as a reference (your local.json will override these).

The schema of the Keagate configuration can be seen (in TypeScript) at packages/common/src/config.ts.

Currencies

To configure a single currency, add an object with the key of the currency's ticker with the following attributes:

Ticker can be one of 'LTC', 'BTC', 'ETH', 'DOGE', 'SOL', 'DASH', or 'MATIC'. See example.

KeyDescriptionRequiredDefault
ADMIN_PUBLIC_KEYPublic key (address) of your admin walletYesnull (string)
ADMIN_PRIVATE_KEYPrivate key of admin wallet. Only needed if you plan on programmatically sending transactionsNonull (string)

Protected options

This section details specific configuration parameters that should be handled with extra care. A malicious actor could manipulate the integrity of payments if they had access to these parameters.

There's a built-in script to securely generate and print these values at random:

node packages/scripts/build/setupSeeds.js
# OR
ts-node packages/scripts/src/setupSeeds.ts

# Prints
{
  "INVOICE_ENC_KEY": "5036...9cc3",
  "SEED": "eb08...3afc",
  "KEAGATE_API_KEY": "9fac8f7d...c6568f97",
  "IPN_HMAC_SECRET": "e50dd645...ea5baf54"
}
KeyDescriptionRequiredDefault
SEEDSeed for transactional wallet generator. Must be a 128-bit hex string. Protect this value in productionYesnull (string)
KEAGATE_API_KEYApi key that will be required in administrative request's keagate-api-key header. Protect this value in productionNo'API-KEY' (string)
INVOICE_ENC_KEYKey that will be used to encrypt payment IDs when distributed via invoice. Protect this value in productionYesnull (string)
IPN_HMAC_SECRETKey of the HMAC signature that is set in the x-keagate-sig header of each POST request when using Instant Payment Notifications. Protect this value in productionNonull (string)

Other options

KeyDescriptionRequiredDefault
IP_WHITELISTList of IP address ["1.1.1.1" , "2.2.2.2",...] to be whitelisted for administrative requestsNo[] (string[])
TRANSACTION_TIMEOUTMilliseconds by which payments will be valid for. After that, the payment is expiredNo1200000 [20 Minutes] (number)
TRANSACTION_MIN_REFRESH_TIMEMinimum milliseconds by which transactions will idle between refreshesNo30000 [30 Seconds] (number)
TRANSACTION_SLIPPAGE_TOLERANCEPercentage of a total payment that is discounted as slippage.

Example: a TRANSACTION_SLIPPAGE_TOLERANCE of 0.02 for a 100 SOL payment will be fulfilled at 98 SOL.
No0.02 (number)
BLOCKBOOK_RETRY_DELAYMilliseconds to wait before re-trying a failed Blockbook request.No5000 (number)
MONGO_CONNECTION_STRINGConnection string for MongoDB instance including any authentication.No'mongodb://localhost:27017' (string)
MONGO_KEAGATE_DBMongo database to use for storing/managing paymentsNo'keagate' (string)
IS_DEVFor development only. Turn on testnets for given currencies and activate development featuresNofalse (boolean)
HOSTYour domain or IP that Keagate is running on. This is used for aesthetics and has no functional effect on KeagateNonull (string)
PORTThe port that Keagate's backend API will run onNo8081 (number)

Example

Your config/local.json could look something like:

{
  "LTC": {
    "ADMIN_PUBLIC_KEY": "MY_WALLET_ADDRESS",
    "ADMIN_PRIVATE_KEY": "MY_PRIVATE_KEY"
  },

  "KEAGATE_API_KEY": "abcd123",
  "IP_WHITELIST": ["1.1.1.1","2.2.2.2"]
  // ...
}

Payment Lifecycle

API Method

The workflow for creating & confirming payments in the API-driven method is as follows:

Invoke the createPayment route. Pass the following parameters in the JSON body:

Notify your customer to send the amount to the publicKey returned from createPayment.

  • Optional Display other metadata as well, for a streamlined user experience. Use the screenshot above as a reference.

Wait for your customer to send the payment.

  • Optional Invoke the getInvoiceStatus route on a timer from the customer's device to provide real-time updates. Note: this route doesn't return any sensitive information.

Confirm and process the payment in your IPN route after receiving a CONFIRMED status of a payment of the same id or extraId.

Invoice Client Method

The workflow for creating & confirming payments with the built-in invoice client is as follows:

Invoke the createPayment route. Pass the following parameters in the JSON body:

Direct users to the URL route provided in the invoiceUrl attribute returned from createPayment.

  • Note: this is not a full URL, just a path. It should be appended to the URL of your Keagate server.

Confirm and process the payment with either method:

  • If you set ipnCallbackUrl, with your IPN route after receiving a CONFIRMED status of a payment of the same id or extraId.
  • If you set invoiceCallbackUrl, with the Invoice Client Callback Url page that customers are directed to after the invoice client observes a finished payment.

Invoice Client Callback Url

Two query parameters are appended to this URL when customers are directed to it from the invoice client:

  • invoice_id – The encrypted id of the payment (as seen in the invoiceUrl attribute of createPayment).
  • status – The [assumed] status of the payment: "CONFIRMED", "FAILED", "EXPIRED", etc. This is just to help you visually notify the customer in your site, but cannot be trusted (see below).

You must still confirm the payment server-side. This is because a malicious customer could just manually go to this route and set the status to CONFIRMED. On your backend, use getPaymentStatus to actually validate the status.

Note: you can send either a true database id or invoice_id [which are just encrypted database ids] to getPaymentStatus. Keagate can figure out which id it is based on the input length.

Once you've validated the payment status via a server-side request from the invoiceCallbackUrl page, you can confirm and process the payment as normal.

Instant Payment Notifications

To be notified of payment updates in real-time, use instant payment notifications (IPN).

Use IPNs

  1. Make sure you have configured the IPN_HMAC_SECRET attribute in Configuration. This will allow you to guarantee the origin and trust in the integrity of incoming messages.
  2. Have access to some API or serverless function that can be invoked publicly via URL.
  3. Pass this URL into the ipnCallbackUrl attribute of your createPayment requests.

Just like that, IPNs are all set up on Keagate. A POST request will be sent to the ipnCallbackUrl with a JSON object like that of TypeForRequest.

Before using these notifications, the last thing to do is validate all incoming messages via HMAC.

Validate IPN Messages

The previously configured IPN_HMAC_SECRET is used as a key in the sha-512 HMAC signature generated for the x-keagate-sig header of each notification.

Note: be sure to sort the request body alphabetically before generating your HMAC.

Here's a NodeJS example of validating this header in Express.

var crypto = require('crypto')
var express = require('express')

const app = express()
app.use(express.json())

app.post('/ipnCallback', (req, res) => {
  // +++ Generate my signature
  const hmac = crypto.createHmac('sha512', IPN_HMAC_SECRET)
  hmac.update(JSON.stringify(req.body, Object.keys(req.body).sort()))
  const signature = hmac.digest('hex')
  // ---

  if (signature === req.headers['x-keagate-sig']) {
    // Good to go!
    const id = req.body.id
    // ...
  } else {
    // This notification may be spoofed...
  }
});

Development

Development experience and extensibility are the utmost priority of this package.

To get started:

  1. Clone this repo.
  2. Install pnpm globally with npm i -g pnpm
  3. cd Keagate && pnpm i
  4. Add a MongoDB connection to the MONGO_CONNECTION_STRING attribute in config/local.json, along with some admin wallet credentials and the other required configuration parameters. For development, the Mongo Atlas free tier works great.
  5. pnpm run dev to start the invoice client and backend.
    • Any changes in packages/invoice-client/src will be automatically reflected on refresh.
    • Any changes to the source of packages/backend/src will be reflected automatically via ts-node-dev.
    • Any changes to config/local.json have to be manually refreshed.

The backend will run at 127.0.0.1:8081. You can see your Swagger API docs at http://127.0.0.1/docs. Also, a test IPN callback server will run at 127.0.0.1:8082/ipnCallback and a test invoice client redirect static site will be available at http://127.0.0.1/dev-callback-site.

Adding an API Route

Keagate follows the Fastify plugin pattern. Place your route in packages/backend/src/routes. The default export of the file should be a function that takes a Fastify instance as a parameter. In that function, add your route to the provided Fastify instance. **Be sure to add a schema to your route via the RouteShorthandOptions type exported from Fastify. Schemas should be built with TypeBox.

The schemas will appear in your Swagger docs for a unified developer experience.

Finally, in packages/backend/src/index.ts, register your new route like so:

import createPaymentStatusRoute from './routes/paymentStatus';
import createPaymentsByExtraIdRoute from './routes/paymentsByExtraId';
import create_YOUR_FUNCTIONALITY_Route from './routes/YOUR_FUNCTIONALITY'; // <--

// ...

server.register(createPaymentStatusRoute);
server.register(createPaymentsByExtraIdRoute);
server.register(create_YOUR_FUNCTIONALITY_Route); // <--

Use packages/backend/src/routes/activePayments.ts as a reference of an authenticated route.

Use packages/backend/src/routes/invoiceStatus.ts as a reference of an unauthenticated route.

Customizing the Invoice Interface

The invoice client is a statically built React package (via Vite). This static build is served in backend. This functionality can be seen here.

Editing the react package will automatically build to packages/invoice-client/dist, so just refresh the page to see any changes.

The source of invoice-client's React project is pretty straightforward, so those familiar with React (& TailwindCSS) should have an easy time making their desired alterations.


Author: dilan-dio4
Source code: https://github.com/dilan-dio4/Keagate
License: View license
#react #typescript

What is GEEK

Buddha Community

A Self-hosted, High-performance Cryptocurrency Payment Gateway

Ahmad Younis

1660943151

great

Stripe Payment Gateway Integration Example In Laravel 8

In this post i will share you stripe payment gateway integration example in laravel 8, stripe payment gateway is integrated in many website for payment collection from client, In this time many e-commerce website and other shopping websites are use stripe payment gateway.

So, here we will learn stripe payment gateway integration in laravel 8.

Read More : Stripe Payment Gateway Integration Example In Laravel 8

https://websolutionstuff.com/post/stripe-payment-gateway-integration-example-in-laravel-8


Read Also : How To Integrate Paypal Payment Gateway In Laravel

https://websolutionstuff.com/post/how-to-integrate-paypal-payment-gateway-in-laravel

#stripe payment gateway integration example in laravel 8 #laravel 8 stripe payment gateway integration example #stripe payment gateway integration in laravel 8 #stripe payment gateway #laravel8 #payment gateway

Einar  Hintz

Einar Hintz

1602564925

Razorpay Payment Gateway Integration in ASP.NET MVC

In this article, you will learn Razorpay Payment Gateway Integration in ASP.NET MVC web application or an eCommerce website using C#. With Razorpay, you have access to all payment modes, including credit and debit cards, UPI, and popular mobile wallets.

To check the Razorpay Payment Gateway demo, please click here:

How to integrate Razorpay Payment Gateway in ASP.NET

The Razorpay Payment Gateway enables you to accept payments via debit card, credit card, net banking (supports 3D Secure), UPI, or through any of our supported wallets. Refer to the Payment Methods section for a list of payment methods we support.

Find the below steps to integrate Razorpay in your website:-

#asp.net #how to #mvc #razorpay payment gateway #razorpay payment gateway demo #razorpay payment gateway documentation #razorpay payment gateway integration #razorpay payment gateway integration in asp.net c#

Linda John

Linda John

1613390985

Crypto Payment Gateway Services assist in the smooth execution of Transactions

As business firms keep expanding their operations, the need for a payment gateway increases with every passing day. It offers a mechanism for accepting transactions made in any Cryptocurrency by the users.

A Crypto payment gateway is highly secure, prevents the chances of chargeback frauds, can be used for processing peer to peer transactions, and is completely immutable.

Using cryptocurrencies is beneficial as it can be exchanged 24x7, eliminates the role of third parties, low transaction fees when compared to debit and credit cards, and eliminates the chance of fraud.

The Typical Features of a Cryptocurrency Payment Gateway are

  • Support for the major cryptos, fiat currencies, and stablecoins.
  • Safety measures like two-factor authentication, jail login, cross-site request forgery protection, and server-side request forgery protection.
  • 24x7 technical support is provided in numerous languages.
  • Has plugins integrated with e-commerce platforms.
  • Free deposits and withdrawals of cryptos by the users.
  • Access to transaction history for the users that helps in real-time monitoring of their payments.
  • An integrated referral program or an affiliate program where rewards can be earned by existing users for referring new users to the crypto payment gateway.
  • Cold storage facilities where funds of the users can be backed up securely. An offline vault is also available for safeguarding digital assets.
  • Compliance with the regulations of GAP600 that guarantees the instant execution of transactions made in Cryptocurrencies.
  • Integration with POS (Point of Sale) systems where payments can be made in cryptos for purchasing goods and services.

The Process that users have to implement while using a Cryptocurrency Payment Gateway

  • The user has to send information about the amount of cryptos that he is willing to pay.
  • The status of the transaction will display on the screen and he has to press the confirm option.
  • The payment will be confirmed after a few seconds.
  • The user can see the details of the transaction executed like the amount, time, and the party to whom the payment has been made.
  • His account balance will be updated immediately.
    In this digital era, obtaining Crypto payment gateway services is highly necessary and inevitable.

#crypto payment gateway services #crypto payment gateway #payment gateway services #cryptocurrency payment gateway

Akshara Singh

Akshara Singh

1623406706

An Easy Guide for Cryptocurrency Payment Gateway Development

In the past decade, the technology world has expanded more than 100 percent. Yes, it’s true. Before this decade fiat [Paper or Coin] currencies are the one & only money. After the technology evolved the digital payment methods have been introduced. But payment methods also have some difficulties like It’s not possible for borderless transactions & security risks, the chance of fraud practices & many more. These flaws were overcome by the introduction of cryptocurrencies. All we know is that cryptocurrency is one of the popular e-currencies or digital assets. In recent days, people (Traders) are interested in crypto trading. Some of the traders do short & long-term investments. And, nowadays many people are using cryptocurrency for their daily usage like fiat money. Not to mention the industries like travel, clothing, food, adopted cryptocurrency payments to cover the worldwide audiences.

What is Cryptocurrency Payment Gateway???

Crypto Payment Gateways are similar to fiat payment gateways, which help the clients/customers to pay, receive and transfer crypto to another user using multiple cryptos (safe, secure) anywhere in the world. The unique feature of the crypto payment gateway is transparency. Payment via this payment gateway is easy, ensures privacy, and provides optimal security.

Benefits of Cryptocurrency Payment Gateway:

  • Highly Secured Transaction.
  • No chances for fraudulent activities.
  • Low processing or transaction fees, when compared to other well-known alternatives like credit cards and debit cards.
  • No third-party intervention.
  • Funds can be transferred across borders instantly & many more.

How to Earn Money from Crypto Payment Gateway???

Almost 69.96 million people are active crypto users around the world”. And now some countries have legalized cryptocurrency. So, many people are buying/selling products using cryptos [instead of using fiat]. The user/merchant sends or receives the cryptos using the crypto payment gateways.

One of the most famous & popular crypto payment gateways is “BitPay”. The BitPay generate their revenue in 4 ways

  • Network cost
  • Processing fee
  • Featured Ads
  • Google Adsense

These are the ways crypto payment gateways like bitpay generate their revenues.

How to Start/Develop a Cryptocurrency Payment Gateway???

There are 2 possible ways to develop your crypto payment gateways,

  • Develop from Scratch
  • Get a Clone script/software from the trusted script provider & start your Cryptocurrency Payment Gateway instantly.

In these ways, the 2nd way is the easiest & safest way to launch a cryptocurrency payment gateway. But choosing the cryptocurrency payment gateway software/script is a more important one because many scripts/software are available in the current market. One of the most popular & famous clone scripts for developing a crypto payment gateway is “Bitpay Clone Script”. Bitpay clone script is one of the secured & best-featured crypto payment gateways software.

Features of Bitpay Clone Script:

  • Two-factor authentication
  • Multi-language support
  • Multi-cryptocurrency support
  • Quick transactions
  • Secure payment
  • Transaction history
  • Robust admin panel
  • Peer to peer transactions
  • Global access
  • Data analytics
  • Integrating high-end security
  • Seamless conversion
  • Integration of Multiple cryptocurrency wallets

Who offers the Best & Secured Bitpay Clone Script???

It is very important because many cryptocurrency payment gateway software providers are in the crypto market. So, picking the best cryptocurrency payment gateway software provider is a really tough job. Don’t worry; I will help you. I’ve done some technical research to identify & find the best cryptocurrency payment gateway software provider, as a result, one script/software provider (Coinsclone) cleared all my technical & non-technical hurdles. Coinsclone is one of the professional crypto exchange clone script providers. Their software/script is 100% secured & bug-free because their primary motto is client stratification. So that they have clients from all over the world. Till now, they have successfully delivered 100+ crypto projects (Crypto exchange, Wallets & Payment gateway) for their clients.

Are you interested in shaking hands with them??? Talk with their team of business experts directly via,

Whatsapp/Telegram: +919500575285

Mail: hello@coinsclone.com

Skype: live:hello_20214

If you’re interested, check out their free live demo >>> Bitpay Clone Script

#bitpay clone script #launch a crypto payment gateway #build a cryptocurrency payment gateway #cryptocurrency payment gateway development

Linda John

Linda John

1606990395

Cryptocurrency Payment Gateway Development Service Provider

White-label Cryptocurrency payment gateway enables 24x7 transfer of digital assets.
The various services included are creating payment processors, building multi-currency wallets, integration with the leading shopping carts and e-commerce platforms, seamless merchant account management, payment dispute management, and ticketing. It also possesses benefits like scalability, data protection, top-notch security, fraud prevention, simple integration through APIs, zero chargebacks, faster settlements, and the creation of progressive and future-ready payment infrastructure.

It has some fantastic features like it provides acceptance of multiple payment methods, a powerful dashboard, developer-friendly APIs, native OTP, real-time data analytics, lightning-fast currency conversion, and well-documented SDKs. The white-label solution comprises a hot wallet, a dedicated OTC desk, support for fiat on and off-ramps, broker facilities, and an organized reporting system.

The cryptocurrency payment gateway can be used by digital wallets, banks, card associations, businesses, merchants, and cryptocurrency exchanges with ease. Various platforms like Android, iOS, Desktop can use it efficiently. Payments can be collected via SMS, email, and chatbots with the use of Whitelabel Cryptocurrency payment gateways.

#cryptocurrency payment gateway development #crypto #cryptocurrency payment gateway #cryptocurrency