You can now sell redirect urls!
This means, when a customer makes a purchase, instead of taking them to a Flurly download page, you can automatically redirect them to your website for product fufillment. Take a look and give it a try by creating a new product in your flurly dashboard.
This is a great product option for service work. Many flurly users sell their services (custom illustration, calligraphy, etc) and set their redirect URL to a custom form - google forms, typeform, notion, etc - to collect fufillment information.
Is there a way I can verify a purchase?
Yes. Flurly attached a unique "payment_id" url parameter for each purchase. You can verify that the payment_id is valid and paid by sending a GET request to the following API URL: https://flurly.com/api/payment/{product_url}/{payment_id}.
As an example let's say you had a redirect url https://mywebsite.com/fufillment for some product https://flurly.com/p/my_product
We can add a unique identifier called a "nonce" to the url to uniquely identify a particular checkout session. This is useful if you have already collected information prior. So in this case you could append a ?nonce=YOUR_UNIQUE_ID to the url
https://flurly.com/p/my_product?nonce=YOUR_UNIQUE_ID
If you want to expedite the flow even more. You can use a direct checkout link (notice the /c/ instead of the /p/), eg.
https://flurly.com/c/my_product?nonce=YOUR_UNIQUE_ID
After someone purchases your product they'll be redirected to a url that may look like this https://mywebsite.com/fufillment?payment_id=abcdefg
To verify the purchase you'd want some code that looks as follows:
fetch('https://flurly.com/api/payment/my_product/abcdefg')
.then(r => r.json())
.then(r => {
if (r.payment_status === "paid") {
give_customer_product(r.customer_name, r.customer_email);
} else {
throw_not_paid_error();
}
})
An example API response might look as follows:
{
"payment_status": "paid",
"product_url": "example_product",
"customer_email": "example_seller@gmail.com",
"customer_phone": "+15554443333",
"customer_name": "Jon Doe",
"nonce": "123"
}