最近工作原因需要使用支付寶支付,所以總結了下支付寶支付介面如何在thinkphp當中使用。
alipay.config.php是相關引數的配置檔案
alipayapi.php 是支付寶介面入口檔案
notify_url.php 是伺服器非同步通知頁面檔案;
return_url.php 是頁面跳轉同步通知檔案;
上面的index.php檔案為這個demo的入口檔案,可以忽略。
好了,檔案目錄介面就是這個樣子,在實際放置在thinkphp框架之內使用之前,我先介紹下這個即時到賬介面的整個工作流程,因為只有知道了整個即時到賬介面的整個流程然後在防置在thinkphp框架當中也就變得容易很多:
首先呢,當使用者訪問該demo中的index.php檔案時,就等於在呼叫支付寶介面的開始,實際頁面的效果就是跳轉到支付寶支付的頁面當中,當支付完成之後支付寶會返回支付成功的狀態和相應的資料。而返回狀態的方式分為兩種,跳轉返回和非同步返回,這兩個說白了就是前者通過get傳值後者通過post傳值,之所以用這兩個返回是因為防止使用者再支付時發生的一些意外導致支付不能正常進行,最後造成使用者損失這樣肯定也就是不行的了。當跳轉返回失敗時候 還可以有非同步返回的方式,保證支付狀態傳遞的穩定。當進行返回值傳遞之後支付寶會按照使用者設定的**來跳轉回商戶的**,這裡要特別的說一下,這上面說的條轉回**一定要絕對路徑形式,因為說白了咱們要實現的跳轉是從支付寶跳到咱們自己的**之中。好了,到此支付寶介面的基本呼叫流程已經全部說完,下面要做的就是和thinkphp整合:
其次再真正弄之前我先說一下整合到thinkphp的具體思路:首先呢thinkphp是物件導向的,然而支付寶給出的介面卻是面向過程的,所以我們要做的就是把面向過程的方法轉成物件導向就可以了。ok基本思路已經搞定,下面咱們就開搞:(我這裡使用的是thinkphp3.0 其中並沒有最新的命名空間用法,所以有使用thinkphp最新框架的朋友記得別忘記命名空間這個東東)
然後,開啟submit.php檔案,把以下**去掉;
require_once
("alipay_core.function.php"
);require_once
("alipay_md5.function.php"
);同樣,開啟notify.php檔案,把以下兩段**去掉
require_once
("alipay_core.function.php"
);require_once
("alipay_md5.function.php"
); 這裡我解釋下為什麼要去掉這兩句話,因為咱們實現的最終的目的是放在thinkphp框架之中使用,所以當使用支付寶的介面時候使用
vendor來進行引入即可,所以並不需要在進行引入。
下面開啟thinkphp的config.php檔案 將以下**複製到裡面即可
//支付寶配置引數
'alipay_config'
=>
array
('partner'
=>
'pid'
,//這裡是你在成功申請支付寶介面後獲取到的pid;
'key'
=>
'key'
,//這裡是你在成功申請支付寶介面後獲取到的key
//以上配置項,是從界麵包中alipay.config.php 檔案中複製過來,進行配置;
'alipay'
=>
array
(//這裡是賣家的支付寶賬號,也就是你申請介面時註冊的支付寶賬號
'seller_email'
=>
'支付寶賬號'
,//這裡是非同步通知頁面url,提交到專案的支付控制器的notifyurl方法;(記住這裡要是外鏈)
'notify_url'
=>
'支付控制器名/notifyurl'
,//這裡是頁面跳轉通知url,提交到專案的支付控制器的returnurl方法;(這裡同樣是外鏈)
'return_url'
=>
'支付控制器名/returnurl'
,//支付成功跳轉到的頁面,這裡是支援傳值
'successpage'
=>
'控制器/方法?傳值=值'
,//支付失敗跳轉到的頁面,
'errorpage'
=>
'控制器/方法?傳值=值',),
新建乙個支付控制器我這裡就是新建乙個payaction(最新版本的注意不是action)**如下:
phpclass
payaction
extends
action
//doalipay方法
/*該方法其實就是將介面檔案包下alipayapi.php的內容複製過來
然後進行相關處理
*/public
function
doalipay
()/******************************
伺服器非同步通知頁面方法
其實這裡就是將notify_url.php檔案中的**複製過來進行處理
*******************************/
function
notifyurl
()elseif(
$_post
['trade_status']==
'trade_success')}
echo
"success"
;//請不要修改或刪除
}else}/*
頁面跳轉處理方法;
這裡其實就是將return_url.php這個檔案中的**複製過來,進行處理;
*/function
returnurl
()$this
->
redirect(c
('alipay.successpage'
));//跳轉到配置項中配置的支付成功頁面;
}else
}else}}
?>
我在上面使用了兩個處理函式
//函式功能:根據支付介面傳回的資料判斷該訂單是否已經支付成功;
//返回值:如果訂單已經成功支付,返回true,否則返回false;
function
checkorderstatus
($ordid
)else
}//處理訂單函式
//更新訂單狀態,寫入訂單支付後返回的資料
function
orderhandle
($parameter
)
thinkphp支付寶手機支付流程提示
統一下單 public function pay 商戶訂單號,商戶 訂單系統中唯一訂單號,必填 out trade no date ymd rand 1000,9999 substr implode null,array map ord str split substr uniqid 5,13 1 ...
支付寶支付
1 呼叫支付寶介面 具體 i 呼叫alipaysubmit.buildrequestpara 方法生成要請求給支付寶的引數陣列。呼叫alipaycore.parafilter sparatemp 除去陣列中的空值和簽名引數。之後,呼叫buildrequestmysign spara 生成簽名結果。最...
支付寶支付
1 支付寶開發 支付寶開放平台 支付寶開發者文件 生成簽名 python alipay adk 直接使用第三方sdk python alipay sdk 1 登入開發者中心,熟悉 電腦 支付 整體流程 訪問 支付寶開發平台 登入,可以訪問開發者中心 2 第一步 建立應用 這裡使用沙箱環境測試 1 沙...