Paypal put funds on hold - ios

I am an iOS developer working on a mobile app
Our app business model is based on creating a niche marketplace between users. i.e a user can request a service and any user can provide the service and get payed by the requester.
We want to prevent misuse of the app by rouge users.
We want to create a user license agreement that will state then once the user submitted a new request to the marketplace with a specific amount then in case all of the criteria will be fulfilled later on - the app will complete the transfer.
Is there an option to put paypal funds on hold to be freezed/ unfreezed later on via the mobile idk/ backend server ?
If a user consents for a future payment, does it guarantee the availability of the funds later on?
Which Paypal API should I use?
Thank you,
Shai

Related

Future payment with iOS Stripe SDK

Using the iOS SDK for Stripe, can we do the following
Create a customer profile where the customer id can be sent and stored to the backend
Add, edit, delete credit cards to the customer profile
Card can be charged automatically from the backend
Note that, once the user make a payment via stripe, we ask them to allow auto-payment next time the balance goes below a certain level. So, it is not periodic subscription. But it is a permission in advance, to charge later.
For a single payment, the SDK takes the card info and provides the token. Token passed to server where the payment is finally process. This looks very nice and secured.
I do not want to store the card info in the iOS app, also not in server. But does stripe take the responsibility to store it and allow the backend to charge it later? I need a way so that server can communicate with stripe with a unique id and amount, so that stripe accepts the request and make the payment.
You can ask for webservice to your webservice developer which can make APIs to create customers in stripe account and store its customer_id in database so for next all payment you can make payment using customer id. Stripe will store card details in its database so no need to store card details at our side.

How to make delayed payment to one receiver using Paypal or Stripe?

I have an application, that process payment to application owner.
When user clicks "buy" on an item, the checkout operation should authorize certain amount on the user's account until some date. And when that date comes authorized money will be captured from user's account to application owner's account.
There is also a possibility, that user may cancel this authorization through the application.
We are free to user Paypal API or Stripe. Which is better and how it could be implemented?
Yes , it is possible through paypal adaptive payment api.
I am not sure what does 'freeze certain amount on the user account' mean, but you can surely transfer the amount to a holding account(admin account) and then on the particular date you can transfer it to the owner's account, meanwhile if the user cancels the payment the amount can be transferred from holding account back to user's account. This option is there in paypal.
What you're looking for is a functionality called auth/capture. What you're essentially doing is authorizing the funds (holding them on the user's payment source) and then capturing them at a later time. This is the same premise as a hotel putting a hold on your credit card for incidentals, and later canceling the hold.
You can do all of this with the PayPal REST API. Here are the features you're looking for:
Authorizing funds: https://developer.paypal.com/docs/api/#authorizations
Capturing funds (at a later time): https://developer.paypal.com/docs/api/#captures
Voiding (canceling) an authorized hold of funds: https://developer.paypal.com/docs/api/#void-an-authorization
Here's the Ruby SDK that you'll probably want to take a look at using, to make the authorization process easier: https://github.com/paypal/PayPal-Ruby-SDK
A few notes here. With authorization, I believe the funds are guaranteed to be there for 3 days. You can continue trying to capture the funds for up to, I believe, 29 days, but the funds are not guaranteed to be there.
Hope that helps

How to pay out money to multiple paypal or venmo or checking accounts from a single business account inside an iOS app

In our app, we are trying to implement a payout feature. If the user correctly performs Action A, we want to be able to pay some incentive money to this user, assuming the user has already connected his account to PayPal or Venmo.
How can I implement this, do PayPal and/or Venmo SDKs/APIs make this possible?
Venmo does not allow you to send money from a business to customers. PayPal does, I believe. You should do this from a backing web service, rather than the app itself. To complete the payment from the app, you would need to embed your account information in the app itself, which would be a security disaster.

Create Token With Apple Pay Without Payment

I have two questions:
Is there a way to create an STPToken using Apple Pay without a payment? In my iOS app, the customer either enters in their payment info or decides to use Apple Pay when registering. When the customer decides to make a purchase (some time in the future after signing up), their card will be automatically charged. There is a method that I can call to check if the payment request can be made, but it seems that I have to actually run the payment and charge the card in order to get the token. Note that I can create a customer and saving a card without charging the customer if the customer enters in the payment info manually. This issue only comes about if the customer decides to use Apple Pay.
For testing purposes, when I do use the payment to create the token and charge the customer's card during the sign up process, I've noticed that the dynamic_last4 and expiration date fields do not match the actual card. I have verified this not just in my program, but also when I log into Stripe's website and check the customer's record. Although these fields do not match the actual card, I can indeed charge the card correctly. Are these fields being masked in some way by Stripe or Apple on purpose?
You need to invoke the Apple Pay payment process in order to get the Apple-generated token. While strictly speaking you don't actually have to process the payment to get the token, what would you do with it otherwise? Store it? They're not re-usable and you don't get the card details to otherwise store a customer/card pair from it for future token generation. If you're not already familiar with it, I would strongly recommend reviewing the Apple Pay Identity Guidelines doc: https://developer.apple.com/apple-pay/Apple-Pay-Identity-Guidelines.pdf with respect to offering your customers multiple payment options including Apple Pay.
Yes, with Apple Pay the last4/exp values are disassociated from the actual card for security purposes.

Paypal - IOS SDK - Business account / sole trader

We are creating an IOS app and we'd like to use your IOS SDK for payments on behalf of our clients clients. We have implemented your SDK into our app and all works great and we are really happy with it but we just have a few things we'd like to clarify if possible?
Our app is for personal trainers and we want to be able to offer them the facility of charging their clients for services in app. So the Paypal account would need to be setup in the personal trainers name, they would need to create a client id and then enter their paypal email and account ID information into the apps CMS - which would then be fed securely into the app which is used by their clients to order services.
The SDK requires a client ID and registered email - which we were able to create in our business account via a rest api. Our question is whether this process would still work if the Personal Trainer registered their Paypal account as a sole trader - or would they need a business account to create a client ID?
It has to be Business account.
https://developer.paypal.com/webapps/developer/docs/integration/admin/manage-apps/#upgrade-your-paypal-account-as-necessary
Just to understand your question is the same as ours.
We have an app for a client.
We want to integrate payment for them in the app.
With Paypal iOS SDK the parameters initWithClientId and receiverEmail need to be obtained by our client from paypal by registering for a developer api?
Why would a business register for a developer api?
payerId is our client's customers paypal/emailid?
With MPL this was not needed?
Thanks.

Resources