目次
ThinkPHP 実装 Alipay インターフェース関数の例、thinkphp の例
ホームページ バックエンド開発 PHPチュートリアル ThinkPHP が Alipay インターフェイス関数を実装する例、thinkphp example_PHP チュートリアル

ThinkPHP が Alipay インターフェイス関数を実装する例、thinkphp example_PHP チュートリアル

Jul 13, 2016 am 10:12 AM
thinkphp インターフェース アリペイ

ThinkPHP 実装 Alipay インターフェース関数の例、thinkphp の例

この記事の例では、ThinkPHP が Alipay インターフェース関数を実装する方法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

最近システムを開発していたときに、オンライン決済機能を実装する必要があったため、迷わず Alipay のインターフェイス決済機能を選択しました。具体的な実装手順は次のとおりです。

1. Alipayインターフェースパッケージをダウンロードします

ダウンロードアドレス: https://b.alipay.com/order/productDetail.htm?productId=2012111200373124&tabId=4#ps-tabinfo-hash

ダウンロード方法については詳しく説明しません~~

2番目に、インターフェースパッケージファイルを再編成します、このステップは(私の意見では)重要であると考えるべきです、ダウンロードされたインターフェースパッケージファイルには多くの言語のソースコードが含まれています

create_direct_pay_by_user-PHP-UTF-8 という名前のインターフェイス ファイルを選択します。これには次のファイルが含まれます:

画像ファイルには、Alipay に関連するいくつかのロゴの画像が含まれています。ここでは、lib ファイルは非常に重要であり、インターフェイス全体のコア クラス ファイルです。

alipay.config.phpは関連パラメータの設定ファイルです

alipayyapi.phpはAlipayインターフェースエントリーファイルです

notify_url.php はサーバーの非同期通知ページ ファイルです。

return_url.php はページジャンプ同期通知ファイルです。

ThinkPHP フレームワーク ファイルの下で、「Extend」を見つけて「Vendor」と入力し、Vendor フォルダーの下に新しいフォルダー Alipay を作成し、Alipay をサードパーティ クラス ライブラリとして導入し、Alipay の lib ファイル内のすべてのファイルをコピーします。インターフェース ファイル パッケージ、次の合計 4 つのファイル:

ここで、上記のファイルの名前を変更します。

alipay_core.function.php の名前が Corefunction.php; に変更されました。

alipay_md5.function.php の名前が Md5function.php;

に変更されました。

alipay_notify.class.php の名前が Notify.php;

に変更されました。

alipay_submit.class.php の名前が Submit.php;

に変更されました。

次に、Submit.php ファイルを開き、次のコードを削除します。

require_once("alipay_core.function.php");

require_once("alipay_md5.function.php");同様に、Notify.php ファイルを開き、次の 2 つのコード部分を削除します require_once("alipay_core.function.php");

require_once("alipay_md5.function.php"); 上記 2 つのファイル内のこれら 2 つのコードを削除する必要があるのはなぜですか? プロジェクトでインターフェイス ファイルを呼び出すときに、ベンダーを通じて 4 つのコア ファイルをすべて導入したためです。したがって、インポートは必要なくなりました。

この時点で、Alipay インターフェース パッケージに関連するコア クラス ライブラリの編成は基本的に完了しました。ここでプロジェクトの呼び出しを開始します;

3. プロジェクトで Alipay インターフェースを呼び出します

2ステップで電話をかける:

1. 設定ファイルのConf/Config.phpファイルでAlipay関連のパラメータを設定します

コードをコピーします

コードは次のとおりです:

//Alipay設定パラメータ 'alipay_config'=>array( 'partner' =>'20********50', //Alipay インターフェースへの申請に成功した後に取得した PID は次のとおりです 'key'=>'9t****************ie',//これが、Alipay インターフェースへの申請に成功した後に取得したキーです
'sign_type'=>strtoupper('MD5'),
'input_charset'=> strto lower('utf-8')、
'cacert'=> getcwd().'\cacert.pem',
'トランスポート'=>'http'、
; )、
//上記の設定項目は、インターフェース パッケージの alipay.config.php ファイルからコピーされ、設定されます

