この記事は、TP5 が Alipay コンピューター ウェブサイト決済を実装する方法の例を紹介します。これには一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。
過去 2 日間、社内で小さな WEB プロジェクトに取り組んでおり、支払い機能が必要です。 Alipayでの支払いは初めてだったので、いくつか落とし穴もありましたが、かなりスムーズでした。興奮した私は、実装プロセスをすぐに書き留めました。
最初のステップはもちろん、Alipay オープンプラットフォーム上で公開鍵秘密鍵 APPID などを申請することですが、Alipay 公式ドキュメントに詳しい紹介があるのでここでは省略します。
アプリケーションが完了すると、開発者の実装プロセスが開始されます。まず、Alipay の公式 DEMO をダウンロードします。Web サイトは https://docs.open.alipay.com/... 初心者向けに、カプセル化された関数があるため、SDK の代わりに公式 DEMO をダウンロードすることをお勧めします。そのまま使えるDEMOです、変更したい場合にそのまま使えばより親切です。将来、技術が向上すれば、また SDK で遊べるようになるでしょう。
#私は PHPer なので、もちろん PHP バージョンを選択します。ダウンロード後のデフォルト名は alipay.trade.page.pay-PHP-UTF-8 ですが、alipay に変更することをお勧めします。
TP5 を使用して開発しているため、プロジェクトのルート ディレクトリ下の外部リソース パッケージのベンダー ディレクトリに配置します。
## 下の図に示すように、オンラインの先輩の書き方を参考にして TP5 メソッドに変更しました。
3 つの必須項目:
があることを強調します。これら 3 つのうちどれかが欠落している場合は、いずれかがエラーを報告します。最初は頭がクラクラしていたので、注文名を削除したらエラーが出ました...
ここまで書き終えた後、alipayのルートディレクトリにあるconfig.phpで各種パラメータを設定します。この項目の設定は重要です。間違っていると、販売者は支払いを受け取ることができなくなります...ここでは、ID、秘密キー、非同期アドレス、同期アドレス、公開キーを使用して、愚か者向けのフォームに記入する方法を示します。この 6 項目は正確に入力する必要があります。 TP5を使用しているため、通知アドレスをTP5のmodule/controller/methodに変更しました Alipayゲートウェイは変更しないでください。サンドボックス環境の場合は「https://openapi」に変更する必要があります。 alipaydev.com/gateway.do」には「dev」が追加されていますが、実際の環境を使用しているので変更する必要はありません。
非同期アドレスと同期アドレスについてもう一度話しましょう。初心者はそれらが何に使われるのか絶対に知りません。上司はそれらを読み飛ばして構いません。これら 2 つのメソッドは、Alipay の支払いが成功した後に実行され、システムは POST メソッドを使用して支払い情報をメソッドに非同期的に送信します。非同期なのでページは切り替わりませんが、「ガンマンになるな、静かに村に入れ…」の諺の通り、非同期メソッドで独自のビジネスロジックを記述することができます。たとえば、値を受信してデータベースに保存します。
ここには大きな落とし穴があり、2 日間私を悩ませました
つまり、セッションを使用して非同期メソッドの値を取得することはできません、私はもともとセッションを使用したかったのですユーザーのログイン 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 サイトの他の関連記事を参照してください。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

メモ帳++7.3.1
使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版
便利なJavaScript開発ツール
