ホームページ >バックエンド開発 >PHPチュートリアル >PHPを利用したAlipayアカウントの即時決済に注目
PHP を使用して Alipay で即時支払いを行う際の注意点
注: 1. 他の人のパラメータ ルールに従ってパラメータ リストを入力します。 2. 販売者情報を正しく入力します。この時点で送信して注意してくださいさようなら 私たちのサーバーは、サーバー上の注文情報を Alipay サーバー に送信し、支払いが成功すると、Alipay サーバーは Alipay の支払いプロセスを実行します。 @@ が表示されます。あまり早く喜ぶ必要はありません。これはほんの始まりにすぎません。Alipay には非同期コールバックと同期通知リンクがあります。同期は通常、支払いが成功したこと、つまり自分のお金が他の人に渡されたことをユーザーに知らせます。このとき、ユーザーはそれが渡されたかどうかを気にします。これは非同期操作であるため、特に注意してください。まず、Alipay 自体が注文のセキュリティ検証を実行します -- 署名検証を含む: //通知検証結果を計算します
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify-> ();
この $verify_result は、署名などの検証が成功した場合の返結果です。特定の検証リンクが含まれています。 $ alipayNotify->verifyNotify();
/**
* 返された署名検証結果を取得
* @param $para_temp 返されたパラメータ配列を通知
* @param $sign 返された署名結果
* @return 署名検証結果
*/
function getSignVeryfy($ para_temp, $sign) {
unset($para_temp['_URL_']);
//署名されるパラメータを削除 NULL配列内の値と署名パラメータ
$para_filter = paraFilter($para_temp);
//署名パラメータを処理するarray Sort
$para_sort = argSort($para_filter);
//「パラメータ」に従って配列のすべての要素を配置します= パラメーター値 " パターンは "&" 文字を使用して文字列に結合されます
$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 は、他の人から返されたパラメータリストです。hinkPHP の URL pathinfo モードです。何が返されますか? &Normal パラメータ文字列。パラメータとして _URL_ をパラメータ文字列に追加した理由がわかりません。結果は
/ **
* 署名を検証
* @param $prestr 署名が必要な文字列
* @param $sign 署名結果
* @param $key 秘密鍵
* 署名結果を返す
*/
function md5Verify($prestr, $sign, $key) {
$prestr = $prestr . $key;
$mysgin = md5 ($prestr);
return $mysgin;
if($mysgin == $sign) { //mysgin と他の人が返した署名が矛盾しているため、、、言葉を失います! ! pathinfo が原因だとは思いませんでした。 unset($para_temp['_URL_']); を使用してこのパラメータを削除したところ、解決しました。
return true;
}
else {
return false;
}
}
この質問は終わりました。別の質問が来ました、、私は2人目です! ! !そうですね、現在のサーバーが私なのか Alipay なのかわかりませんでしたが、非同期コールバックを操作して注文支払いの注文情報をデータベースに追加しましたが、現在のユーザー セッションに保存された uid を取得しました。 ! !私は今 Alipay サーバー上にいますが、あなたのセッションは私たちのサーバー上に存在しています。それで終わりです。 !彼にあなたの uid を渡してもらいたいのですが、自分で方法を考えてください
さようなら、次の質問です。また私です。他の人のコールバック関数の要件を読んでいませんでした。注文などを完了したら、成功を他の人に出力しないでください。 Alipay サーバーが成功を受信した場合、返された情報が成功であることが確認できない場合、Alipay の子はコールバック メソッド
はこの時点で継続的に呼び出され、ユーザーは 10 セントを入金し、その後 Alipay がコールバック メソッドをコールバックし続けるため、注文テーブルが常に変更されます。 .. ………………言葉のない建物! ! !皆さん、注目してください! ! !
http://help.alipay.com/support/help_detail.htm?help_id=397375&keyword=����첽�ص