私はPaypalとの定期的な支払いの統合に取り組んでおり、この時点で主な機能は正常に機能しています。解決できない問題が1つあるので、ここの誰かが同じ問題に遭遇し、ヒントをくれるかもしれないと思いました。
定期支払いのサブスクリプションをテストするために、セラーアカウントを作成しました。売り手はドイツにあります。
次に、購入者を表す他のテストアカウントをいくつか作成しました。私は、ドイツの顧客を表す1人のバイヤーと、米国のバイヤーを表す1人のバイヤーを作成しました。
Paypalのログインページにリダイレクトされると(チェックアウト、カートは左側に表示されますなど)、米国のアカウントで正しくログインし、支払いに同意してリダイレクトされ、すべてが正常になります。
しかし、GERMANテストアカウントを使用しようとすると、ログイン直後に「現在、支払いを処理できません。販売者のページに戻って別の支払いオプションを選択してください」というページが常に表示されます。
問題を1つの驚くべき事実まで追跡しました。つまり、サンドボックスのTest-Account-Section内で「Premier」とマークされたテストアカウントでログインしようとすると、常にこのエラーが発生します。「個人」としてマークされている他のすべての(!)テストアカウントは正常に機能しています。
Paypal APIを使用して、エクスプレスチェックアウトのNVP文字列を設定しています。チェックアウト文字列を以下に示します。何かが足りない可能性があるためです。
$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";
誰かが同じ問題に遭遇し、私を正しい方向に向けることができることを願っています。たぶん、オプション「paymentaction」はドイツのプレミアアカウントでは機能しないか、他に何かが欠けています...?