web-dev-qa-db-ja.com

Paypal IPNは、サンドボックスで常に「payment_status:Pending」を返しますか?

私は自分のウェブサイトにPaypalを実装しようとしています。

私はこのクラスを使用します: http://www.micahcarrick.com/php-Paypal-ipn-integration-class.html

現在、Paypalサンドボックスを使用してテストしています。

問題は次のとおりです。

  1. ユーザーが支払いを行う-OK
  2. ユーザーがウェブサイトに正常に戻った-わかりました
  3. 数秒後、PaypalはIPNを使用して私のウェブサイトに電話します-OK
  4. 私のクラスは、着信IPNデータを正常に検証します。
  5. Paypalが「payment_status:Pending」を返します

Paypal IPNが「pending」の支払いステータスでコールバックする理由がわかりませんか?

誰かが私が間違っていることを知っていますか?

56
marc

テストビジネスアカウントにログインしたら、次の場所に手動で移動します。

https://www.sandbox.Paypal.com/ca/cgi-bin/?cmd=_profile-pref&source=acct_setup&fli=true

通常、「My Business Setup」を使用してそこに到達できますが、現在は(サンドボックスにあるにもかかわらず)ライブでPaypalにリダイレクトされます。

そのページに移動したら、「自分が保有していない通貨で送られてきた支払いをブロックする」を「いいえ、受け入れて、変換して...」に変更します。

また、Paypal SandboxフロントエンドとAPIの「テストメール」セクションを使用してビジネスアカウントを確認することを忘れないでください。

48
Wes Hanney

私の問題は、私のサンドボックス販売アカウントが英国のユーザー(および通貨としてのGBP)として作成されたことでした。デンマーククローネ(DKK)で注文を処理しようとすると、商人の観点では購入が「未請求」であることがわかります。 DKKで1つの注文が受け入れられ、DKKで新しい通貨を作成することを選択するとすぐに、IPNからすべての「payment_status = completed」メッセージが送信されました。

16
h2ooooooo

この問題に少し対処した後、PaypalがUIを変更し、

Paypal Merchantテクニカルサポートの正確な手順は次のとおりです。

マーチャントテクニカルサポートにお問い合わせいただきありがとうございます。

サンドボックスアカウントの支払い確認機能をオフにするには、次の手順に従ってください。

  • Paypal開発者Webサイト に移動します
  • 開発者アカウントにログインします
  • アプリケーションをクリック
  • サンドボックスアカウントをクリックします
  • [支払いレビュー]オプションをオフにするメールアドレスをクリックし、展開後に[プロファイル]をクリックします
  • 設定をクリック
  • そして、支払いレビューのためにオフを選択します。
  • 閉じるをクリック

!!!あなたがこれを行っていることを確認してくださいPaypal SandBox Merchant Account

&それはどのように見えるか:

enter image description here

10
Jadeye

次の手順で解決できます。

  1. Developer Centralにログインします。

  2. 左側の[テストアカウント]タブをクリックします。 Sandboxでテストするために、これらのテストアカウントを作成しておく必要があります。

  3. [Payment Review]列を見つけます。

  4. 使用しているサンドボックスアカウントを見つけて、[Payment Review]列の[有効]をクリックします。

  5. これは「無効」に変更され、残高とクレジットカードからの支払いはすぐに完了します。

8
mouhammed

考えられる2つの理由:

1。売り手アカウントには支払いを受け入れるか拒否するかのオプションがあります

この場合、売り手としてログインして支払いを受け入れる必要があり、payment_status = Completedで別のIPNを取得します

手順:

  1. デベロッパーセントラルにログインします
  2. 左側の「テストアカウント」を押します
  3. 売り手アカウントを選択し、下部にある「サンドボックステストサイトに入る」を押します
  4. 支払いを承認または拒否するオプションを含む売り手ダッシュボードが表示されます(売り手テストアカウントの資格情報を使用して、このステップで再ログインする必要がある場合があります)

2。支払いレビューが有効になっています

溶液:

  1. Developer Centralにログインします。
  2. 左側の[テストアカウント]タブをクリックします。 Sandboxでテストするために、これらのテストアカウントを作成しておく必要があります。
  3. [Payment Review]列を見つけます。
  4. 使用しているサンドボックスアカウントを見つけて、[Payment Review]列の[有効]をクリックします。

これは「無効」に変更され、残高とクレジットカードからの支払いはすぐに完了します。

7
  1. 変更Allow payments sent to me in a currency I do not holdからYes inすべてのユーザーアカウントでサンドボックス内にありますが、まだ機能していませんでした。

  2. また、Paypalフォームで、およびサンドボックスユーザーアカウント用に同じ通貨を作成しようとしました here 新しい通貨をプライマリにします。お金を新しい通貨に変換します。まだ成功していません。

  3. それから、Wes Hanneyの答えの最後の文、「Paypal Sandboxフロントエンドを使用してビジネスアカウントを確認する」に気付きました。 これを試す も機能しませんでした。

  4. M.G.パルマーは、ドイツの商人アカウントを作成するために彼の答えで提案しました。動作しませんでした。


