Stripe Billing or using a queue - rabbitmq

I have a general architecture question. I am currently designing a solution where payments need to be processed at a later date and time (asynchronously) using Stripe.
In this scenario what are the general best practices to follow. Should I be using a queue broker like RabbitMQ / Kafka which then transmits regular Stripe Payments at the specified time and date or just use the Stripe Billing / Plans / Subscription API to build the solution.
In the case of regular card payment using Stripe I don't want to store the card details on my system so am assuming I would just store the payment intent until I need to create a charge.
Any help and feedback is appreciated.

Related

Save Card w/o Capturing Payment

For the project I'm working on, I want to save the credit card information without capturing payment. This is a schedule for services app and an initial payment will be scheduled and then subsequent payments will happen at varying intervals. I know this is a subscription transaction, but I am trying to understand how that would work if the payment is not at regular intervals. Is this possible and is that something that works under the guise of the subscription model?
This is possible but not under the guise of Authorize.Net's subscription model. Because your future payments will not be at regular intervals you will need to handle the scheduling of those payments yourself.
You can use CIM to store the credit card information and make the first payment, but then you will need to have your own scheduling system that knows your scheduling rules and then use it to charge payments using those CIM payment profiles when appropriate.

PayPal subscription with on-demand variable payments

I am studying how to implement a scenario with PayPal APIs where the customer confirms a PayPal subscription once and authorise all future payments. The amount is charged only when the user demands the service (i.e. like a food delivery app: the user agrees to the subscription once, and from that moment on he's never asked for confirmation each time he orders and confirms, the amount is automatically charged).
I know it could sound trivial (there are a lot of applications doing this) but actually I can't find that scenario in PayPal documentation.
Looks like the Subscription scenario only allows a cycle, which is not my case. In my scenario there is no cycle: the customer is charged only when consuming products or services (with variable amount from time to time).
Thanks in advance!
This requires reference transactions, which is an account feature that must be approved an enabled by PayPal. Contact your PayPal account manager or business support ( https://www.paypal.com/smarthelp/contact-us ) to explain the business need and request the feature. (Technical support will not enable the feature.)
As for the implementation, the only publicly documented API is Classic NVP. PayPal may give you guidance on integrating with some newer API, such as "v2" vault (not v1 vault)

Paypal Pro API for monthly payment with variable amount each month

I need suggestion for paypal pro API which allow me to pass variable amount each month. For some months,it can be zero too.
I tried with UpdateRecurringPaymentsProfile but it gives me error of 11592 (Subscription profiles are not supported for recurring payments).
Please someone help me with easiest solution.
Based on the error you mentioned it sounds like you're using a PayPal Standard Subscription button, not Pro. If that's the case, then as the error says, you cannot update standard subscriptions with the APIs. You would have to use the recurring payments API to create the profile in order to then update it.
That said, you won't be able to do variable amounts with recurring payments profiles. you can only raise them by 10% every 120 days, so that typically doesn't work with what you're trying to do.
Instead, you'll need to use reference transactions. So if you're using Payments Pro that will be real simple. You just pass in the transaction ID of an original authorization or sale transaction along with a new amount you need to charge. PayPal uses the card details on file to process the new amount.
If you're using DoDirectPayment then you'll use DoReferenceTransaction for the future payments. If you're using PayFlow you would use the PayFlow API, of course, and change the parameters to match a reference transaction request.
You can also do the same thing with PayPal Express Checkout, but in that case you'll need to include billing agreement parameters in the SetExpressCheckout request, and then you'd use the billing agreement ID you get back from that in the DoReferenceTransaction request.
In any case you'll need to build your own script to run everyday, pull profiles that need to be charged, and charge them accordingly.

Alternative to PayPal for Merchant Services, Instant Transfer and Immediate Accessibility by Debit Card

I have a scenario where an application processes a payment and sends a portion of the payment to other providers. Part of the allure of PayPal is that these funds are available immediately via their PayPal Debit Card.
Are there any alternatives that offer an API for performing these transactions? I've seen mention of alternatives for this scenario (for example, in the following thread on the Dwolla site), but have never actually seen a company mentioned.
https://discuss.dwolla.com/t/will-dwolla-add-credit-cards-like-paypal/62
Try looking at: https://stripe.com/connect. It looks like it handles payment collection as well as sending payments to other providers. I've never used it myself though.

What is the Best Practice to check billing plan payments using PayPal REST API SDK?

I have managed to successfully create billing plans and agreements by using PayPal PHP SDK via REST API for the Web Service of company I work. However I could not find any document about how I should check the agreement payments made automatically.
I guess the webhooks are for this work but also I can retrieve the payment transactions via SDK.
There are the cons of both.
Con of using webhooks is that the website really should work all the time and there is no way to understand if I have missed a request. This is something I can not guarantee for all moment.
Con of using REST API, I should check for all the transactions of all agrements to sync with my DB.
Is there a better solution that I possibly miss or are those the only possible solutions.
What would be the best practice for checking received or missed plan payment?
The conversation on https://github.com/paypal/PayPal-Python-SDK/issues/69 would be relevant to you. Short answer is that while support for billing agreements in webhooks is underway, using IPN would be the best interim solution if you want to be push notified, else transactions of all agreements would need to be fetched.