How to store credit card on Paypal Vault? - paypal

The Paypal REST API has an endpoint that allows saving a customer credit card information into the vault.
The problem is that I don't want to manually deal with credit card information on my frontend (and I believe it wouldn't be PCI compliant?) and then call that endpoint to store it in the vault.
Is there any other way to store a credit card in the vault? Maybe using hosted fields/pages? I've been searching the documentation but I haven't found any way to do this.

Related

Paypal Vault and PCI

I was looking into the Paypal Vault capability and found the following suggested sample code:
https://github.com/paypal/PayPal-Java-SDK/blob/master/rest-api-sample/src/main/java/com/paypal/api/payments/servlet/CreateCreditCardServlet.java
And this example contains this:
CreditCard creditCard = new CreditCard();
creditCard.setExpireMonth(11);
creditCard.setExpireYear(2018);
creditCard.setNumber("4417119669820331");
creditCard.setType("visa");
The servlet creates a credit card object and submits it to Paypal Vault. The example seems simple. However, the fact that my server has to process credit card and send them to Paypal worries me. Doesn't this suggest PCI compliance and so defeats the purpose of the Vault?
If you use the REST APIs for direct card processing, you need to validate your own site against PCI-DSS. Since VAULT deals with direct card payments, you will need to be PCI compliant if you are using VAULT.
https://developer.paypal.com/docs/faq/
I think the Vault API should be changed 'cause it seems there is the possibility to store also the CVV2 even if that field cannot be stored anywhere due to PCI Compliance (and the fact that you do not store that value is confirmed in a Github issue).
Changing the API will be great, I think.
Cheers

Store credit card details in Paypal payment

I wanna store card details while using Paypal payment, there is any why in Paypal SDKs which store details of card.
PayPal's REST API calls this a "Vault" and allows you to save the credit card details on PayPal's server so you don't have to save it on your own server. This way you can still process saved cards without any risk of saving it on your own server.
The Classic API (which is what I still prefer) has the same thing except that it's called Reference Transactions. You can run a card verification / $0 authorization, and then in the future you make a call to DoReferenceTransaction to process any amount you need using the card details PayPal has saved on their server.
Either way it's just a matter of building the API requests per the documentation. There are SDKs available to help you with this.
Paypal does not share its users' account details, especially card details to anyone. You have to use the unique account email address to define a user.
It is highly recommended to not save any payment information of users. Only transaction IDs, and perhaps a unique user ID or hash.

Update my PayPal card via 3rd party app?

Is it possible to update my card details stored in my PayPal account via a 3rd party app with the use of an API? I came across the below documentation but wasn't too sure in which scenarios it could be used?
"Update a stored credit card
Operation
PATCH /v1/vault/credit-cards/
Use this call to modify a credit card."
Any thoughts?
There is no API's available for updating the credit card on your PayPal account.
But, using Adaptive Payments, you can just add a new Payment Card using AddPaymentCard API.
Although, you would need to apply for an application at apps.paypal.com
The vault is for REST API which is used to store(encrypt) the buyer's credit card information and could be used for future transactions.The Vault API provides a secure way to store customer credit cards. By storing cards with PayPal, you can avoid storing them on your servers.

automatic payment by paypal vault and store the credit card

i understand we can store our client credit card information by paypay restful api by vault.
My questions are:
I tried this solution already in my paypal sandbox and it looks fine. But before executing this payment, it seems no approval is needed from my client. Is it normal?
Can I store this card id and charge my client in the future? Can I schedule some scripts to charge my client on weekly basis without their approval by vault method?
It is like recurring billing?
From this link
https://developer.paypal.com/webapps/developer/docs/integration/direct/rest_api_payment_country_currency_support/#direct-credit-card-payments
paypal said Direct Credit Card Payments is only available in US and UK.
I am not in UK neither US.
Can I use vault to charge my client?
Thanks.
That is normal, you should get the approval when you are storing the card, explaining to the user what they are consenting to. Within the valid_until range as in https://developer.paypal.com/webapps/developer/docs/integration/direct/store-a-credit-card/ , you should not need additional approval for charges.
You can store the card token and charge client in the future, in effect achieving something similar to recurring billing. https://github.com/paypal/rest-api-sdk-nodejs/issues/3#issuecomment-37940026
That is correct, you can only use direct credit card payments (which includes Vault) only in the US and UK for now.

Paypal Vault and IOS mobile SDK

Can we store or use the vault feature of paypal via the IOS Mobile SDK?
I know we have to use the REST API to verify the payment after it has been made - Can we also call the vault API to store the customers credit card so that the customer doesn't have to renter their credit card details again when using our app?
Thanks!
Dave from PayPal here.
Within the PayPal iOS SDK we do store the customer's credit card information (using the PayPal vault), so that your customer can in the future make another payment using your app without needing to re-enter that information.
For this storage to occur, when you create the PayPalPaymentViewController you must pass in a non-nil payerId string. If for a subsequent payment you provide the same payerId, then the previously stored credit card information will be retrieved.