我是把支付寶的文件放到了這個文件夾下

圖片.png
下載地址:
鏈接:http://pan.baidu.com/s/1nveAZvN 密碼:l9kv
config.php 配置信息
//支付寶配置信息 基本上是復(fù)制的alipay.config.php里的
'ALIPLAY'=>array(
//↓↓↓↓↓↓↓↓↓↓請在這里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//合作身份者ID,簽約賬號,以2088開頭由16位純數(shù)字組成的字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
'partner' => '填寫自己的',
//收款支付寶賬號,以2088開頭由16位純數(shù)字組成的字符串,一般情況下收款賬號就是簽約賬號
'seller_id' => '填寫自己的',
// MD5密鑰,安全檢驗碼,由數(shù)字和字母組成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
'key' => '填寫自己的',
//↑↑↑↑↑↑↑↑↑↑請在這里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//↓↓↓↓↓↓↓↓↓↓ 以下信息不要修改 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//簽名方式
'sign_type' => strtoupper('MD5'),
//字符編碼格式 目前支持 gbk 或 utf-8
'input_charset'=> strtolower('utf-8'),
//ca證書路徑地址,用于curl中ssl校驗
//請保證cacert.pem文件在當(dāng)前文件夾目錄中
//'cacert' => getcwd().'\\cacert.pem', //getcwd 獲取當(dāng)前文件的文件夾磁盤路徑
'cacert' => realpath(APP_PATH).'\\Libaray\\alipay\\cacert.pem',//改成和我們的alipay的類的目錄
//訪問模式,根據(jù)自己的服務(wù)器是否支持ssl訪問,若支持請選擇https;若不支持請選擇http
'transport' => 'http',
// 支付類型 ,無需修改
'payment_type' => "1",
// 產(chǎn)品類型,無需修改
'service' => "create_direct_pay_by_user",
//↓↓↓↓↓↓↓↓↓↓ 請在這里配置防釣魚信息,如果沒開通防釣魚功能,為空即可 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 防釣魚時間戳 若要使用請調(diào)用類文件submit中的query_timestamp函數(shù)
'anti_phishing_key' => "",
// 客戶端的IP地址 非局域網(wǎng)的外網(wǎng)IP地址,如:221.0.0.1
'exter_invoke_ip' => "",
//↑↑↑↑↑↑↑↑↑↑請在這里配置防釣魚信息,如果沒開通防釣魚功能,為空即可 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
)
調(diào)用支付寶
public function index(){
//調(diào)用支付寶
// import("Libaray/alipay/config.php");//配置文件
$alipay_config=C('ALIPLAY');//這里我們把配置文件放在了咱們的統(tǒng)一配置信息文件里
import("Libaray/alipay/alipay_submit");//調(diào)用支付頁面
// 服務(wù)器異步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),必須外網(wǎng)可以正常訪問
$alipay_config['notify_url'] = "http://".$_SERVER['HTTP_HOST'].U('Alipay/notify_url');
// 頁面跳轉(zhuǎn)同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),必須外網(wǎng)可以正常訪問
$alipay_config['return_url'] = "http://".$_SERVER['HTTP_HOST'].U('Alipay/return_url');
/**************************請求參數(shù)**************************/
//------------訂單信息,這里要根據(jù)我們自己的業(yè)務(wù)邏輯來寫,我們?nèi)?shù)據(jù)庫查
//商戶訂單號,商戶網(wǎng)站訂單系統(tǒng)中唯一訂單號,必填
$out_trade_no =rand(1000,9999);//測試用的隨機數(shù)
//訂單名稱,必填
$subject = '這是你下的訂單';
//付款金額,必填
$total_fee = 0.01;//測試0.01
//商品描述,可空
$body = '這是我的訂單';
/************************************************************/
//構(gòu)造要請求的參數(shù)數(shù)組,無需改動
$parameter = array(
"service" => $alipay_config['service'],
"partner" => $alipay_config['partner'],
"seller_id" => $alipay_config['seller_id'],
"payment_type" => $alipay_config['payment_type'],
"notify_url" => $alipay_config['notify_url'],
"return_url" => $alipay_config['return_url'],
"anti_phishing_key"=>$alipay_config['anti_phishing_key'],
"exter_invoke_ip"=>$alipay_config['exter_invoke_ip'],
"out_trade_no" => $out_trade_no,
"subject" => $subject,
"total_fee" => $total_fee,
"body" => $body,
"_input_charset" => trim(strtolower($alipay_config['input_charset']))
//其他業(yè)務(wù)參數(shù)根據(jù)在線開發(fā)文檔,添加參數(shù).文檔地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.kiX33I&treeId=62&articleId=103740&docType=1
//如"參數(shù)名"=>"參數(shù)值"
);
//建立請求
$alipaySubmit = new \AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "確認");
echo $html_text;
}
支付成功回調(diào)地址 異步通知
/**
* 支付成功回調(diào)地址
* 異步通知
*/
public function notify_url(){
/* //------------這兩行代碼改成咱們項目的引入形式
require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");
*/
$alipay_config=C('ALIPLAY');//這里我們把配置文件放在了咱們的統(tǒng)一配置信息文件里
import("Libaray/alipay/alipay_notify");
//計算得出通知驗證結(jié)果
$alipayNotify = new \AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();
if($verify_result) {//驗證成功
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//請在這里加上商戶的業(yè)務(wù)邏輯程序代
//——請根據(jù)您的業(yè)務(wù)邏輯來編寫程序(以下代碼僅作參考)——
//獲取支付寶的通知返回參數(shù),可參考技術(shù)文檔中服務(wù)器異步通知參數(shù)列表
//商戶訂單號(傳過去的會員附表的id)
$out_trade_no = $_POST['out_trade_no'];
//支付寶交易號
$trade_no = $_POST['trade_no'];
//交易狀態(tài)
$trade_status = $_POST['trade_status'];
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//判斷該筆訂單是否在商戶網(wǎng)站中已經(jīng)做過處理
//如果沒有做過處理,根據(jù)訂單號(out_trade_no)在商戶網(wǎng)站的訂單系統(tǒng)中查到該筆訂單的詳細,并執(zhí)行商戶的業(yè)務(wù)程序
//請務(wù)必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id為一致的
//如果有做過處理,不執(zhí)行商戶的業(yè)務(wù)程序
//注意:
//退款日期超過可退款期限后(如三個月可退款),支付寶系統(tǒng)發(fā)送該交易狀態(tài)通知
//調(diào)試用,寫文本函數(shù)記錄程序運行情況是否正常
//logResult("這里寫入想要調(diào)試的代碼變量值,或其他運行的結(jié)果記錄");
}
else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//判斷該筆訂單是否在商戶網(wǎng)站中已經(jīng)做過處理
//如果沒有做過處理,根據(jù)訂單號(out_trade_no)在商戶網(wǎng)站的訂單系統(tǒng)中查到該筆訂單的詳細,并執(zhí)行商戶的業(yè)務(wù)程序
//請務(wù)必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id為一致的
//如果有做過處理,不執(zhí)行商戶的業(yè)務(wù)程序
//------------我們的業(yè)務(wù)邏輯代碼:根據(jù)支付寶傳來的訂單號去咱們的數(shù)據(jù)庫中查找該訂單的支付狀態(tài),如果是未支付狀態(tài),改為已支付狀態(tài)
//------------我們的業(yè)務(wù)邏輯代碼結(jié)束
//注意:
//付款完成后,支付寶系統(tǒng)發(fā)送該交易狀態(tài)通知
//調(diào)試用,寫文本函數(shù)記錄程序運行情況是否正常
//logResult("這里寫入想要調(diào)試的代碼變量值,或其他運行的結(jié)果記錄");
}
//——請根據(jù)您的業(yè)務(wù)邏輯來編寫程序(以上代碼僅作參考)——
echo "success"; //請不要修改或刪除
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else {
//驗證失敗
echo "fail";
//調(diào)試用,寫文本函數(shù)記錄程序運行情況是否正常
//logResult("這里寫入想要調(diào)試的代碼變量值,或其他運行的結(jié)果記錄");
}
}
支付成功回調(diào)地址 同步通知
/**
* 支付成功回調(diào)地址
* 同步通知
*/
public function return_url()
{
/* //------------這兩行代碼改成咱們項目的引入形式
require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");
*/
$alipay_config=C('ALIPLAY');//這里我們把配置文件放在了咱們的統(tǒng)一配置信息文件里
import("Libaray/alipay/alipay_notify");
//計算得出通知驗證結(jié)果
$alipayNotify = new \AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyReturn();
if($verify_result) {//驗證成功
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//請在這里加上商戶的業(yè)務(wù)邏輯程序代碼
//——請根據(jù)您的業(yè)務(wù)邏輯來編寫程序(以下代碼僅作參考)——
//獲取支付寶的通知返回參數(shù),可參考技術(shù)文檔中頁面跳轉(zhuǎn)同步通知參數(shù)列表
//商戶訂單號
$out_trade_no = $_GET['out_trade_no'];
//支付寶交易號
$trade_no = $_GET['trade_no'];
//交易狀態(tài)
$trade_status = $_GET['trade_status'];
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
//判斷該筆訂單是否在商戶網(wǎng)站中已經(jīng)做過處理
//如果沒有做過處理,根據(jù)訂單號(out_trade_no)在商戶網(wǎng)站的訂單系統(tǒng)中查到該筆訂單的詳細,并執(zhí)行商戶的業(yè)務(wù)程序
//如果有做過處理,不執(zhí)行商戶的業(yè)務(wù)程序
//------------我們的業(yè)務(wù)邏輯代碼:和前面方法notify_url里一樣
//------------我們的業(yè)務(wù)邏輯代碼結(jié)束
}
else {
echo "trade_status=".$_GET['trade_status'];
}
echo "驗證成功<br />";
//——請根據(jù)您的業(yè)務(wù)邏輯來編寫程序(以上代碼僅作參考)——
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else {
//驗證失敗
//如要調(diào)試,請看alipay_notify.php頁面的verifyReturn函數(shù)
echo "驗證失敗";
}
}