'alipay' =>array(
//これが販売者の Alipay アカウントです。これは、インターフェースの申請時に登録した Alipay アカウントです
'seller_email'=>'pay@xxx.com'、

//これは、プロジェクトの Pay コントローラーの notifyurl メソッドに送信される非同期通知ページの URL です。 'notify_url'=>'http://www.xxx.com/Pay/notifyurl',

//これは、プロジェクトの Pay コントローラーの returnurl メソッドに送信されるページ ジャンプ通知 URL です。 'return_url'=>'http://www.xxx.com/Pay/returnurl',

// 支払いが成功した後にジャンプするページ。プロジェクトの User コントローラー、myorder メソッドにジャンプし、パラメーター Payed (有料リスト) を渡します。 'successpage'=>'User/myorder?ordtype=payed',

//支払いが失敗した場合にジャンプするページ プロジェクトのユーザーコントローラー myorder メソッドにジャンプし、パラメーター unpay (未払いリスト) を渡します。 'errorpage'=>'User/myorder?ordtype=unpay',
)、

2. 次のように新しい PayAction コントローラー コードを作成します
コードをコピーします コードは次のとおりです:
クラス PayAction は Action{
を拡張します //クラスの初期化メソッドで、関連するクラスライブラリを導入します パブリック関数 _initialize() {
ベンダー('Alipay.Corefunction'); ベンダー('Alipay.MD5関数'); ベンダー('Alipay.通知'); ベンダー('Alipay.送信'); }

