问题
I'm working on a recurring payment integration with Paypal and at this point the main functionality is working fine. I have one problem though that I cannot solve so I thought maybe someone here has ran into the same problem and might give me a hint.
To test the subscription to a recurring payment I created a seller account. The seller is located in Germany.
Then I created some other test accounts to represent the buyers. I created one buyer to represent a german customer and one that represents a U.S. byuer.
When I am redirected to the Paypal login page (Checkout, cart is shown on the left etc.), I can login with the U.S. account properly, agree to the payment and get redirected and everything is fine.
But when I try to use the GERMAN test account, I always get a page directly after login which says that "The payment cannot be processed at this time. Please return to the seller's page and chose another payment option".
I tracked the problem down to one surprising fact, and that is I always get this error when I try to login with a test-account that is marked as "Premier" within the Test-Account-Section of the sandbox. ALL (!) other test accounts that are marked as "personal" are working just fine.
I am using the Paypal API to set an NVP-string for the express checkout. The checkout string is listed below, because maybe I am missing something there:
$nvpstr = "";
$nvpstr .= "&METHOD=SetExpressCheckout";
$nvpstr .= "&VERSION=74.0";
$nvpstr .= "&LOCALECODE=".$this->localecode;
$nvpstr .= "&CURRENCYCODE=EUR";
$nvpstr .= "&RETURNURL=".$this->RETURN_URL_PLANUPGRADE;
$nvpstr .= "&CANCELURL=".$this->CANCEL_URL_PLANUPGRADE;
$nvpstr .= "&NOSHIPPING=1";
$nvpstr .= "&LANDINGPAGE=Billing";
$nvpstr .= "&BILLINGTYPE=RecurringPayments";
$nvpstr .= "&BILLINGAGREEMENTDESCRIPTION=" . urlencode('billing agreement description');
$nvpstr .= "&PAYMENTREQUEST_0_PAYMENTACTION=Sale";
$nvpstr .= "&PAYMENTREQUEST_0_DESC=" . urlencode('payment description');
$nvpstr .= "&PAYMENTREQUEST_0_CURRENCYCODE=EUR";
$nvpstr .= "&PAYMENTREQUEST_0_ITEMAMT=".$data['Payment']['item_amt'];
$nvpstr .= "&PAYMENTREQUEST_0_TAXAMT=".$data['Payment']['item_tax'];
$nvpstr .= "&PAYMENTREQUEST_0_AMT=".$data['Payment']['amt'];;
$nvpstr .= "&L_BILLINGTYPE0=RecurringPayments";
$nvpstr .= "&L_BILLINGAGREEMENTDESCRIPTION0=". urlencode('description');
$nvpstr .= "&L_PAYMENTTYPE0=Any";
$nvpstr .= "&L_PAYMENTREQUEST_0_ITEMCATEGORY0=Digital";
$nvpstr .= "&L_PAYMENTREQUEST_0_NAME0=". urlencode('item name');
$nvpstr .= "&L_PAYMENTREQUEST_0_DESC0=" . urlencode('item description');
$nvpstr .= "&L_PAYMENTREQUEST_0_AMT0=".$data['Payment']['item_amt'];
$nvpstr .= "&L_PAYMENTREQUEST_0_TAXAMT0=".$data['Payment']['item_tax'];
$nvpstr .= "&L_PAYMENTREQUEST_0_QTY0=1";
I hope someone has ran into the same problem and can point me to the right direction. Maybe the option "paymentaction" does not work with german premier accounts, or anything else is missing...?
回答1:
I have the same problem, and this is the answer from PayPal support:
Dear xxx,
Thank you for contacting PayPal Merchant Technical Services.
As much as i want to give you a positive answer, but unfortunately the Express Checkout Recurring payment API is currently not supported for German buyers. These German buyers will always get the error you saw because the German funding sources are not supported for the recurring payment API and therefore this error is thrown. I am really sorry , but the German buyers won't be able to use this Service. The only way around that would be a change in your integration and process recurring payments for Germany with either the preapproved payments or reference transaction API:
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECReferenceTxns
https://www.x.com/devzone/articles/recurring-payments-reference-transactions-and-preapproved-payments
来源:https://stackoverflow.com/questions/11265288/paypal-api-checkout-rec-payment-sandbox-test-accounts-german-account-al