ホームページ バックエンド開発 PHPチュートリアル Alipayコンピュータウェブ決済を実現するためのTP5の導入例

Alipayコンピュータウェブ決済を実現するためのTP5の導入例

Feb 28, 2019 am 11:43 AM
css html javascript php

この記事は、TP5 が Alipay コンピューター ウェブサイト決済を実装する方法の例を紹介します。これには一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。

過去 2 日間、社内で小さな WEB プロジェクトに取り組んでおり、支払い機能が必要です。 Alipayでの支払いは初めてだったので、いくつか落とし穴もありましたが、かなりスムーズでした。興奮した私は、実装プロセスをすぐに書き留めました。
最初のステップはもちろん、Alipay オープンプラットフォーム上で公開鍵秘密鍵 APPID などを申請することですが、Alipay 公式ドキュメントに詳しい紹介があるのでここでは省略します。
アプリケーションが完了すると、開発者の実装プロセスが開始されます。まず、Alipay の公式 DEMO をダウンロードします。Web サイトは https://docs.open.alipay.com/... 初心者向けに、カプセル化された関数があるため、SDK の代わりに公式 DEMO をダウンロードすることをお勧めします。そのまま使えるDEMOです、変更したい場合にそのまま使えばより親切です。将来、技術が向上すれば、また SDK で遊べるようになるでしょう。

Alipayコンピュータウェブ決済を実現するためのTP5の導入例

#私は PHPer なので、もちろん PHP バージョンを選択します。ダウンロード後のデフォルト名は alipay.trade.page.pay-PHP-UTF-8 ですが、alipay に変更することをお勧めします。
TP5 を使用して開発しているため、プロジェクトのルート ディレクトリ下の外部リソース パッケージのベンダー ディレクトリに配置します。

Alipayコンピュータウェブ決済を実現するためのTP5の導入例

#これを入れたら、alipay ディレクトリの下の pagepay ディレクトリにある pagepay.php ファイルを見つけます。これは Ali が公式に提供している支払い方法の例です。

Alipayコンピュータウェブ決済を実現するためのTP5の導入例## 下の図に示すように、オンラインの先輩の書き方を参考にして TP5 メソッドに変更しました。

ここに正常にアクセスすると、Alipay QR コード ページが表示されます。お客様が再度許可を申請したため、ここでスクリーンショットを撮ることはできません。 AlipayのQRコードページです。 QR コードをスキャンして支払いを行うと、支払い成功ページにジャンプし、最後にカスタマイズした同期ジャンプ アドレスにジャンプします。

価格はフロントデスクのフォームから入力できます。ここでは、

3 つの必須項目Alipayコンピュータウェブ決済を実現するためのTP5の導入例:

注文番号、注文名、支払い金額

があることを強調します。これら 3 つのうちどれかが欠落している場合は、いずれかがエラーを報告します。最初は頭がクラクラしていたので、注文名を削除したらエラーが出ました...

ここまで書き終えた後、alipayのルートディレクトリにあるconfig.phpで各種パラメータを設定します。この項目の設定は重要です。間違っていると、販売者は支払いを受け取ることができなくなります...

ここでは、ID、秘密キー、非同期アドレス、同期アドレス、公開キーを使用して、愚か者向けのフォームに記入する方法を示します。この 6 項目は正確に入力する必要があります。 TP5を使用しているため、通知アドレスをTP5のmodule/controller/methodに変更しました Alipayゲートウェイは変更しないでください。サンドボックス環境の場合は「https://openapi」に変更する必要があります。 alipaydev.com/gateway.do」には「dev」が追加されていますが、実際の環境を使用しているので変更する必要はありません。

