I'm trying to get the PayPal Express Checkout to consistently only use the "Billing" landing page where card numbers can be entered directly.
I have tried everything I can find on Google, and have ended up with some very odd results. When I redirect to PayPal, I get the "Billing" page 50% of the time, and the "Log in to PayPal / Check Out as Guest" page the other 50% (literally just pressing the back button and then clicking "checkout" again gives different results). I really need to get to the Billing page consistently.
SetExpressCheckoutRequestType pp_Request = new SetExpressCheckoutRequestType();
pp_Request.Version = "117.0";
pp_Request.SetExpressCheckoutRequestDetails = new SetExpressCheckoutRequestDetailsType();
pp_Request.SetExpressCheckoutRequestDetails.SolutionType = SolutionTypeType.SOLE;
pp_Request.SetExpressCheckoutRequestDetails.PaymentAction = PaymentActionCodeType.SALE;
pp_Request.SetExpressCheckoutRequestDetails.LandingPage = LandingPageType.BILLING;
pp_Request.SetExpressCheckoutRequestDetails.FundingSourceDetails = new FundingSourceDetailsType();
pp_Request.SetExpressCheckoutRequestDetails.FundingSourceDetails.UserSelectedFundingSource = UserSelectedFundingSourceType.CREDITCARD;
pp_Request.SetExpressCheckoutRequestDetails.ReturnURL = serverName + returnUrl;
pp_Request.SetExpressCheckoutRequestDetails.CancelURL = serverName + cancelUrl;
pp_Request.SetExpressCheckoutRequestDetails.OrderTotal = new BasicAmountType();
pp_Request.SetExpressCheckoutRequestDetails.OrderTotal.currencyID = CurrencyCodeType.GBP;
pp_Request.SetExpressCheckoutRequestDetails.OrderTotal.value = String.Format("{0:F2}", amount);
pp_Request.SetExpressCheckoutRequestDetails.NoShipping = "1";
As you can see, I'm setting the version AND the Solution Type AND the Payment Action AND the Landing Page AND the Funding Source, and it still doesn't work reliably.
The randomness of it feels like they're doing some A/B testing. Sometimes, on the wrong page, the button says "Check Out as Guest", and sometimes it says "Try PayPal as Guest". Whilst I don't mind A/B testing for text, a complete change of landing page when I've asked it not too seems a bit much.
What else could it be?