Reflow - Testing order and digital delivery considerations

Until now, I’m playing with Reflow, but didn’t build a real store with it for now. Soon, I’ll have to build one and I have to decide if Reflow is ready for my goal or not… So, I have to proceed with some testing and here are my current questions related to this:

  1. I quickly built a dummy Reflow based shop against a Stripe account (one created through the Reflow process), but I don’t know how to place a test order (to see received emails and overall process). I tried with the testing data according to the Stripe doc there: Testing | Stripe Documentation, but it tells me my order is in live mode while I submitted a test card. And switching to “Test mode” in the Stripe account doesn’t change anything (maybe because there is no visible product in the Stripe account, all is made on fly between Reflow and Stripe during an order from cart). Well, so, my question is: how to submit a test order?

  1. I well understood from other thread in this forum that you’re working on the possibility to sell then download digital products through Reflow, but in my case, I need to be able to do that right now (don’t misinterpret what I’m saying here, it’s not a way to urge you, its my personal reality – people in front are not aware of our headaches) with or without Reflow ; of course, I would prefer with since going to another solution would break the tight integration with BSS… Well, so, I know how to provide a download link, even a personal one (after double opt-in signup before reaching the possibility to order for example), I know how to on-fly watermark the downloaded ebooks, etc. but for this, I have to have a hint about the ordered products afterward; I mean on return after a successful order. Currently, we indicate a success page in the Reflow account, but this is a general page without the possibility to provide a link there without knowing what was in the cart. Maybe I could indicate the URL of a CGI or any other server script as success page, but it would have sens if Reflow is able to pass it the product references during the GET and/or POST request (or even through cookie). I already do this for other websites of mine (I mean for me and/or my customers – some being partners) since I worked these last two years on a kind of “framework” for self-hosted sale funnels in C++ (work in progress, the task is large), but the key difference is that in these funnels I’m selling products one by one and, by the way, I just indicated a specific success URL for each product. So, in brief (he said LOL), do you have a trick to catch the list of ordered product after purchase? Preferably something easier than parsing the email or status page, of course (sic!).

  2. And last, short question (I think of your nerves;): is there a way to customize the email sent to the customer after purchase? If only to translate it (if not usable to provide a link for download(s)).

Nice day everyone :sparkles:

EDIT: Regarding question #1, I see in the Stripe account (login directly to Stripe, not going through the Reflow settings interface), that there’re both live and test API keys. So, it should work in test mode if you could provide a way to populate the cart form calling Stripe Checkout with the public test key instead of the live one.

You should be able to do this using something like curl/httpie and the test API instead of the live API.

Thanks, good idea for #1, @NJenkins! Of course, ideally, I would like to do my testing in real environment (through the real website) since the final goal is to manage delivery too and see the overall flow through Reflow in action…

In the meantime, about #2, I read a little the Stripe doc (to be continued), then I placed a webhook on the checkout.session.completed event towards an endpoint on my side (in a Python Flask app). Now, I have to see what data Stripe sends and how to benefit of those… Later ^^

Thank you for the questions/suggestions!

At the moment Reflow doesn’t support Stripe’s test mode. The issue is that in order to support test payments, they need to be integrated with the entire reflow codebase, down to the backend. This is a large undertaking that will take time away from other features. For now you can either do real purchases and refund them (stripe doesn’t refund the fees though), or create coupon codes and use them with your checkout so that you circumvent the payment step.

After we release Digital Product support, we will have some sort of webhook system which will notify your backend of orders and products. Right now there is no secure way to do this.

Alas it is not possible, but I am adding it to our todo.

In summary, I think it will be a few months before you can achieve what you need with Reflow, but we’re getting there.


thanks for your hard work, we really are grateful

Thanks for your detailed answers!

About #1: OK, it’s manageable through a way or another, even if not as comfortable as the Stripe’s test mode.

About #2: Currently, the main stop seems to be that there’s no product at Stripe side, they are all stored in the Reflow account, then Reflow produces a custom order on fly when necessary. Then, even with my hook’s endpoint, I don’t see how I could figure out the ordered products (unless managing a kind of hack like doing that any prices combination will be unique to be able to figure out the concerned products ; like a kind of bitwise computation). Well, too weak! So, I think I could work around the current limitation managing a membership area with sign-up/sign-in before any order. This way, I could store any pending order in a kind of queue or database, then generate the product link(s) afterward if it’s successful or delete the order-related info if it failed… But it’s a lot of wrapping around Reflow/Stripe and I’m not sure I’ll be able to achieve this in a snap (I mean in some days)…

About #3: Ouch! Maybe this is the real stop! Of course, if I manage this membership area as stated above, it would be easy to add my own email in French towards the buyer (even if receiving two emails, one in English and one in French would be weird), but in this case, the benefit of Reflow decreases greatly; It would come down to a basket and easy UI design because of BSS.

Well, I’m not here to complain and consider my talkative message as a way to give you some hints of what would make your users like me happy :v: :wink:

Just a last question: do you have a deadline in your roadmap about these three points (mainly #2 and #3)?

My previous question above remains valid, of course, but I think I have a chance to succeed :crossed_fingers: solving the #2 and #3; awaiting a more solid solution from Reflow itself, I mean.

Here is the way (it could help someone else):

  1. I created a dedicated mailbox on my server, then indicated it as Notification address in Reflow.
  2. I created a web hook on checkout.session.completed in Stripe.
  3. The endpoint is a Python Flask app in my Web account.
  4. The responding route check the epoch timestamp and amount in the Stripe payload, then it fetches the last email messages through IMAP, looking for the one matching these information.
  5. At this point, I have the concerned products (listed in the email) and buyer info (in Stripe data), and I can build a new email w/ the right download links and a translated text for my customer.

Well, I’ll know if there’s an hidden stop soon and for sure, there are weak points, but it could allow to deal with digital products awaiting a better day. Also, I could manage to scrape the order at Reflow HQ, since there’s a link in the notification email, but I’ll see if it’s necessary (it requires login in the middle through headless automation – not light).

Hoping it will help someone in the same case as mine, and avoid to switch to another (heavier) way…

EDIT: Just an added note. In case the email doesn’t arrive before the hook request, I’ll add a delay, treating all of this in an asynchronous way (to be able to respond as quickly as possible to Stripe).