非同期アドレスと同期アドレスについてもう一度話しましょう。初心者はそれらが何に使われるのか絶対に知りません。上司はそれらを読み飛ばして構いません。これら 2 つのメソッドは、Alipay の支払いが成功した後に実行され、システムは POST メソッドを使用して支払い情報をメソッドに非同期的に送信します。非同期なのでページは切り替わりませんが、「ガンマンになるな、静かに村に入れ…」の諺の通り、非同期メソッドで独自のビジネスロジックを記述することができます。たとえば、値を受信して​​データベースに保存します。
ここには大きな落とし穴があり、2 日間私を悩ませました

つまり、セッションを使用して非同期メソッドの値を取得することはできませんAlipayコンピュータウェブ決済を実現するためのTP5の導入例、私はもともとセッションを使用したかったのですユーザーのログイン ID を取得してデータベースに保存します。後でマスターに尋ねたところ、非同期はサーバーとサーバー間の対話であるため、cookieId はなく、もちろん cookieId のないセッション値も存在しないことがわかりました。分からない人はここでセッションの基礎知識をおさらいしてください 恥ずかしながら基本的なことを忘れていました… このことから、同期方式でセッションを取得できることがわかります。サーバーとクライアント間の対話。よくわからない場合は、非同期メソッドでパラメータを受け取った後、パラメータを JSON 形式に変換し、file_put_contents() 関数を使用してメモ帳に書き込んで確認してください。

例:

{
"gmt_create":"xxxxxxxx",//订单创建时间
"charset":"UTF-8",
"gmt_payment":"xxxxxxxx", //付款时间
"notify_time":"xxxxx",   //异步回调时间
"subject":"XXXXX",     //订单名称
"sign":"xxxxxxxxxxxxxxxxxxx",
"buyer_id":"xxxxxxxx",
"invoice_amount":"xxxxx",
"version":"1.0",
"notify_id":"xxxxxxxxx",
"fund_bill_list":"[{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]",
"notify_type":"trade_status_sync",
"out_trade_no":"xxxxxxxx", //订单号
"total_amount":"0.01",
"trade_status":"TRADE_SUCCESS", //success代表支付成功,商家会收到钱
"trade_no":"xxxxxx", //支付宝流水号
"auth_app_id":"xxxxxxxx",
"receipt_amount":"0.01",
"point_amount":"0.00",
"app_id":"xxxxxxxxx",
"buyer_pay_amount":"0.01",
"sign_type":"RSA2",
"seller_id":"xxxxxxxxxxxxx"
}
ログイン後にコピー
重要なものはすべてコメントアウトしました。その他の不明なパラメーターについては、公式ドキュメントで確認できます。 同期メソッドは、名前が示すように、ページ同期ジャンプ、つまり顧客が表示できるページのアドレスです。ここで、支払いが成功したことをユーザーに促すテキストなどをカスタマイズできます。 次に、非同期メソッドと同期メソッドの作成方法の例を示します:
/**
异步同步示例
*/
class alipay extends Controller {
/**
 * 异步方法
 * @return [void] 
 */
public function notify(){
    $post = input();
    if($post['trade_status'] == "TRADE_SUCCESS"){
        //操作数据库 修改状态
        echo "SUCCESS";//返回给支付宝成功 ,不返回这个  字符 ,支付宝定时 回调这个方法 时间 5   10   30/m  1小时 成功为止
    }
    //写在文本里看一下参数
    $data = json_encode($post);
    file_put_contents("alipaytext.txt",$data);
}

/**
 * 同步方法
 * @return [type] [description]
 */
public function returnfy(){
    //同步跳转地址
    return $this->fetch();
}
}
ログイン後にコピー

这里面重要的是需要在异步方法里判断trade_status字段,如果等于"TRADE_SUCCESS"即支付成功,后面必须echo返回一个"SUCCESS",否则支付宝会认为你没有付款成功,而在24小时内定时回调这个方法。实际业务逻辑根据你的需求来比如存入订单表等等,当然不会这么简单,最好加一些验证。为了安全。下面是前台代码示例:

