I have a React Native app that has 2 types of end users. I would like User-A to be able to send cash tips to User-B. I also want the business to be able to retain a % of each tip as a convenience fee.
What is the best way to implement this?
I have Stripe in mind but I don't want to inconvenience User-A by having him make 2 transactions. I would prefer the tip go to the business account first, then from there, my preference is to have the code automatically and programmatically send the relevant funds to User-B. If not, then have User-B manually withdraw his tips. But I have no idea how to go about this. Is Stripe is even the best solution?
Any ideas are much appreciated.
PS: This must be a common use case. Why is it so hard?
This is a use-case for Stripe Connect. In order for User B to receive funds, they'll need a Stripe Connect Account. For someone to receive payment, their identity will need to be verified, so that is why they'll need a Connect account. The flow you are describing is a Destination Charge, which works with Express and Custom Connect account types. This shouldn't affect your React Native code much. The main difference, as you can see from the Destination Charge link I provided, is that you'll need to specify transfer_data[destination] when you create the Payment Intent on your server.
Related
Does anyone know how / if it is possible to use token billing? The 2Checkout API supports it and OmniPay supports token billing, but I've not had much luck and a quick look at the Official Gateway code doesn't seem to show support for it?
Anyone doing this / have any idea?
I can categorically state that it's possible to use token billing, I do so regularly. I'm not that familiar with 2Checkout but I have used token billing on stripe, paypal, PaymentWall, MultiCards, Fat Zebra and other gateways.
Is there a specific problem you're having that you can illustrate with some example code?
Does 2Checkout support token billing? Yes, and it works. However, there are some quirks with it:
You have to turn Demo Mode off on the dashboard or the 2Checkout and OmniPay API doesn't seem to work properly.
You have to send a Billing Address in order for the transactions to go through. If that doesn't work for you, such as for digital downloads, then you'll want to consider another payment gateway.
The billing address must contain a customer email and cannot be empty. Again, if that doesn't work well in your sales workflow, then you'll want to consider another payment gateway.
The billing address must contain a phone number, but CAN be empty.
I discuss this here as well as provide an OmniPay sample code snippet: https://stackoverflow.com/a/36807292/105539
Take a look at my project, TokenPay. I've weeded through the confusing docs and got it working on 2CO.
P.S. Don't ever forget your sandbox password -- they don't tell you this in the docs, but found out via tech support that their password reset on the sandbox login doesn't look disabled, but is disabled. (It would have been nice if they made that quite clear.) Instead, you'll have to create another sandbox account entirely when you forget a password there.
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.
I'm considering setting up a eCommerce website and was wondering about the payment side of things.
After some searching I came across Stripe, which seems very similar to PayPal and Google Checkout.
I have a few questions about Stripe and eCommerce in general.
What do I need to take payments on my website? Presume that I have the shop set up, and the buy button in place. Do I need an SSL certificate, I've read something about being PCI complaint? What is and why would I need a merchant account.
Stripe appears to handle a number of things for me, and it stores the users card details. How would this work with things such as logging in to a website. Would I store the users email and password and then when they wanted to buy something Stripe would just handle the credit card side of things or would the entire user details be stored on Stripe.
Can you build and style your own payment form that then connects to Stripe or do you have to use their form on your page?
Do you have to upload all of your products to Stripe or can you store these in your own database and just pass the value of goods purchased to Stripe for payment?
What are the advantages/disadvantages of Stripe and is there any competitors that I should know about?
Thanks
Stripe requests that you should serve up payments pages over SSL. Anyone involved in payment processing must comply with PCI, if you use something like Stripe you will need to serve the payments page on SSL, but Strip will handle the payment info. Check out https://support.stripe.com/questions/do-i-need-to-be-pci-compliant-what-do-i-have-to-do for more details on what you'd need to do.
Not entirely sure on this front, perhaps someone else can comment?
You'll be able to style your page and use Stripe for the payment piece.
You can use Stripe's checkout or build your own (sounds like this is what you want to do) via Stripe.js.
Stripe is generally recognized as one of the most developer-friendly ways to accept payments online. They've worked hard to build a simple service that a developer can get up and running a matter of hours. Braintree is a competitor that may offer some valued added services and you might want to take a look at Balanced as well. I work at LevelUp, which has been used in conjunction with Stripe (as another payment method, similar to PayPal) and as a stand alone solution for apps processing online or mobile payments.
Specific requirements for my app:
buyers must be able to use credit card
i want to collect a portion of each transaction (fee)
I was initially using Dwolla but realized that users would not be able to pay with credit cards. Now I'm looking at Stripe and see that they have Stripe Connect.
Would Stripe Connect fit the bill? A post here says that SC "would require the [recipients] to have business licenses". Is this true?
Also, looking at the API, I don't see how to direct the received funds to a recipient account. It seems like all you can do is "charge" the card. This seems like it would just put all of the funds in my account. All I want is a portion (fee) and then have the rest somehow deposited in the recipient's account. Is this possible, and if so, how do I specifiy the recipient in the API call?
It's best to view Stripe Connect as OAuth. Merchants can connect their Stripe accounts with you, and you can authenticate to Stripe with their details, and make charges on their behalf. You can take a fee off the top using the 'application_fee' param.
As to your first question, all users would have to sign up to and abide by Stripe's terms. They don't necessarily need to be businesses though - they could be sole proprietors.
You can find more docs on Connect here. https://stripe.com/docs/connect
I can not praise with my contribution here, because I am new user,
but would help if I can.
I have a big problem and I do not know how to solve it, please help.
In the same Paypal account with the default email address: email1#somedomain.com, there is 7 more emails:
email2#somedomain.com
email3#somedomain.com
email4#somedomain.com
email5#somedomain.com
email6#somedomain.com
email7#somedomain.com
that's the maximum allowed number of emails under one PayPal account (8).
So we are using API on several pages, and only one API signature can be done in the paypal
interface, so same API signature is used for each web page.
We would like to define where will money go - to which email address inside the same PayPal account.
We use Premium PayPal account, and we know that for logo change, email remove and so on, we would need Business account,
but for defining money receiver email address inside the same PayPal account
we suppose that it can be defined, otherwise we do not se a point of having several email addresses inside one same PayPal account.
The problem is that always is shown default email when making a purchase :S
We tried to define SUBJECT:
SUBJECT=merchantEmailAddress
N O T E: Typically, a merchant grants third-party permissions to a shopping cart...
And set merchantEmailAddress email2#somedomain.com.
In sandbox it works like a charm as soon as we put it on production, default mail is shown again.
Please if anyone had the same issue help.
Thank you very much, this forum is great and I realise that without nice people and contribution as well there would be no answers.
regards
You would not be using SUBJECT unless dealing with Permissions and making calls on behalf of 3rd party PayPal accounts.
You're working with a single PayPal account, so you won't be using SUBJECT at all. You'll use the credentials like you are already.
That said, I'm not sure I'm following you entirely what trying to send to different emails. I don't understand the end goal with that..?? The API credentials are what are going to tell the system where to drop the money, or pull data from, or whatever.
If you're just trying to get different logos to show up during checkout you can do that with parameters in your standard button code or API requests.
Let me know if that helps or not. Again, I'm not sure I'm understanding what you're after here.