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,
-
PHP文件上傳源碼分析
文件上傳,一般分為倆種方式FTP和HTTP,對於我們的互聯網應用來説:FTP上傳雖然傳輸穩定,但是易用性和安全性都是個問題.你總不至於在用户要上傳頭像的時候告訴用户”請打開FTP客户端,上傳文件到中,並以2dk433423l.jpg命名”吧?PHP文件上傳源碼分析基於HTTP的上傳...
-
PHP程序員基本要求和必備技能
PHP程序員有什麼必備知識呢?以下是本站小編精心為大家整理的PHP程序員基本要求和必備技能,希望對大家成為程序員有所幫助!更多內容請關注應屆畢業生網!一名PHP程序員的基本要求:1、精通html、CSS、JS等網站前端技術。2、掌握PHP編程技術。3、瞭解Linux及Apache、...
-
php中zend相對路徑問題
php下使用zend相對路徑的處理方法。如何使用呢?就跟隨本站小編一起去了解下吧,想了解更多相關信息請持續關注我們應屆畢業生考試網!<?phpdefine('P_S',PATH_SEPARATOR);define('ROOT',"../");set_include_path(ROOT.P_S.'Zend'.P_S_incl...
-
PHP學習10個基礎知識總結
PHP學習過程中,必須要掌握基礎的知識點,以下是小編為大家搜索整理的PHP學習10個基礎知識總結,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!PHP10個小基礎知識總結1,在HTML嵌入PHP腳本有三種辦法:以下為引用的內容:<scriptlanguage="PHP">//嵌...