//doalipayメソッド
                                            パブリック関数 doalipay(){
                                               // require_once("alipay.config.php"); // require_once("lib/alipay_submit.class.php");                                        //ここでは、TP の C 関数を通じて設定項目パラメータを読み取り、それらを $alipay_config に割り当てます
; $alipay_config=C('alipay_config');

                                           
$payment_type = "1" //支払いタイプ //必須、変更できません
; $notify_url = C('alipay.notify_url') // サーバーの非同期通知ページのパス
$return_url = C('alipay.return_url') // ページジャンプ同期通知ページのパス
; $seller_email = C('alipay.seller_email');//販売者の Alipay アカウントが必要です
$out_trade_no = $_POST['trade_no']; // 販売者の注文番号は支払いページのフォームから渡されます。必ず一意にしてください。
$subject = $_POST['ordsubject']; //注文名 //必須 支払いページのフォームを通過します
$total_fee = $_POST['ordtotal_fee']; //支払い金額 //必須 支払いページのフォームを通過します
$body = $_POST['ordbody'] // 注文の説明は支払いページのフォームから渡されます
; $show_url = $_POST['ordshow_url']; //商品表示アドレスは支払いページのフォームから渡されます
$anti_phishing_key = "";//フィッシング対策タイムスタンプ //使用したい場合は、クラスファイル submit で query_timestamp 関数を呼び出してください
$exter_invoke_ip = get_client_ip() //クライアントの IP アドレス
;
//リクエストされるパラメータ配列を構築します。変更は必要ありません
$parameter = array(
"サービス" => "create_direct_pay_by_user",
"パートナー" => トリム($alipay_config['パートナー']),
"支払い_タイプ" => $支払い_タイプ、
; "notify_url" => $notify_url、
"return_url" => $return_url、
"seller_email" => $seller_email、
"out_trade_no" => $out_trade_no、
"件名" => $件名、
"total_fee" => $total_fee、
"本体" "本体" => $本体,
"show_url" => $show_url、
"anti_phishing_key" => $anti_phishing_key、
"exter_invoke_ip" => $exter_invoke_ip,
"_input_charset" => トリム(strto lower($alipay_config['input_charset']))
); //リクエストを作成する
$alipaySubmit = 新しい AlipaySubmit($alipay_config); $html_text = $alipaySubmit->buildRequestForm($parameter,"投稿", "確認"); $html_text をエコーし​​ます。 }
                                            関数notifyurl(){
                                                                     //require_once("alipay.config.php"); //require_once("lib/alipay_notify.class.php");                                                                     //ここでも C 関数を使用して設定項目を読み取り、$alipay_config に割り当てます
$alipay_config=C('alipay_config');
//通知検証結果を計算する
$alipayNotify = 新しい AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify();
If($verify_result) {
//検証に成功しました
//Alipay の通知リターン パラメーターを取得します。技術ドキュメントのサーバー非同期通知パラメーター リストを参照してください
使用されなければならなかったのは残念                                                                                                                                                 $ Trade_status = $ _post ['trade_status'] // $ total_fee $ Notify_id = $ _post ['notify_id'] // 認証IDを通知します。
$ Notify_time = $ _post ['notify_time'] // 通知の送信時刻。形式は yyyy-MM-dd HH:mm:ss です。
$ buyer_email                                             "out_trade_no" => $out_trade_no, // 販売者の注文番号; "trade_no" => $trade_no, //Alipay 取引番号; "total_fee" => $total_fee, //取引金額
; "trade_status" => $trade_status, //取引ステータス
"notify_id" => $notify_id, //通知検証ID。
"notify_time" => $notify_time, //通知の送信時刻。
"buyer_email" => $buyer_email, //購入者の Alipay アカウント; );If($_POST['trade_status'] == 'TRADE_FINISHED') {
                                                                                                                                                                                                                                                                                             オーダーハンドル($パラメータ); // 注文を実行し、Alipay から返されたパラメータを送信します。                                                                                                                                                                                「成功」をエコーし​​ます。                                                                                     //検証に失敗しました
echo "失敗";                                                                        }

関数 returnurl(){
//頭の処理は上記の2つの方法と同じであり、ここではこれ以上冗長性はありません!
$alipay_config=C('alipay_config'); $alipayNotify = new AlipayNotify($alipay_config);//通知検証結果を計算します
$verify_result = $alipayNotify->verifyReturn(); If($verify_result) {
//検証に成功しました
//Alipay の通知リターン パラメーターを取得するには、技術ドキュメントのページ ジャンプ同期通知パラメーター リストを参照してください
$ out_trade_no $trade_no = $_GET['trade_no'] //Alipay 取引番号
; $trade_status = $total_fee = $_GET['total_fee']; $notify_id = $_GET['notify_id ']
$ Notify_time = $ _get ['notify_time'] // 通知の送信時刻。
$buyer_email = $_GET['buyer_email'] //購入者の Alipay アカウント;                                                 $parameter = array(
"out_trade_no" => $out_trade_no, // 販売者の注文番号; "trade_no" => $trade_no, //Alipay 取引番号; "total_fee" => $total_fee, //取引金額
; "trade_status" => $trade_status, //取引ステータス
"notify_id" => $notify_id, "認証 ID を通知します。"
"notify_time" => $notify_time, //通知の送信時刻。
"buyer_email" => $buyer_email, //購入者の Alipay アカウント
);                                             if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
if(!checkorderstatus($out_trade_no)){
orderhandle($parameter); // 注文を処理し、Alipay から返されたパラメーターを送信します。 }
$this->redirect(C('alipay.successpage'));//設定項目で設定された支払い成功ページにジャンプします
}その他{
エコー "trade_status=".$_GET['trade_status']
$this->redirect(C('alipay.errorpage'));//設定項目で設定された支払い失敗ページにジャンプします
}
}その他{
//検証に失敗しました
//デバッグしたい場合は、alipay_notify.php ページの verifyReturn 関数を参照してください
エコー「支払いに失敗しました!」
}
}
}
?>

3. ここでは、支払い処理プロセスで使用する必要があるいくつかの関数をプロジェクトの Common/common.php に記述しました。これにより、これらの関数を手動で呼び出すことなく直接使用できるようになります。コードは次のとおりです。

