Media is too big
VIEW IN TELEGRAM
⏳ Day 8/60 Building SafePay
What happens when a customer changes their mind before the money moves?
Today SafePay got an emergency brake. I built a dedicated cancel API endpoint that allows merchants to safely halt pending payments. I also added a lightweight verify endpoint so merchants can check a payment's status without fetching the full heavy payload.
X post
#60Days #Consistency
What happens when a customer changes their mind before the money moves?
Today SafePay got an emergency brake. I built a dedicated cancel API endpoint that allows merchants to safely halt pending payments. I also added a lightweight verify endpoint so merchants can check a payment's status without fetching the full heavy payload.
X post
#60Days #Consistency
🔥2👍1
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
⏳ Day 9/60 Building SafePay
What if someone copies a real webhook and sends it again later?
Today I upgraded SafePay's webhooks. Every event now has a unique ID, so a merchant can ignore duplicates caused by retries, and a clear type such as payment.succeeded or payment.cancelled.
The signature now covers the timestamp too, so an old copy is rejected as a replay, and a changed body fails the check. The event ID stays the same on every retry, while the timestamp is fresh on each attempt.
X post
Next: list and retrieve payments.
#60Days #Consistency
What if someone copies a real webhook and sends it again later?
Today I upgraded SafePay's webhooks. Every event now has a unique ID, so a merchant can ignore duplicates caused by retries, and a clear type such as payment.succeeded or payment.cancelled.
The signature now covers the timestamp too, so an old copy is rejected as a replay, and a changed body fails the check. The event ID stays the same on every retry, while the timestamp is fresh on each attempt.
X post
Next: list and retrieve payments.
#60Days #Consistency
❤4
Forwarded from ScholarXIV
Happy to announce ScholarXIV is accepted into the Claude Startup program where our team gets $1,000 in API credits and $625 of subscription credits.
#Claude
@ScholarXIV
#Claude
@ScholarXIV
👏4
Forwarded from Robi makes stuff (Robi)
Welp, here it is . Moat or bloat
Effectively a very harsh standard for grading the "Introducing X" posts we see in "the telegram community"
under review means not enough data, moat means peak ( only 2 projects so far ) float means alright but needs work and bloat means needs work.
Dont be mad at me demo 😂 its also roasting me
https://mob.robi.work/
Effectively a very harsh standard for grading the "Introducing X" posts we see in "the telegram community"
under review means not enough data, moat means peak ( only 2 projects so far ) float means alright but needs work and bloat means needs work.
Dont be mad at me demo 😂 its also roasting me
https://mob.robi.work/
❤1😁1
This media is not supported in your browser
VIEW IN TELEGRAM
⏳ Day 10/60 Building SafePay
A long, good day: half research, half code.
I studied 4 Ethiopian payment gateways (Chapa, ArifPay, SantimPay, AddisPay) and found they differ on test access, cancelling, webhook security, and status names. So I built a universal adapter framework that lets SafePay plug into any of them, and moved the provider's own details (reference IDs, raw status) into new database fields.
I also added a verify-before-trust rule: a webhook never decides a payment's status, SafePay asks the provider to confirm first. To test it without real money, I built an in-memory fake provider, and the automated tests pass.
X post
Next: connecting Chapa in test mode.
#60Days #Consistency
A long, good day: half research, half code.
I studied 4 Ethiopian payment gateways (Chapa, ArifPay, SantimPay, AddisPay) and found they differ on test access, cancelling, webhook security, and status names. So I built a universal adapter framework that lets SafePay plug into any of them, and moved the provider's own details (reference IDs, raw status) into new database fields.
I also added a verify-before-trust rule: a webhook never decides a payment's status, SafePay asks the provider to confirm first. To test it without real money, I built an in-memory fake provider, and the automated tests pass.
X post
Next: connecting Chapa in test mode.
#60Days #Consistency
❤6🔥3
Forwarded from liora (kalkidan .)
LinkedIn
Specialist - ERP Development (Internal/External) | Suraphel Beyene
🚀 We're hiring: ERP Developers at Safaricom Ethiopia
Our IT Delivery team in Addis Ababa is growing, and we're looking for ERP Developers who enjoy turning complex business processes into reliable, scalable systems.
What you'll do:
• Develop, customize…
Our IT Delivery team in Addis Ababa is growing, and we're looking for ERP Developers who enjoy turning complex business processes into reliable, scalable systems.
What you'll do:
• Develop, customize…
Forwarded from Atomic izzy
I built Fayda MCP, a Python library for connecting AI agents to Fayda eSignet identity verification.
• Start verification and track its status.
• Retrieve identity and age-check results.
pip install fayda-mcp
GitHub: https://github.com/izzy-Ti/fayda-mcp
If you find it useful, give the repo a star!⭐️
*Still in development
@Atomic_izzy
• Start verification and track its status.
• Retrieve identity and age-check results.
pip install fayda-mcp
GitHub: https://github.com/izzy-Ti/fayda-mcp
If you find it useful, give the repo a star!⭐️
*Still in development
@Atomic_izzy
Media is too big
VIEW IN TELEGRAM
⏳ Day 11/60 Building SafePay
The most exciting day so far: SafePay talked to a real payment gateway.
I built the first real adapter, for Chapa, in test mode with no real money. SafePay creates a Chapa checkout page, I paid with a Chapa test card, and SafePay asked Chapa what happened and translated the answer into its own status, going from pending to succeeded.
X post
Next: checkout sessions, so a merchant can start a Chapa payment through SafePay's own API.
#60Days #Consistency
The most exciting day so far: SafePay talked to a real payment gateway.
I built the first real adapter, for Chapa, in test mode with no real money. SafePay creates a Chapa checkout page, I paid with a Chapa test card, and SafePay asked Chapa what happened and translated the answer into its own status, going from pending to succeeded.
X post
Next: checkout sessions, so a merchant can start a Chapa payment through SafePay's own API.
#60Days #Consistency
🔥5⚡1