なんて面倒!

PCを窓の外に放り出そうとしていた1時間後、私は1つのことを忘れていることに気付きました。 Paypalフォームの実際の受信者のメールアドレスをサンドボックス販売者のメールアドレスに変更します。それでようやく解決しました。


PS:たぶんバカ初心者の間違いでしょうか?しかし、同じ状況に陥った他の人には役立つかもしれません。

6
Kai Noack

私は同じ問題を抱えていましたが、ここでの提案はどれもうまくいきませんでした。それから私は、問題がサンドボックスアカウントからライブアカウントに支払いをしようとしていたことであることに気付きました。たとえば、登録済みのビジネスアカウントが次の場合:[email protected]その後、すべてのサンドボックス支払いは[email protected]それ以外の場合、それらはPENDINGモードになります。

5
Emil Borconi

上記の解決策はありませんでしたが、解決策を見つけるのに役立ちました。

デフォルトのビジネスアカウントと購入者アカウントを使用している場合、このソリューションが機能する可能性があります。

  1. developer.Paypal> sandbox.accountsに移動します
    https://developer.Paypal.com/developer/accounts/

  2. ログインをクリックし、sandobxでクローンアイコンをクリックしますビジネスアカウントおよびバイヤーアカウント

  3. 新しいnamesおよびemailsを設定し、create new accountをクリックします

  4. 両方のアカウントのプロファイルを開き、Payment Review[〜#〜] off [〜#〜]であることを確認します

  5. 編集コード/アプリでターゲットアカウントを作成し、新しいビジネスアカウント

  6. 繰り返し新しい取引を使用するトランザクションバイヤーアカウント


この解決策は私の問題を解決しただけではありません。そのおかげで、sandox.Paypalデザインは新しいアカウントに変更され、これは実際のアカウントを使用します。

この場合、IPNが受信したデータの一部が異なる名前で応答する可能性があるため、これは重要です。

2
Alex Florentin

ここで同様の問題-私の(サンドボックス)マーチャントアカウントは米国と同じように作成され、ユーロで支払いをしようとしていました。

私にとっては、どの設定を変更しても問題ありませんでした。ドイツに拠点を置く新しい商人アカウントを作成して初めて機能しました。

2
Martin T.

デフォルトでは、Paypalビジネスアカウントは、地域の設定に基づいて選択されたいくつかの通貨に制限されています。承認されていない通貨で行われた支払いは、保留/未処理の状態のままになります。これらの通貨をサポート/受け入れるには、Paypalの「受け入れられる通貨」のリストに通貨を追加する必要があります。これを行うには、次の手順を実行します。

  1. PaypalビジネスアカウントでPaypalにログインします
  2. [プロファイル]> [プロファイルと設定]> [マイマネー]> [通貨]に移動します
  3. サポートする通貨を追加します。

注:テスト時にサンドボックスアカウントを使用する場合、URLを使用してこのアカウントにログインした後、ファシリテーターサンドボックスアカウントに対してもこれを実行する必要があります。 https://www.sandbox.Paypal.com/

1
BartM

すべてのサンドボックスアカウントを削除して再作成することで解決しました。

重要な注意事項:

アカウントがコードで同じ通貨を使用していることを確認してください。

0
mboy

確認する必要があるもう1つのことがあります。

Paypalアカウントの言語エンコードがUTF-8に設定されていることを忘れないでください。状況によっては、これはデフォルトで「windows-1256」のようなものに設定されます。 UTF-8に変更するには、以下を行う必要があります。

  • あなたのプロフィールに入り、「私の販売ツール」
  • そこで、下部にある「Paypalボタン言語エンコード」をクリックします
  • 次のページで、「その他のオプション」をクリックして、最終的にエンコードを設定できます

ドイツで設定したすべてのPaypalアカウントは、デフォルトで言語エンコード「windows ...」に設定されていました。その場合、IPNは、WoocommerceまたはEDDまたはイベントエスプレッソであっても、UTF-8でエンコードされたWebサイトでは機能しません。

0
bschmidttraub

解決策は@Jadeyeが説明するものです。

Paypal開発者Webサイトにアクセス

  1. 開発者アカウントにログインします(サンドボックス)
  2. アプリケーションをクリック
  3. サンドボックスアカウントをクリックします
  4. [支払いレビュー]オプションをオフにするメールアドレスをクリックし、展開後に[プロファイル]をクリックします
  5. 設定をクリック
  6. そして、支払いレビューのためにオフを選択します。
  7. 閉じるをクリック
0
mdromed