27 Comments
User's avatar
Sakshi's avatar

Useful!

Expand full comment
Raul Junco's avatar

Thanks!

Expand full comment
Leonardo Momente's avatar

Thanks!

Expand full comment
Raul Junco's avatar

👊

Expand full comment
Dr. Ashish Bamania's avatar

Very useful. Thanks for this!

Expand full comment
Raul Junco's avatar

Glad to help. Thanks for reading!

Expand full comment
Rafa Páez's avatar

Great article. Nicely illustrated! Thank you, Raúl.

Expand full comment
Raul Junco's avatar

Thanks, Rafa!

Expand full comment
jayamoorthi parasuraman's avatar

It's useful info,

Expand full comment
Raul Junco's avatar

Glad to help. Thanks!

Expand full comment
Romain Ottonelli Dabadie's avatar

I use to combined retry and DLQ, I appreciate your show up when retry or not retry. Seems obvious but worth to noticed!

Expand full comment
Raul Junco's avatar

Retry and DLQ are a good combo for so many cases that they are hard to ignore.

Thanks, Romain.

Expand full comment
Heru Hermawan's avatar

Great article with underrated topic, Raul!

Expand full comment
Raul Junco's avatar

Thanks, Heru!

Expand full comment
Neo Kim's avatar

fantastic article, thanks a lot, Raul

Expand full comment
Raul Junco's avatar

Thanks, Neo!

Expand full comment
Ashish Pratap Singh's avatar

Enjoyed reading it. Great article Raul!

Also, thanks for the mention.

Expand full comment
Raul Junco's avatar

Glad you liked it, Ashish.

Thanks!

Expand full comment
Daniel Moka's avatar

An excellent breakdown about and underrated topic.

And thanks for the mention my friend.

Expand full comment
Raul Junco's avatar

Keep those articles coming, my friend.

Thanks!

Expand full comment
Ved Asole's avatar

When is the 2nd part going to be released?

Expand full comment
malik's avatar

thank you for the article ,

For stripe payment , they usually retry for insufficient funds in subscriptions

Expand full comment
Alfred Rowe's avatar

Great article, takes me back to many years ago. I’d like to contribute a perspective on handling retry mechanisms, particularly in the context of network timeouts. Based on my experience, network timeouts can escalate into critical issues, especially when interfacing with unreliable payment providers. There are numerous factors that contribute to network timeouts, and to mitigate risks such as financial loss or double-charging, the most secure approach is to leave transactions in a pending state rather than attempting retries. Final reconciliation can then be performed once the transaction status is confirmed, either implicitly or explicitly, by the provider. This reconciliation process is often scheduled at the end of the day or through periodic checks between involved parties.

A common issue arises when the payment provider receives the request but experiences delays due to inefficient processing or mismatched timeout configurations. In such cases, the requesting system may prematurely terminate the connection, assuming a failure, even though the transaction has already been committed and is likely to be processed successfully on the provider’s end. This underscores the importance of aligning timeout settings and implementing robust reconciliation mechanisms to ensure transactional integrity.

Expand full comment
Petar Ivanov's avatar

Working with payments is crucial. This was one of the reasons I joined such a company last year.

Great article, Raul!

Expand full comment
Saurabh Dashora's avatar

Excellent explanation Raul.

I really liked the point about identifying transient errors vs permanent failures. An intelligent payment system should know when to stop.

Thanks for the mention as well!

Expand full comment
dev challenge hub's avatar

Hi, thank you for sharing very interesting topic, but I disagree with the method of CodeCrafters of recreate something that already exist. For me Is Better tò have a timed coding contest with real world project in order to improve and learn new skills.

Expand full comment
Raul Junco's avatar

It's all good; everybody learns in different ways.

The idea of reconstructing these projects is to understand how they were built, the scale of the problems they solved, and the trade-offs they made.

Expand full comment