當前位置:才華齋>計算機>php語言>

ThinkPHP實現支付寶介面功能例項

php語言 閱讀(7.76K)

ThinkPHP實現支付寶介面功能的方法,例項講述了支付寶介面的下載及二次開發方法,以及對應的ThinkPHP開發技巧,需要的朋友可以參考下.

ThinkPHP實現支付寶介面功能例項

最近做系統,需要實現線上支付功能,毫不猶豫,選擇的是支付寶的介面支付功能,這裡我用的是即時到帳的介面,具體實現的步驟如下:

  一、下載支付寶介面包

下載地址:

具體如何下載,我就不在羅嗦了~~

  二、重新整理介面包檔案,這一步應該算是比較關鍵的(個人認為),下載下來的介面包檔案有很多語言的原始碼

我們選擇 create_direct_pay_by_user-PHP-UTF-8 這個名稱的介面檔案,裡面包括如下檔案:

images檔案裡是支付寶相關的一些標誌的圖片,我們暫不管他,lib檔案很重要,是整個介面的核心類檔案;

是相關引數的配置檔案

是支付寶介面入口檔案

notify_ 是服務器非同步通知頁面檔案;

return_ 是頁面跳轉同步通知檔案;

在ThinkPHP的框架檔案下,找到Extend 進入,再進入Vendor,在Vendor資料夾下,新建資料夾Alipay,把支付寶作為第三方類庫引入,然後,複製支付寶介面檔案包中lib檔案裡的所有檔案,一共4個檔案,如下:

現在對以上檔案進行重新命名.

alipay_重新命名為:;

alipay_重新命名為:;

alipay_重新命名為:;

alipay_重新命名為:;

然後,開啟檔案,把以下程式碼去掉;

require_once("alipay_");

require_once("alipay_");同樣,開啟檔案,把以下兩段程式碼去掉require_once("alipay_");

require_once("alipay_");為什麼要去掉以上兩個檔案中的這兩段程式碼,因為在專案中呼叫介面檔案的時候,我把所有4個核心檔案都通過vendor來進行引入。所以,這不再需要匯入。

到此,支付寶介面包相關核心類庫的整理基本完成。現在開始在專案中呼叫;

  三、在專案中呼叫支付寶介面

呼叫分兩步:

1、在配置檔案中Conf/檔案中對支付寶相關引數進行配置

複製程式碼 程式碼如下:

//支付寶配置引數

'alipay_config'=>array(

'partner' =>'20********50', //這裡是你在成功申請支付寶介面後獲取到的PID;

'key'=>'9t***********ie',//這裡是你在成功申請支付寶介面後獲取到的Key

'sign_type'=>strtoupper('MD5'),

'input_charset'=> strtolower('utf-8'),

'cacert'=> getcwd().'',

'transport'=> 'http',

),

//以上配置項,是從介面包中 檔案中複製過來,進行配置;

'alipay' =>array(

//這裡是賣家的支付寶賬號,也就是你申請介面時註冊的支付寶賬號

'seller_email'=>&#',

//這裡是非同步通知頁面url,提交到專案的Pay控制器的notifyurl方法;

'notify_url'=>'',

//這裡是頁面跳轉通知url,提交到專案的Pay控制器的returnurl方法;

'return_url'=>'',

//支付成功跳轉到的頁面,我這裡跳轉到專案的User控制器,myorder方法,並傳參payed(已支付列表)

'successpage'=>'User/myorder?ordtype=payed',

//支付失敗跳轉到的頁面,我這裡跳轉到專案的User控制器,myorder方法,並傳參unpay(未支付列表)

'errorpage'=>'User/myorder?ordtype=unpay',

),

  2、新建一個PayAction控制器程式碼如下

複製程式碼 程式碼如下:

<?php

class PayAction extends Action{

//在類初始化方法中,引入相關類庫

public function _initialize() {

vendor('function');

vendor('5function');

vendor('fy');

vendor('it');

}

//doalipay方法

public function doalipay(){

// require_once("");

// require_once("lib/alipay_");

//這裡我們通過TP的C函式把配置項引數讀出,賦給$alipay_config;

$alipay_config=C('alipay_config');

$payment_type = "1"; //支付型別 //必填,不能修改

$notify_url = C('fy_url'); //伺服器非同步通知頁面路徑

$return_url = C('rn_url'); //頁面跳轉同步通知頁面路徑

$seller_email = C('er_email');//賣家支付寶帳戶必填

$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(

"service" => "create_direct_pay_by_user",

"partner" => trim($alipay_config['partner']),

"payment_type" => $payment_type,