コードをコピーします
コードは次のとおりです://ユーザーの注文書レコードを保存するために使用される Orderlist データ テーブル //オンライン取引注文決済処理機能
//機能: 支払いインターフェースから返されたデータに基づいて、注文が正常に支払われたかどうかを判断します
//戻り値: 注文が正常に支払われた場合は true を返し、それ以外の場合は false を返します
; 関数 checkorderstatus($ordid){
$Ord=M('注文リスト'); $ordstatus=$Ord->where('ordid='.$ordid)->getField('ordstatus'); If($ordstatus==1){
true を返します
}その他{
false を返します。 }
}

//注文関数の処理
//注文ステータスを更新し、注文の支払い後に返されたデータを書き込みます
関数オーダーハンドル($parameter){
$ordid=$parameter['out_trade_no']
$data['payment_trade_no'] =$parameter['trade_no']
$data['payment_trade_status'] =$parameter['trade_status']
$data['payment_notify_id'] =$parameter['notify_id']
$data['支払い通知時刻'] =$parameter['通知時刻']
$data['支払い_購入者_メールアドレス'] =$パラメータ['購入者_メールアドレス']
$data['ordstatus'] =1; $Ord=M('注文リスト'); $Ord->where('ordid='.$ordid)->save($data); }

// ランダムで一意の注文番号を取得します
関数 getordcode(){
$Ord=M('注文リスト'); $numbers = 範囲 (10,99)
; シャッフル ($numbers); $code=array_slice($numbers,0,4); $ordcode=$code[0].$code[1].$code[2].$code[3]; $oldcode=$Ord->where("ordcode='".$ordcode."'")->getField('ordcode'); If($oldcode){
getordcode(); }その他{
戻り $ordcode; }
}

4. まとめポイント

1. インターフェイス パッケージ内の lib ファイル内のファイルを Vendor にコピーした後、呼び出しの便宜のために、それらの名前を TP 仕様の命名規則に変更します。

2. 支払い操作の実行 (doalipay)、非同期返品結果の処理 (notifyurl)、およびジャンプ返品結果の処理 (returnurl) の 3 つの支払いインターフェイスのコア ページを PayAction コントローラーに書き込みます。

3. 支払い送信ページでは、送信前に隠しフィールド メソッドで渡すいくつかのパラメーターを組み合わせることができます。たとえば、最初に金額が計算され、注文名、注文の説明などが文字列と結合されます。このように、doalipay メソッドでは、パラメーターを直接作成して渡し、直接送信するだけです。

4. 支払いが戻った後の処理は、非同期メソッドとジャンプメソッドの両方で対応する判断と処理が必要になるため、これらの判断と処理をカスタム関数に記述し、関数を呼び出すだけで済むようになります。

5. Notice_url モードと return_url モードの戻り URL は、http://xxxxxxx などの絶対パスを使用する必要があります。これは、これらの URL は Alipay プラットフォームからプロジェクト ページに返され、相対パスは使用できないためです。

上記のコードはThinkPHP3.0で正常に動作します! !

この記事で説明した内容が、皆様の ThinkPHP フレームワーク プログラミングに役立つことを願っています。

http://www.bkjia.com/PHPjc/920605.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/920605.html技術記事 ThinkPHP による Alipay インターフェース関数の実装例、thinkphp の例 この記事では、ThinkPHP による Alipay インターフェース関数の実装方法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Bitget WalletからAlipayにお金を引き出す方法 Bitget WalletからAlipayにお金を引き出す方法 Sep 04, 2024 pm 07:25 PM

BitgetWallet を使用して Alipay にお金を引き出す手順は次のとおりです。 BitgetWallet を開いてパスワードを入力するか、指紋を使用してロックを解除します。 「引き出し」をクリックして暗号通貨を選択します。 Alipay 情報を入力し、支払い口座番号と金額を入力します。ネットワークの選択 Alipay の支払い方法に一致するネットワークを選択します。手数料設定 手数料金額を確認し、承諾します。検査情報を確認して送信し、「確認」をクリックします。確認待ちはブロックチェーンネットワークによる検証を待ちます。受け取った資金の出金は、Alipay 支払いアカウントに入金されます。

