Paypal ExpressCheckout: setting what buyer sees in receipts and transactions - paypal

I am setting up Paypal ExpressCheckout
https://developer.paypal.com/docs/classic/express-checkout/gs_expresscheckout/
It's working fine (finally!), at least in Sandbox mode, but the receipt to my test buyer says "Receipt for Your Payment to test facilitator's Test Store"
I don't know what it will say in non-sandbox mode or where I can set the company name as it should appear in the receipt. I also find the format confusing:
"...your payment to some_user at some_store".
It should just be "... your payment to some_store", no?
Also, what will the buyer see in the transactions overview? I'm not seeing this at all in the sandbox view. (Transactions are empty. I can only see the payments under 'notifications'.)
data_dict = {
"USER":keys.PAYPAL_USER,
"PWD":keys.PAYPAL_PWD,
"SIGNATURE":keys.PAYPAL_SIGNATURE,
"VERSION":"124",
"METHOD":"DoExpressCheckoutPayment",
"TOKEN":token,
"PAYERID":payer_id,
"PAYMENTREQUEST_0_AMT":amount,
"PAYMENTREQUEST_0_CURRENCYCODE":"USD",
"PAYMENTREQUEST_0_PAYMENTACTION" :"SALE"
}

The message will be: Receipt for Your Payment to "The name of the company registered at Paypal". You can switch to live and test with a sample small payment.

Related

paypal sandbox - verify identity

I am testing my payment integration using PayPal Sandbox
When I go to make payment using a sandbox account, the following message displays on the payment page
To use your balance next time, go to your PayPal account for an
identity check.
If I log into the sandbox account, I am not seeing any way to do this.
How do I set up the sandbox account so that it can use PayPal funds for the payment rather than the credit card option?
It doesn't matter how you are funding the payment in sandbox. There's no actual reason for you to be bothering to care about this issue, since the result of a completed PayPal payment on the receiver end will be identical.
But since you ask, you can create a bank verified account via https://www.paypal.com/signin?intent=developer&returnUri=https%3A%2F%2Fdeveloper.paypal.com%2Fdeveloper%2Faccounts%2F

PayPal IPN message is always payment - pending

Working on a sandbox, Paypal will always send me back and IPN message with the pair payment_status:pending.
I know that this might happen due to different currencies and that I can change settings in my account to accept different currencies.
But, I am using the service when a seller and a buyer that I don't know make a transaction, so I can not do anything about it .
Is there a way to allow any currency in the POST request ?
What really the seller see when the payment status is pending ?
If the payment status will change to completed later, how will my IPN message look? there is nothing that says how the object from IPN will look when status is changing ? how can I handle such change ?
Solved by sending money to the sandbox account and not to my real live account.
So, you must send funds from a sandbox email to another sandbox email.
Create another merchant account on the developer website
Send money from a sandbox buyer to a sandbox seller

IPN Sandbox Testing

Been a while since I've dealt with PP IPN. Anyway - reworking an old client's checkout processing - one option is PP and we used IPN. I still have a sandbox acct and used the sandbox url instead of the live PP url.
I see the purchase and a correct debit to my sandbox acct - AND I received an email from the client's server (which is sent only when the IPN is received). But the email is a bit odd in that it says....
*** THIS PAYPAL PAYMENT IS IN A PENDING STATE.
THE REASON GIVEN BY PAYPAL IS: unilateral
THIS ORDER CANNOT BE FULFILLED UNTIL THE PAYPAL STATE IS
CHANGED FROM PENDING TO COMPLETED. ***
Is there some way for me to complete the transaction in my sandbox account? It's a purchaser account - not a merchant account. Or does my client need to go into his live merchant account to handle the test purchase?
Thanks (any pointers to relevant docs are also welcome)
Make sure that the email address you are using for testing in the sandbox, is linked to an actual sandbox account and is confirmed. This some times the case when the email address is not tied to an account and verified. You would need to log into the sellers test sandbox account, verify that the email address is linked to that account and confirmed/verified.

PayPal IPN Sandbox Payments - Pay On Delivery or Bank Payment

I am trying to test PayPal payments that are authorised at a later date, examples being Pay on Delivery or a Bank Transfer.
I have created a new sandbox account with no credit/debit cards and £0 in the PayPal balance but when I come to make a payment I have to add a card.
I have set up a bank account and agreed the mandate so I must have something set up wrong somewhere because these type of payments happen in LIVE and we have an issue with the IPN message that comes X number of days later once the payment has cleared so I am trying to reproduce this to investigate.
Have you tried using the IPN Tester? (here after you log into your Sandbox account) https://developer.paypal.com/developer/ipnSimulator/ .
All sorts of conditions that you can test your 'listener' process against there.

Paypal Website Payments Pro - Recurring Payment Profile - Negative testing - how to trigger

I try to establish recurring payment from CiviCRM, using Website Payments Pro mode.
The positive testing works perfectly, I see the created payment profile, I get the IPN notifications, it's perfect.
I enabled negative testing at the profile, I tried two methods to trigger the negative case - when the initial payment fails:
PayPal recurring payments negative testing (https://developer.paypal.com/docs/classic/lifecycle/sb_error-conditions/ - with the amount of 106.10 $)
With IPN error code: https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNTesting/ - 31.22
In both cases, the payment completed successfully.
I contacted the paypal support and their best answer was this:
" You can test it with close expiry date. Usually when the expiry date almost come, PayPal will sent notification to the buyer to change credit card. But if the buyers just ignore the notification, it will lead to failed transaction. "
Even if it works, it's unacceptable, that I might have to wait 1 month to see the result. Paypal does not allow to set already expired card for the recurring payment profile.
Do you see an efficient way to test negative outcome? Maybe with IPN simulator? But how can I be sure that Send Paypal Recurring Payments commands with IPN Simulator contains the proper messages that PayPal uses today for my type of account?
Here is how to proceed: forget the sandbox, it is just not mature enough. Use the production/live paypal account, lower the recurring fee to 0.5$, launch the recurring payment from Civicrm, wait for the initial payment, you have the successful case, then ask your bank to set the POS limit to 0$, then the next recurring payment will fail. This is a totally robust way to test negative case. Do not forget to set your IPN first (https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNSetup/). Do you have any better method?
The following method works for recurring payments with Express Checkout, might as well work for Payments Pro:
Login to https://www.sandbox.paypal.com using your buyer's test PayPal account.
Replace the contents of the street address Line-1 of the buyer's test credit card, with CCREJECT-REFUSED.
Execute a typical Express Checkout payment flow against the Sandbox test environment using the same buyer account and with the same credit
card that you just modified.
This method is described on a page in the bottom of a locked filing cabinet stuck in a disused lavatory with a sign on the door saying 'Beware of the Leopard' helpfully titled How To Recover from Funding Failure Error Code 10486 in Express Checkout