{include file="public/header"}
<!-- HEADER END -->
<!-- CONTENT BEGIN -->
<div>
    <div>
        <div>
            <div>    
                <form>
                商户订单号:<input><br>
                订单名称:<input><br>
                付款金额:<input><br>
                商品描述:<input><br>
                <button>付 款</button>
            </form>

            </div>
            {include file="public/right"}

            <div></div>
            <div></div>
        </div>
    </div>
</div>
<!-- CONTENT END -->

<!-- FOOTER BEGIN -->
{include file="public/tail"}
ログイン後にコピー

最后补上一句:日志文件一定要开启写权限,否则无法自动写入。即在alipay文件夹下右键log.txt属性设置。出了问题可以在日志里查看。

走到这里,流程就基本介绍完了。欢迎各位大佬拍砖指导。做完支付,会感觉自己又上了一个台阶!

以上がAlipayコンピュータウェブ決済を実現するためのTP5の導入例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

VueでBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

ブートストラップにスプリットラインを書く方法 ブートストラップにスプリットラインを書く方法 Apr 07, 2025 pm 03:12 PM

ブートストラップスプリットラインを作成するには2つの方法があります。タグを使用して、水平方向のスプリットラインを作成します。 CSS Borderプロパティを使用して、カスタムスタイルのスプリットラインを作成します。

ブートストラップに写真を挿入する方法 ブートストラップに写真を挿入する方法 Apr 07, 2025 pm 03:30 PM

ブートストラップに画像を挿入する方法はいくつかあります。HTMLIMGタグを使用して、画像を直接挿入します。ブートストラップ画像コンポーネントを使用すると、レスポンシブ画像とより多くのスタイルを提供できます。画像サイズを設定し、IMG-Fluidクラスを使用して画像を適応可能にします。 IMGボーダークラスを使用して、境界線を設定します。丸い角を設定し、IMGラウンドクラスを使用します。影を設定し、影のクラスを使用します。 CSSスタイルを使用して、画像をサイズ変更して配置します。背景画像を使用して、背景イメージCSSプロパティを使用します。

ブートストラップのサイズを変更する方法 ブートストラップのサイズを変更する方法 Apr 07, 2025 pm 03:18 PM

Bootstrapの要素のサイズを調整するには、次のものを含むDimensionクラスを使用できます。

ブートストラップのフレームワークをセットアップする方法 ブートストラップのフレームワークをセットアップする方法 Apr 07, 2025 pm 03:27 PM

Bootstrapフレームワークをセットアップするには、次の手順に従う必要があります。1。CDNを介してブートストラップファイルを参照してください。 2。独自のサーバーでファイルをダウンロードしてホストします。 3。HTMLにブートストラップファイルを含めます。 4.必要に応じてSASS/LESSをコンパイルします。 5。カスタムファイルをインポートします(オプション)。セットアップが完了したら、Bootstrapのグリッドシステム、コンポーネント、スタイルを使用して、レスポンシブWebサイトとアプリケーションを作成できます。

どのようにしてクラスが拡張されたり、PHPでメソッドがオーバーライドされたりするのを防ぐことができますか? (最終キーワード) どのようにしてクラスが拡張されたり、PHPでメソッドがオーバーライドされたりするのを防ぐことができますか? (最終キーワード) Apr 08, 2025 am 12:03 AM

PHPでは、最終的なキーワードを使用して、クラスが継承されないようにし、メソッドが上書きされます。 1)クラスを決勝としてマークする場合、クラスを継承することはできません。 2)メソッドを最終的にマークする場合、メソッドはサブクラスによって書き換えられません。最終的なキーワードを使用すると、コードの安定性とセキュリティが保証されます。

ブートストラップボタンの使用方法 ブートストラップボタンの使用方法 Apr 07, 2025 pm 03:09 PM

ブートストラップボタンの使用方法は?ブートストラップCSSを導入してボタン要素を作成し、ブートストラップボタンクラスを追加してボタンテキストを追加します

See all articles