PHPを使用してAlipay EasySDKを呼び出すときの「未定義の配列キー」「サイン」「エラー」の問題を解決する方法は? PHPを使用してAlipay EasySDKを呼び出すときの「未定義の配列キー」「サイン」「エラー」の問題を解決する方法は? Mar 31, 2025 pm 11:51 PM

問題の説明公式コードに従ってパラメーターを記入した後、PHPを使用してAlipay EasySDKを呼び出すとき、操作中にエラーメッセージが報告されました。

OKXトレーディングプラットフォームの取り扱い料金のリスト OKXトレーディングプラットフォームの取り扱い料金のリスト Feb 15, 2025 pm 03:09 PM

OKXトレーディングプラットフォームは、取引手数料、引き出し料金、資金調達料金など、さまざまな料金を提供しています。スポットトランザクションの場合、取引手数料はトランザクションのボリュームとVIPレベルによって異なり、「マーケットメーカーモデル」を採用します。つまり、市場はトランザクションごとに低いハンドリング料金を請求します。さらに、OKXは、通貨標準契約、USDT契約、配送契約など、さまざまな先物契約も提供しており、各契約の料金構造も異なります。

ThinkPhp6ルーティング:中国語などの特殊文字を含むURLパラメーターを完全に取得する方法は? ThinkPhp6ルーティング:中国語などの特殊文字を含むURLパラメーターを完全に取得する方法は? Apr 01, 2025 pm 02:51 PM

ThinkPhp6ルーティングパラメーターは、中国と完全な買収で処理されます。 ThinkPhp6フレームワークでは、特殊文字(中国語や句読点など)を含むURLパラメーターがしばしば処理されます...

ThinkPHP6およびElasticSearch-PHPクライアントを使用してElasticSearch 8に接続するときのCurlエラー77の問題を解決する方法? ThinkPHP6およびElasticSearch-PHPクライアントを使用してElasticSearch 8に接続するときのCurlエラー77の問題を解決する方法? Mar 31, 2025 pm 11:36 PM

Elasticsearch-PHPクライアントと組み合わせてElasticsearchを操作するThinkPhp6フレームワークを使用して...

OUYI Exchange App国内ダウンロードチュートリアル OUYI Exchange App国内ダウンロードチュートリアル Mar 21, 2025 pm 05:42 PM

この記事では、中国のOUYI OKXアプリの安全なダウンロードに関する詳細なガイドを提供します。国内のアプリストアの制限により、ユーザーはOUYI OKXの公式Webサイトからアプリをダウンロードするか、公式Webサイトが提供するQRコードを使用してスキャンおよびダウンロードすることをお勧めします。ダウンロードプロセス中に、公式Webサイトのアドレスを確認し、アプリケーションの許可を確認し、インストール後にセキュリティスキャンを実行し、2要素の検証を有効にしてください。 使用中は、地方の法律や規制を遵守し、安全なネットワーク環境を使用し、アカウントのセキュリティを保護し、詐欺に対して警戒し、合理的に投資してください。 この記事は参照のみであり、投資のアドバイスを構成していません。

セサミオープンドアログイン登録登録ゲート。io交換登録公式ウェブサイトの入り口 セサミオープンドアログイン登録登録ゲート。io交換登録公式ウェブサイトの入り口 Mar 04, 2025 pm 04:51 PM

Gate.io(Sesame Open Door)は、世界をリードする暗号通貨取引プラットフォームです。このチュートリアルでは、アカウントの登録とログイン、KYC認定、FIAT通貨とデジタル通貨充電、取引ペアの選択、制限/市場取引注文、注文およびトランザクションレコードの表示などの手順を把握しているため、暗号通貨取引のためのgate.ioプラットフォームを迅速に開始できます。 初心者であろうとベテランであろうと、このチュートリアルから利益を得て、gate.ioの取引スキルを簡単に習得できます。

See all articles