Token Gated Payments

Much like a token discounted payment, a token gated payment will cause the transaction to fail if the 'buyer' does not have an NFT from the specified collection or list.

How it Works

  1. Developer specifies an NFT collection or an SPL mint address for an SFT as the verification target. mtnAPI uses the index API to query all the NFTs and SFTs in the user's wallet.

  2. mtnAPI verifies whether an NFT belongs to a collection or an SFT belongs to a specific SPL token address.

  3. If mtnAPI validates the above, there is a program with instruction included in the transaction that verifies NFT or SFT collection on-chain to provide a trusted solution.

  4. If verification returns true, the purchase amount will be allowed to proceed (if they have the tokens). Id the verification is false, the transaction will fail.

Make sure you are following the rules of the API!

Example (Mint Gated Payment)

import requests #make HTTP requests
import urllib.parse #encode the URL

#get a reference key
ref_url = 'http://api.mtnapi.com/ref'
r = requests.get(url = ref_url)
ref = r.json()['ref']

wallet='Ar7XrWtrGsB2xCnrTFLs9HyJ1bA62gXCAUZa8Fa7VMc5' #receiver
account = 'DaNDvvjZ3gdhjxeA3jKLGPTF7kNU8HupKKEgVTuHQwLi' #payer 
mint = 'DaNDvvjZ3gdhjxeA3jKLGPTF7kNU8HupKKEgVTuHQwLi'
payerToken = 'usdc'
gated = 'TRUE'
size = 1

#base URL
api_url = 'http://api.mtnapi.com/pay'
#query string parameters
params = {'wallet': wallet, 'size' : size, 'payerToken' : payerToken, 'gated' : gated, 'mint' : mint  , 'ref' : ref}
#request body
data = {'account': account}
#make the POST request
r = requests.post(url = api_url, params=params, json=data)

#encode the url
encoded_url = urllib.parse.quote(r.url)  
#append solana
solana_pay_url = 'solana:' + encoded_url

print(solana_pay_url)

Last updated