バックグラウンド: PayPal Standardに有料メンバーシッププロWordPress Pluginを使用しようとしている。そこにあまりにも多くの助けを得ていないので、私はここにいるのです。サンドボックス 'ライブ'加盟店アカウントで動作するが、サンドボックス商人アカウントを使用すると失敗する
注文は「レビュー」に設定され、デバッグがオンになっていても電子メール経由でipnデバッグログはありません。また、デバッグログファイルを作成するようにデバッグを設定しようとしましたが、作成しません。ペイパルIPNの詳細は以下のとおりです。
オリジナル/憤慨し:オリジナル
最新の配達日/時間:---
通知URL:http://example.com/wp-admin/admin-ajax.php?action=ipnhandler
HTTPレスポンスコード:
配達状況:無効
再試行回数:0
IPNタイプ:お取引
IPNメッセージ自体は良好です。
は、次のテストを行っている:
1 - デバッグをオンにすると、私はIPN URLを訪問し、この取得: がログオン:2017年1月2日13時20分34秒アレイ()FPを!アレイ([ヘッダ] => プラス情報の全体の長いページ、と私は電子メールを介してIPNのデバッグログを受信
2 - 。私はIPNハンドラのURLに設定されたアクションでHTMLフォームを設定し、
を検証します3 - 、受け入れトランザクションタイプがWebに設定し、同じIPNハンドラのURLでIPNシミュレータを使用し完了に設定支払い状況と私はカスタムフィールドを削除除き、他のすべては、デフォルトたIPNログが検証言っ
。サンドボックスでテストしました - 購入者のサンドボックス購入者アカウントの1つを使用し、マーチャントとして私の開発者の電子メールアドレスを誤って使用しましたが(ビジネス・ペイパルのアカウントになります)、私は検証されました!チェックアウト処理 - 成功。
5 - 私はサンドボックスマーチャントアカウントを使用する以外、私はそのテストを繰り返したが、今回は、ライブシステムと同じ結果を得た - 注文状況が「レビュー」、無IPNのデバッグログなど
6です - サンドボックステストをもう一度繰り返し、クライアントのMerchantアカウントのメールアドレスを使用して確認しました。注文は成功しました。
私が試した他のもの: - 私のクライアントの商人のアカウントでWindowsからUTF-8に言語のエンコーディングを変更しない - 何の違い を - TLS 1.2互換性テストプラグインをインストール:「TLS 1.2が有効 あなたのサイトにすべきですエンドポイントがhttps://tlstest.paypal.com/(PayPal)PayPal_Connection_OK; PHPバージョン5.5.38 cURLバージョン7.34.0以上が検出されました。
これは、ハンドラのコードです:
function pmpro_ipnValidate() {
//read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
//generate string to check with PayPal
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
//post back to PayPal system to validate
$gateway_environment = pmpro_getOption("gateway_environment");
if ($gateway_environment == "sandbox") {
$paypal_url = 'https://www.' . $gateway_environment . '.paypal.com/cgi-bin/webscr';
} else {
$paypal_url = 'https://www.paypal.com/cgi-bin/webscr';
}
$paypal_params = array(
"body" => $req,
"httpversion" => "1.1",
"Host" => "www.paypal.com",
"Connection" => "Close",
"user-agent" => PMPRO_USER_AGENT
);
$fp = wp_remote_post($paypal_url, $paypal_params);
//log post vars
ipnlog(print_r($_POST, true));
//assume invalid
$r = false;
if (empty($fp)) {
//HTTP ERROR
ipnlog("HTTP ERROR");
$r = false;
} elseif (! empty($fp->errors)) {
//error from PayPal
ipnlog("ERROR");
ipnlog("Error Info: " . print_r($fp->errors, true) . "\n");
//log fb object
ipnlog(print_r($fp, true));
$r = false;
} else {
ipnlog("FP!");
//log fb object
ipnlog(print_r($fp, true));
$res = wp_remote_retrieve_body($fp);
ipnlog(print_r($res, true));
if (strcmp($res, "VERIFIED") == 0) {
//all good so far
ipnlog("VERIFIED");
$r = true;
} else {
//log for manual investigation
ipnlog("INAVLID");
$r = false;
}
}
/**
* Filter if an ipn request is valid or not.
*
* @since 1.8.6.3
*
* @param bool $r true or false if the request is valid
* @param mixed $fp remote post object from request to PayPal
*/
$r = apply_filters('pmpro_ipn_validate', $r, $fp);
return $r;
}
他に何を私は、クライアントのペイパルアカウントでライブサイトで成功ペイパル標準の支払いを得ることができない理由を見つけるために行うが、それはで動作することができますサンドボックス?