擴充類名為alipay,從我的下載下傳資源中下載下傳,下載下傳後放置在\ThinkPHP\Library\Vendor檔案夾下
下載下傳位址:http://download.csdn.net/download/leejianjun/10025194
有個檔案cacert.pem,放置在與入口檔案index.php的同一檔案夾下
可以在PHP版demo中找找,或者在CSDN中搜一搜,也可以到我的下載下傳資源中尋找。
核心代碼如下:
//支付寶充值 支付到支付寶,傳回資訊,寫入member表中
public function alipay(){
//以下為配置資訊
//合作身份者id,以2088開頭的16位純數字
$alipay_config['partner'] = '2088************';
//收款支付寶賬号,一般情況下收款賬号就是簽約賬号
$alipay_config['seller_email'] = '********@**.com';
//安全檢驗碼,以數字和字母組成的32位字元
$alipay_config['key'] = '***********';
//↑↑↑↑↑↑↑↑↑↑請在這裡配置您的基本資訊↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//簽名方式 不需修改
$alipay_config['sign_type'] = strtoupper('MD5');
//字元編碼格式 目前支援 gbk 或 utf-8
$alipay_config['input_charset']= strtolower('utf-8');
//ca證書路徑位址,用于curl中ssl校驗
//請保證cacert.pem檔案在目前檔案夾目錄中
$alipay_config['cacert'] = getcwd().'\\cacert.pem';
//通路模式,根據自己的伺服器是否支援ssl通路,若支援請選擇https;若不支援請選擇http
$alipay_config['transport'] = 'http';
//以下開始操作
vendor('Alipay.Corefunction');
vendor('Alipay.Md5function');
vendor('Alipay.Notify');
vendor('Alipay.Submit');
//支付類型
$payment_type = "1";
//必填,不能修改
//伺服器異步通知頁面路徑
$notify_url = SELF_URL."/Buy/step/notify_url";
//需http://格式的完整路徑,不能加?id=123這類自定義參數
//頁面跳轉同步通知頁面路徑
$return_url = SELF_URL."/Buy/step/return_url"; //目前為同步通知
//需http://格式的完整路徑,不能加?id=123這類自定義參數,不能寫成http://localhost/
//*****************************送出的商戶資訊**************************************
//商戶訂單号
$amount=0.01;
$out_trade_no =date('YmdHis').rand(001,999);
session($out_trade_no,$amount);
//商戶網站訂單系統中唯一訂單号,必填
//訂單名稱
$subject = '充值'.$amount.'元到XX網站';
//必填
//付款金額
$total_fee =$amount;
//必填
//訂單描述
$body = $subject;
//商品展示位址
$show_url =SELF_URL.'/Buy/step/complete';
//需以http://開頭的完整路徑,例如:http://www.商戶網址.com/myorder.html
//防釣魚時間戳
$anti_phishing_key = "";
//若要使用請調用類檔案submit中的query_timestamp函數
//用戶端的IP位址
$exter_invoke_ip = "";
//非區域網路的外網IP位址,如:221.0.0.1
//構造要請求的參數數組,無需改動
$parameter = array(
"service" => "create_direct_pay_by_user",
"partner" => trim($alipay_config['partner']),
"seller_email" => trim($alipay_config['seller_email']),
"payment_type" => $payment_type,
"notify_url" => $notify_url,
"return_url" => $return_url,
"out_trade_no" => $out_trade_no,
"subject" => $subject,
"total_fee" => $total_fee,
"body" => $body,
"show_url" => $show_url,
"anti_phishing_key" => $anti_phishing_key,
"exter_invoke_ip" => $exter_invoke_ip,
"_input_charset" => trim(strtolower($alipay_config['input_charset']))
);
//建立請求
$alipaySubmit = new \AlipaySubmit($alipay_config);
//$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确認");
$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "");
echo $html_text;
}
//
public function notify_url(){
//以下為配置資訊
//合作身份者id,以2088開頭的16位純數字
$alipay_config['partner'] = '***********';
//收款支付寶賬号,一般情況下收款賬号就是簽約賬号
$alipay_config['seller_email'] = '******@***.com';
//安全檢驗碼,以數字和字母組成的32位字元
$alipay_config['key'] = '**************';
//↑↑↑↑↑↑↑↑↑↑請在這裡配置您的基本資訊↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//簽名方式 不需修改
$alipay_config['sign_type'] = strtoupper('MD5');
//字元編碼格式 目前支援 gbk 或 utf-8
$alipay_config['input_charset']= strtolower('utf-8');
//ca證書路徑位址,用于curl中ssl校驗
//請保證cacert.pem檔案在目前檔案夾目錄中
$alipay_config['cacert'] = getcwd().'\\cacert.pem';
//通路模式,根據自己的伺服器是否支援ssl通路,若支援請選擇https;若不支援請選擇http
$alipay_config['transport'] = 'http';
vendor('Alipay.Corefunction');
vendor('Alipay.Md5function');
vendor('Alipay.Notify');
vendor('Alipay.Submit');
//計算得出通知驗證結果
$alipayNotify = new \AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();
if($verify_result) {//驗證成功
/
//請在這裡加上商戶的業務邏輯程式代
//——請根據您的業務邏輯來編寫程式(以下代碼僅作參考)——
//擷取支付寶的通知傳回參數,可參考技術文檔中伺服器異步通知參數清單
//商戶訂單号
$out_trade_no = $_POST['out_trade_no'];
//支付寶交易号
$trade_no = $_POST['trade_no'];
//交易狀态
$trade_status = $_POST['trade_status'];
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單号(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程式
//請務必判斷請求時的total_fee、seller_id與通知時擷取的total_fee、seller_id為一緻的
//如果有做過處理,不執行商戶的業務程式
//注意:
//退款日期超過可退款期限後(如三個月可退款),支付寶系統發送該交易狀态通知
//調試用,寫文本函數記錄程式運作情況是否正常
//logResult("這裡寫入想要調試的代碼變量值,或其他運作的結果記錄");
}
else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單号(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程式
//請務必判斷請求時的total_fee、seller_id與通知時擷取的total_fee、seller_id為一緻的
//如果有做過處理,不執行商戶的業務程式
//注意:
//付款完成後,支付寶系統發送該交易狀态通知
//調試用,寫文本函數記錄程式運作情況是否正常
//logResult("這裡寫入想要調試的代碼變量值,或其他運作的結果記錄");
}
//——請根據您的業務邏輯來編寫程式(以上代碼僅作參考)——
echo "success"; //請不要修改或删除
/
}
else {
//驗證失敗
echo "fail";
//調試用,寫文本函數記錄程式運作情況是否正常
//logResult("這裡寫入想要調試的代碼變量值,或其他運作的結果記錄");
}
}
public function return_url(){
//以下為配置資訊
//合作身份者id,以2088開頭的16位純數字
$alipay_config['partner'] = '2088**********';
//收款支付寶賬号,一般情況下收款賬号就是簽約賬号
$alipay_config['seller_email'] = '********@***.com';
//安全檢驗碼,以數字和字母組成的32位字元
$alipay_config['key'] = '*************';
//↑↑↑↑↑↑↑↑↑↑請在這裡配置您的基本資訊↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//簽名方式 不需修改
$alipay_config['sign_type'] = strtoupper('MD5');
//字元編碼格式 目前支援 gbk 或 utf-8
$alipay_config['input_charset']= strtolower('utf-8');
//ca證書路徑位址,用于curl中ssl校驗
//請保證cacert.pem檔案在目前檔案夾目錄中
$alipay_config['cacert'] = getcwd().'\\cacert.pem';
//通路模式,根據自己的伺服器是否支援ssl通路,若支援請選擇https;若不支援請選擇http
$alipay_config['transport'] = 'http';
vendor('Alipay.Corefunction');
vendor('Alipay.Md5function');
vendor('Alipay.Notify');
vendor('Alipay.Submit');
//計算得出通知驗證結果
$alipayNotify = new \AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyReturn();
if($verify_result) {//驗證成功
/
//請在這裡加上商戶的業務邏輯程式代碼
//——請根據您的業務邏輯來編寫程式(以下代碼僅作參考)——
//擷取支付寶的通知傳回參數,可參考技術文檔中頁面跳轉同步通知參數清單
//商戶訂單号
$out_trade_no = $_GET['out_trade_no'];
//支付寶交易号
$trade_no = $_GET['trade_no'];
//交易狀态
$trade_status = $_GET['trade_status'];
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單号(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程式
//如果有做過處理,不執行商戶的業務程式
}
else {
echo "trade_status=".$_GET['trade_status'];
}
//echo "驗證成功<br />";
//***************************************支付成功後的代碼**********************************************
//此處代碼修改為事務
$amount=addslashes($_GET['total_fee']);
//echo $amount;exit;
header("location: ".SELF_URL."/Buy/step/complete/amount/".$amount);exit;
}
else {
//驗證失敗
//如要調試,請看alipay_notify.php頁面的verifyReturn函數
echo "驗證失敗";
}
}

有圖有真相