首頁 後端開發 php教程 TP5實現支付寶電腦網站支付的範例介紹

TP5實現支付寶電腦網站支付的範例介紹

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

這篇文章帶給大家的內容是關於TP5實現支付寶電腦網站支付的範例介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

這兩天在公司做一個小型WEB專案,需要有支付功能。第一次做支付寶的支付,踩了點小坑,還算順利。激動的我趕緊記下實現的流程。
第一步當然是在支付寶開放平台申請公鑰私鑰APPID等,支付寶關官方文件都有詳細介紹,這裡就省略。
申請完了下面開始開發者的實作流程。首先是下載支付寶的官方DEMO,網址是https://docs.open.alipay.com/... 這裡建議下載官方的DEMO而不是SDK,因為對新手來說DEMO裡有封裝好的函數可以直接拿來改改就用,比較友善。以後技術提升了,再拿SDK玩玩。

TP5實現支付寶電腦網站支付的範例介紹

因為我是PHPer,當然選擇PHP版。下載好之後預設名字是alipay.trade.page.pay-PHP-UTF-8,建議改名字為alipay即可。
因為我是用TP5開發,所以放到專案根目錄下的外部資源包vendor目錄。

TP5實現支付寶電腦網站支付的範例介紹

放進去之後,找到alipay目錄下pagepay目錄下的pagepay.php文件,這便是阿里官方提供的付款方法範例,

TP5實現支付寶電腦網站支付的範例介紹

我學著網路上一位學長的寫法改了一下放到TP5的方法中,見下圖:

TP5實現支付寶電腦網站支付的範例介紹

走到這裡如果順利,便會出現支付寶的二維碼頁面。我這裡因為客戶重新申請權限所以沒辦法截圖了。就是那個支付寶二維碼的頁面。掃碼支付,便會跳到付款成功頁面,最後會跳到你自訂的同步跳轉位址。

價格由前台表單傳值即可,這裡強調有三個必填項:訂單號碼、訂單名稱、付款金額,這三個缺哪一個都會報錯。我剛開始腦袋發暈,把訂單名稱去掉了,結果報錯了...
這裡寫完之後,便去config.php配置各項參數,config.php在alipay的根目錄下,配置這一項至關重要。如果錯了,商家可是收不到款的噢...
這裡是傻瓜填法,應用ID、私鑰、非同步地址、同步地址、公鑰。這6項必須填正確。因為我是用的TP5,所以通知地址那裡我改成了TP5的寫法,模組/控制器/方法.
支付寶網關那裡不要更改,如果是沙箱環境,需要改成"https://openapi .alipaydev.com/gateway.do" 多了個"dev",因為我是真實環境,所以就不用更改。

TP5實現支付寶電腦網站支付的範例介紹

這裡再說一下非同步和同步位址,新人一定不知道有什麼用,大佬略過即可。支付寶支付成功後會執行這兩個方法,系統會把你支付的資訊用POST方式異步傳給你的方法。因為是異步,所以頁面是沒有變化的,所謂"打槍的不要,悄悄地進村..."在異步這個方法裡可以寫你自己的業務邏輯。例如接收值,存入資料庫之類。 這裡有個大坑,坑了我兩天即在非同步方法裡是沒法用session取值的,我原本想用session取用戶登入id存入資料庫中,後來問了師傅才知道,異步是伺服器和伺服器之間的交互,所以沒有cookieId,沒有cookieId當然沒有session值。對這裡不懂的童鞋可以複習下session基礎知識,慚愧,我居然把這麼基礎的東西忘了...由此可知,同步方法是可以取session的,因為是服務器和客戶端的交互。如果對此沒概念,可以在非同步方法接收參數後轉成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属性设置。出了问题可以在日志里查看。

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

以上是TP5實現支付寶電腦網站支付的範例介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP的目的:構建動態網站 PHP的目的:構建動態網站 Apr 15, 2025 am 12:18 AM

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP:處理數據庫和服務器端邏輯 PHP:處理數據庫和服務器端邏輯 Apr 15, 2025 am 12:15 AM

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

HTML:結構,CSS:樣式,JavaScript:行為 HTML:結構,CSS:樣式,JavaScript:行為 Apr 18, 2025 am 12:09 AM

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

為什麼要使用PHP?解釋的優點和好處 為什麼要使用PHP?解釋的優點和好處 Apr 16, 2025 am 12:16 AM

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

See all articles