[解決済み] HTTPSによるPaypal IPN検証のポストバック
質問
新しいセキュリティ要件(2016、2017、2018)によると、"IPN"の際に、サーバーとPaypal間のやり取りにHTTPSが必要になるようです。 この質問は、このテーマにリンクしています また これ .
このPHP IPNコードをどのように適応させればよいのでしょうか?
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Host: www.paypal.com:80\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
$req = 'cmd=_notify-validate';
...
fputs ($fp, $header . $req);
の2つの出現を置き換えることはできますか?
www.paypal.com
で
https://www.paypal.com
足りるのか?
また、私のショップサイトがHTTPSでないことが問題で、この接続は拒否されるのでしょうか?
Paypalから届いたメールの一部です。
編集 (2018/06/22) が、実際に受理された回答コードを適用した後のIPNコードがこちらです。不思議なことに、まだ次のように表示されます: "IPN Verification postback to HTTPS. 更新が必要です。YES"と表示されます。ということは、以下のコードはまだ100%HTTPSに準拠していないことになります。なぜでしょうか?
<?php
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = trim(urlencode(stripslashes($value)));
$req .= "&$key=$value";
}
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Host: www.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen('tls://www.paypal.com', 443, $errno, $errstr, 30);
// variables
$item_name = $_POST['item_name'];
$business = $_POST['business'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
// and many more
if (!$fp)
{
// HTTP ERROR
} else
{
fputs ($fp, $header . $req);
while (!feof($fp))
{
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0)
{
// send email to customer, etc.
}
}
fclose ($fp);
}
?>
解決方法は?
<ブロッククオート
hostname
OpenSSLサポートがインストールされている場合、プレフィックスとして
hostname
のどちらかを使用します。
ssl://
または
tls://
を使用すると、TCP/IP 上の SSL または TLS クライアント接続を使用してリモートホストに接続できます。
また、ポートも以下のように変更する必要があります。
443
. だから
$header .= "Host: www.paypal.com\r\n";
...
$fp = fsockopen('ssl://www.paypal.com', 443, $errno, $errstr, 30);
...
fputs ($fp, $header . $req);
https://
を開いているため、うまくいきません。
ソケット
これは低レベルのトランスポートである。HTTPはその上のアプリケーションレベルのプロトコルであり、ソケットはそのことを知りませんし、気にもしません。ソケットレベルでは
TLS
接続になります。
また、私のショップサイトがHTTPSでないことが問題で、この接続は拒否されるのでしょうか?
ブラウザがあなたのサーバーとどのような接続をしているかは関係なく、誰もそれを知りません。あなたはPHPプログラムからPaypalにソケットを開いていますが、それはコマンドラインから直接行っているのと同じで、quot;HTTP"接続は全く関係ありません。
関連
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】DateTimeクラスのオブジェクトを文字列に変換できない
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み】PDOException SQLSTATE[HY000] [2002] そのようなファイルまたはディレクトリがありません。
-
[解決済み】MySQLのカラム数が1行目の値数と一致しない【非公開
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】未定義の関数mysql_query()をLoginで呼び出す【重複
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み] 入力ファイルが指定されていない
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。