Redirect URL Payments Guide
The Redirect URL payment flow is the easiest payment process to implement for resellers. Resellers do not have to setup native paid domain flows, using Stripe or Coinbase, and can instead just generate a URL to redirect payments to Unstoppable Domains to be processed.
Basically, in this case, the reseller acts like an "affiliate". Resellers redirect their users to the UD website where users can purchase domains and the reseller receives a commission (% of the sale).
Pre-requisites
These following items are necessary to complete this Reseller payment integration:
- A shared secret between Unstoppable Domains and the reseller (provided by Unstoppable Domains)
- strictName (provided by Unstoppable Domains)
Step 1: Auto-configure the User’s Paid Domains
A common friction for users brought in by a reseller is having to configure crypto addresses to a domain post-minting which the reseller already knows about. If a user could be given the option to auto-configure their crypto records during the minting step then that would greatly improve their overall experience.
This example shows what information to add to the URL so that a user can be given the option to prefill crypto records during the minting step. Here’s how a valid URL could end up looking:
https://unstoppabledomains.com/search?searchTerm=buyadomain.crypto×tamp=1641586875148&strictName=foo&records=%7B%22crypto.ETH.address%22%3A%220xfa4E1b1095164BcDCA057671E1867369E5F51B92%22%2C%22crypto.BTC.address%22%3A%22bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh%22%2C%22crypto.USDT.version.ERC20.address%22%3A%220xfa4E1b1095164BcDCA057671E1867369E5F51B92%22%2C%22crypto.DAI.address%22%3A%220xfa4E1b1095164BcDCA057671E1867369E5F51B92%22%2C%22crypto.EOS.address%22%3A%22playuplandme%22%7D&signature=7038743d813122a9c13c233a24d273535085b67d9a92db5c86669f45ec14b5f2
Step 2: Setup Query Parameters
Resellers can use as many query parameters as is necessary (e.g., specifying the search term when taking a user to the search page /search?searchTerm=buyadomain.crypto
), but in order to prefill crypto records for a user there are a few required query parameters that must be used.
records (required)
The records parameter should contain URL encoded and minified JSON with domains records to prefill during the minting step according to the Records Reference standard.
JSON Records Example
{"crypto.ETH.address":"0xfa4E1b1095164BcDCA057671E1867369E5F51B92","crypto.BTC.address":"bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh","crypto.USDT.version.ERC20.adress":"0xfa4E1b1095164BcDCA057671E1867369E5F51B92","crypto.DAI.address":"0xfa4E1b1095164BcDCA057671E1867369E5F51B92","crypto.EOS.address":"playuplandme"}
JSON Records Example URL Encoded
%7B%22crypto.ETH.address%22%3A%220xfa4E1b1095164BcDCA057671E1867369E5F51B92%22%2C%22crypto.BTC.address%22%3A%22bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh%22%2C%22crypto.USDT.version.ERC20.adress%22%3A%220xfa4E1b1095164BcDCA057671E1867369E5F51B92%22%2C%22crypto.DAI.address%22%3A%220xfa4E1b1095164BcDCA057671E1867369E5F51B92%22%2C%22crypto.EOS.address%22%3A%22playuplandme%22%7D
strictName (required)
The reseller strictName
is provided by Unstoppable Domains. This parameter may be different than resellerID
found in the reseller dashboard.
timestamp (required)
A number representing the milliseconds elapsed since the UNIX epoch. There is an 8 hours window from the time the signature was generated before UD considers the signature invalid.
Example in JavaScript: Date.now()
Note
UD is considering making this field optional in the near future. Please share your feedback on our Discord channel.
signature (required)
The signature is generated by the reseller and is used by Unstoppable Domains to verify both the data integrity and authenticity of the message. The signature should be generated via the HMAC-SHA256 algorithm. This authorization is necessary to help prevent attacks that may substitute insecure URL parameters.
attention
In JavaScript, HMAC signatures can be created using the crypto-js library. Similar cryptography libraries can be used for other languages.
The message object to sign is:
{
strictName,
timestamp,
records
}
To ensure consistency, the message object should be sorted recursively by its keys before generating the HMAC hash. In Javascript, you can use a library like deep-sort-object.
warning
A shared secret between Unstoppable Domains and the reseller will be required to generate the signature. It will be provided by Unstoppable Domains.
Step 3: Test the Integration
You can use Unstoppable Domains’ staging environment to test the redirect URI payments integration.
- Navigate to the staging environment with the paid domains flow query parameters appended to the URL.
-
Purchase a domain. You can use
4242 4242 4242 4242
as the credit card number to checkout for free. - Proceed to mint the domain. If you are asked to verify records to prefill when minting the domain, then the redirect URI integration is working successfully.
Congratulations!
You just configured your Reseller account to process payments using a Redirect URL.