注意: 1. 他の人のパラメータルールに従ってパラメータリストを入力します; 2. 販売者情報を正しく入力します; 3. 送信後、この時点で当社のサーバーに別れを告げることに注意してください。サーバー上の情報を Alipay サーバーに送信し、Alipay サーバーで支払いが完了すると、@@@@@@ が表示されます。これは単なる始まりです。 Alipay からの非同期コールバックと同期通知リンクがあります。同期は通常、支払いが成功したこと、つまり自分のお金が他の人に渡されたことをユーザーに知らせます。このとき、ユーザーはそれが渡されたかどうかを気にします。これは非同期操作であるため、特に注意してください。まず、Alipay 自体が注文のセキュリティ検証を実行します --- 署名検証を含む: // 通知検証結果を計算します
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();
unset($para_temp['_URL_']);
//署名対象のパラメータ配列内の null 値と署名パラメータを削除します $para_filter = paraFilter($para_temp );
//署名されるパラメータの配列を並べ替えます
$para_sort = argSort($para_filter);
//「parameter =」のパターンに従って、「&」文字を使用して配列のすべての要素を文字列に連結しますパラメータ値"
$ prestr = createLinkstring($para_sort);
$isSgin = false;
switch (strtoupper(trim($this->alipay_config['sign_type']))) {
case "MD5" :
$ isSgin = md5Verify($ prestr, $sign, trim($this->alipay_config['key']));
Break;
デフォルト :
$isSgin = false;
}
return $isSgin;
}
この署名検証$ para_temp は、thinkPHP の URL が pathinfo モードで返されるパラメータのリストです。 &Normal パラメータ文字列。パラメータとして _URL_ をパラメータ文字列に追加した理由がわかりません。結果は
/**
*返されたときに署名検証結果を取得する*/
function md5Verify($prestr, $sign, $key) です。 {
$prestr = $prestr . $key;
return $mysgin;
if($mysgin == $sign) { //mysgin と他の人から返された署名が矛盾しているため、 、、絶句! ! pathinfo が原因だとは思いもしませんでした。unset($para_temp['_URL_']); を使用してこのパラメータを削除したところ、問題は解決しました。 return true;
}
else {
return false;
}
}
この質問はさようなら、次の質問です、、、2 つ目の質問です。 ! !そうですね、現在のサーバーが私なのか Alipay なのかわかりませんでしたが、非同期コールバックを操作して注文支払いの注文情報をデータベースに追加しましたが、現在のユーザー セッションに保存された uid を取得しました。 ! !私は今 Alipay サーバー上にいますが、あなたのセッションは私たちのサーバー上に存在しています。それで終わりです。 !彼があなたにそれを渡すように、あなたの uid を渡したいのですが、自分で方法を考えてください
この問題にはさようなら、そしてまた別の問題がやって来ます、私は 22 歳です、依存はしませんコールバック関数の要件に応じて、注文の操作が完了したときなどに成功を他の人に出力します。以前に返される成功は、注文を操作したかどうかを Alipay に通知する必要があることに注意してください。完了の兆候ではありません。Alipay サーバーが成功を受け取った場合、コールバックでのパラメータの受け渡しを停止します。返された情報が成功であることが見つからない場合は、この時点で Alipay の子はコールバック メソッドの呼び出しを続けます。
http://help.alipay.com/support/help_detail.htm?help_id=397375&keyword=%B6%E0%B4%CE%D2%EC%B2%BD%BB%D8%B5%F7