支付寶接口開(kāi)發(fā)集成支付環(huán)境小結(jié)
關(guān)于支付寶的接口集成氣死是很簡(jiǎn)單,目前大概有3種類型,即時(shí)到帳、雙功能、擔(dān)保交易,只需要集成一次擔(dān)保交易,其他的比如即時(shí)到帳集成很容易,擔(dān)保交易的狀態(tài)有幾種,比如:是否支付成功,賣家是否發(fā)貨,買家確認(rèn)收獲等。而即時(shí)到帳只有一種,就是是否已付款!最多還有個(gè)退款的功能。一般都沒(méi)用到。
通過(guò)之前做項(xiàng)目:配資平臺(tái),有個(gè)預(yù)付費(fèi)的功能,用到了支付寶的雙功能收款,其實(shí)就是提供兩種付款方式,即時(shí)到帳和擔(dān)保交易。一般買家謹(jǐn)慎會(huì)選擇擔(dān)保。
下面說(shuō)下具體的集成過(guò)程,第一:下載對(duì)應(yīng)的集成接口包,比如即時(shí)到帳就下載即時(shí)到帳,擔(dān)保下載擔(dān)保,非常不建議將即時(shí)到帳修改成擔(dān)?;蛘叻粗?。案例中我下載的 雙功能接口文件,utf8-php接口。
下載來(lái)的文件都大同小異,即時(shí)到帳和擔(dān)保的文件也相差不大,反正可以肯定的說(shuō),只要配置一次擔(dān)保支付寶接口,就能配置即時(shí)到帳。
我們需要修改的文件有如下:alipay.config.php[配置文件,只是用于修改配置接口開(kāi)發(fā)者id和key]
alipayapi.php[主調(diào)文件,將需要發(fā)送的post數(shù)據(jù)交給該文件,然后負(fù)責(zé)跳轉(zhuǎn)到支付頁(yè)面]
index.php[demo演示頁(yè)面,可以不做修改,但是其中傳遞的參數(shù)名陳需要看懂]
notify_url.php 返回?cái)?shù)據(jù)頁(yè)面,在其中將返回交易的狀態(tài),更具狀態(tài)我們可以更改數(shù)據(jù)庫(kù)訂單信息,該文件是通過(guò)post方式接受。
return_url.php 返回?cái)?shù)據(jù)頁(yè)面,在其中將返回交易的狀態(tài),更具狀態(tài)我們可以更改數(shù)據(jù)庫(kù)訂單信息,該文件是通過(guò)GET方式。
具體過(guò)程:
第一步,修改配置信息:
$alipay_config['partner'] = 'xxx8511073xxxxxxxx';
//安全檢驗(yàn)碼,以數(shù)字和字母組成的32位字符
$alipay_config['key'] ='xxxxxxxxnow07oajbflskxxxxxxxxxx';
第二:拼post數(shù)據(jù),一般只需要修改請(qǐng)求參數(shù)
/**************************請(qǐng)求參數(shù)**************************/
//支付類型
$payment_type = "1";
//必填,不能修改
//服務(wù)器異步通知頁(yè)面路徑
$notify_url = "http://你的域名/alipay/notify_url.php";
//需http://格式的完整路徑,不能加?id=123這類自定義參數(shù)
//頁(yè)面跳轉(zhuǎn)同步通知頁(yè)面路徑
$return_url = "http://你的域名/alipay/return_url.php";
//需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),不能寫成http://localhost/
//賣家支付寶帳戶
$seller_email = $_POST['WIDseller_email'];//demo[index.php]傳過(guò)來(lái)的
//必填
//商戶訂單號(hào)
$out_trade_no = $_POST['WIDout_trade_no'];//傳過(guò)來(lái)的
//商戶網(wǎng)站訂單系統(tǒng)中唯一訂單號(hào),必填
//訂單名稱
$subject = $_POST['WIDsubject'];//同上
//必填
//付款金額
$price = $_POST['WIDprice'];//傳過(guò)來(lái)的,是你的表單中填寫的值
//必填
//商品數(shù)量
$quantity = "1";
//必填,建議默認(rèn)為1,不改變值,把一次交易看成是一次下訂單而非購(gòu)買一件商品
//物流費(fèi)用
$logistics_fee = "0.00";
//必填,即運(yùn)費(fèi)
//物流類型
$logistics_type = "EXPRESS";
//必填,三個(gè)值可選:EXPRESS(快遞)、POST(平郵)、EMS(EMS)
//物流支付方式
$logistics_payment = "SELLER_PAY";
//必填,兩個(gè)值可選:SELLER_PAY(賣家承擔(dān)運(yùn)費(fèi))、BUYER_PAY(買家承擔(dān)運(yùn)費(fèi))
//訂單描述
$body = $_POST['WIDbody'];
//商品展示地址
$show_url = $_POST['WIDshow_url'];
//需以http://開(kāi)頭的完整路徑,如:http://www.ya-jing.cn
//收貨人姓名
$receive_name = '螢火';
//如:張三
//收貨人地址
$receive_address = $_POST['WIDreceive_address'];
//如:XX省XXX市XXX區(qū)XXX路XXX小區(qū)XXX棟XXX單元XXX號(hào)
//收貨人郵編
$receive_zip = $_POST['WIDreceive_zip'];
//如:123456
//收貨人電話號(hào)碼
$receive_phone = $_POST['WIDreceive_phone'];
//如:0571-88158090
//收貨人手機(jī)號(hào)碼
$receive_mobile = $_POST['WIDreceive_mobile'];
//如:13312341234
第三:數(shù)據(jù)構(gòu)造完成后就可以在頁(yè)面上付款,測(cè)試能不能正確的打開(kāi)支付頁(yè)面。如果能打開(kāi),這時(shí)候就可以進(jìn)行付款了,但是買家付款的狀態(tài)我們還無(wú)法獲知,比如有沒(méi)有成功付款,賣家是否已經(jīng)發(fā)貨等。那么接下來(lái)開(kāi)始做返回狀態(tài)的業(yè)務(wù)邏輯處理。
打開(kāi)return_url.php文件,根據(jù)提示修改,做對(duì)因的處理。
//——請(qǐng)根據(jù)您的業(yè)務(wù)邏輯來(lái)編寫程序(以下代碼僅作參考)——
//獲取支付寶的通知返回參數(shù),可參考技術(shù)文檔中頁(yè)面跳轉(zhuǎn)同步通知參數(shù)列表
//商戶訂單號(hào) $out_trade_no = $_GET['out_trade_no'];
//支付寶交易號(hào) $trade_no = $_GET['trade_no'];
//交易狀態(tài)
$trade_status = $_GET['trade_status'];
if($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {//狀態(tài)為成功
//處理自己網(wǎng)站的業(yè)務(wù)邏輯
if(!$order['status']){//判斷本地?cái)?shù)據(jù)庫(kù)中的訂單是否已經(jīng)處理
db_update("stx_recharge",array("status"=>1),array("oid"=>$_GET
['out_trade_no']));//如果沒(méi)處理就將狀態(tài)改成已經(jīng)處理。
//金錢的增加
$zd = db_line("stx_terminal",array("id"=>$order['ztid']));
db_update("stx_terminal",array("money"=>$zd['money']+$order
['money']),array("id"=>$order['ztid']));//增加余額到該用戶的賬戶上。
}
}
else if($_GET['trade_status'] == 'TRADE_FINISHED') {
//判斷該筆訂單是否在商戶網(wǎng)站中已經(jīng)做過(guò)處理
//如果沒(méi)有做過(guò)處理,根據(jù)訂單號(hào)(out_trade_no)在商戶網(wǎng)站的訂單系統(tǒng)
中查到該筆訂單的詳細(xì),并執(zhí)行商戶的業(yè)務(wù)程序
//如果有做過(guò)處理,不執(zhí)行商戶的業(yè)務(wù)程序
}
else {
echo "trade_status=".$_GET['trade_status'];
}
echo "驗(yàn)證成功<br />";
echo "trade_no=".$trade_no;
notify_url.php也是一樣,根據(jù)狀態(tài)來(lái)編寫對(duì)應(yīng)的代碼!notify_url.php文件中的狀態(tài)要多一些。
//——請(qǐng)根據(jù)您的業(yè)務(wù)邏輯來(lái)編寫程序(以下代碼僅作參考)——
//獲取支付寶的通知返回參數(shù),可參考技術(shù)文檔中服務(wù)器異步通知參數(shù)列表
//商戶訂單號(hào)
$out_trade_no = $_POST['out_trade_no'];
//支付寶交易號(hào)
$trade_no = $_POST['trade_no'];
//交易狀態(tài)
$trade_status = $_POST['trade_status'];
if($_POST['trade_status'] == 'WAIT_BUYER_PAY') {
//該判斷表示買家已在支付寶交易管理中產(chǎn)生了交易記錄,但沒(méi)有付款
//判斷該筆訂單是否在商戶網(wǎng)站中已經(jīng)做過(guò)處理
//如果沒(méi)有做過(guò)處理,根據(jù)訂單號(hào)(out_trade_no)在商戶網(wǎng)站的訂單系統(tǒng)中查到該筆訂單的詳細(xì),并執(zhí)行商戶的業(yè)務(wù)程序
//如果有做過(guò)處理,不執(zhí)行商戶的業(yè)務(wù)程序
echo "success"; //請(qǐng)不要修改或刪除
//調(diào)試用,寫文本函數(shù)記錄程序運(yùn)行情況是否正常
//logResult("這里寫入想要調(diào)試的代碼變量值,或其他運(yùn)行的結(jié)果記錄");
}
else if($_POST['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {
//該判斷表示買家已在支付寶交易管理中產(chǎn)生了交易記錄且付款成功,但賣家沒(méi)有發(fā)貨
if(!$order['status']){
db_update("stx_recharge",array("status"=>1),array("oid"=>$_POST['out_trade_no']));
//金錢的增加
$zd = db_line("stx_terminal",array("id"=>$order['ztid']));
db_update("stx_terminal",array("money"=>$zd['money']+$order['money']),array("id"=>$order['ztid']));
}
echo "success"; //請(qǐng)不要修改或刪除
//調(diào)試用,寫文本函數(shù)記錄程序運(yùn)行情況是否正常
//logResult("這里寫入想要調(diào)試的代碼變量值,或其他運(yùn)行的結(jié)果記錄");
}
else if($_POST['trade_status'] =='WAIT_BUYER_CONFIRM_GOODS') {
//該判斷表示賣家已經(jīng)發(fā)了貨,但買家還沒(méi)有做確認(rèn)收貨的操作
if(!$order['status']){
db_update("stx_recharge",array("status"=>1),array("oid"=>$_POST['out_trade_no']));
//金錢的增加
$zd = db_line("stx_terminal",array("id"=>$order['ztid']));
db_update("stx_terminal",array("money"=>$zd['money']+$order['money']),array("id"=>$order['ztid']));
}
echo "success"; //請(qǐng)不要修改或刪除
//調(diào)試用,寫文本函數(shù)記錄程序運(yùn)行情況是否正常
//logResult("這里寫入想要調(diào)試的代碼變量值,或其他運(yùn)行的結(jié)果記錄");
}
else if($_POST['trade_status'] == 'TRADE_FINISHED') {
//該判斷表示買家已經(jīng)確認(rèn)收貨,這筆交易完成
//判斷該筆訂單是否在商戶網(wǎng)站中已經(jīng)做過(guò)處理
//如果沒(méi)有做過(guò)處理,根據(jù)訂單號(hào)(out_trade_no)在商戶網(wǎng)站的訂單系統(tǒng)中查到該筆訂單的詳細(xì),并執(zhí)行商戶的業(yè)務(wù)程序
//如果有做過(guò)處理,不執(zhí)行商戶的業(yè)務(wù)程序
echo "success"; //請(qǐng)不要修改或刪除
//調(diào)試用,寫文本函數(shù)記錄程序運(yùn)行情況是否正常
//logResult("這里寫入想要調(diào)試的代碼變量值,或其他運(yùn)行的結(jié)果記錄");
}
由于我基本上沒(méi)有用到后續(xù)的發(fā)貨處理,所以在該狀態(tài)下未做處理,如果您的網(wǎng)站是購(gòu)物網(wǎng)站秒就需要做對(duì)應(yīng)的處理,比如更新?tīng)顟B(tài)值為已發(fā)貨,或者未付款、已確認(rèn)等。方便看到交易流程。同時(shí)在已付款的訂單中會(huì)產(chǎn)生支付寶的訂單id,可以同時(shí)記錄在自己的訂單中。
以上所述就是本文關(guān)于支付寶接口的全部?jī)?nèi)容了,希望能對(duì)大家熟練掌握支付寶接口支付的二次開(kāi)發(fā)能夠有所幫助。
- CodeIgniter開(kāi)發(fā)實(shí)現(xiàn)支付寶接口調(diào)用的方法示例
- php支付寶接口用法分析
- ThinkPHP實(shí)現(xiàn)支付寶接口功能實(shí)例
- 如何用struts調(diào)用支付寶接口
- asp.net B2B網(wǎng)站對(duì)接支付寶接口
- php使用CURL模擬GET與POST向微信接口提交及獲取數(shù)據(jù)的方法
- Python+微信接口實(shí)現(xiàn)運(yùn)維報(bào)警
- PHP微信刮刮卡 附微信接口
- 人臉識(shí)別測(cè)顏值、測(cè)臉齡、測(cè)相似度微信接口
- php官方微信接口大全(微信支付、微信紅包、微信搖一搖、微信小店)
- c#使用微信接口開(kāi)發(fā)微信門戶應(yīng)用中微信消息的處理和應(yīng)答
- c#使用微信接口開(kāi)發(fā)微信門戶應(yīng)用
- 網(wǎng)站申請(qǐng)不到支付寶接口、微信接口,免接口收款實(shí)現(xiàn)方式幾種解決辦法
相關(guān)文章
CI框架實(shí)現(xiàn)遞歸生成文件路徑并重新生成圖片功能
這篇文章主要介紹了CI框架實(shí)現(xiàn)遞歸生成文件路徑并重新生成圖片功能,涉及CodeIgniter框架自定義圖片控制器類實(shí)現(xiàn)文件目錄遞歸以及調(diào)用圖片處理擴(kuò)展類進(jìn)行圖片生成相關(guān)操作技巧,需要的朋友可以參考下2018-06-06php中static 靜態(tài)變量和普通變量的區(qū)別
靜態(tài)變量與普通變量的區(qū)別在哪里呢,對(duì)于許多初學(xué)php的朋友來(lái)講可能不是點(diǎn)擊的明白了,今天我們來(lái)看看php中static 靜態(tài)變量和普通變量的區(qū)別吧,需要的朋友可以參考下2016-12-12ThinkPHP框架實(shí)現(xiàn)用戶信息查詢更新及刪除功能示例
這篇文章主要介紹了ThinkPHP框架實(shí)現(xiàn)用戶信息查詢更新及刪除功能,結(jié)合實(shí)例形式分析了thinkPHP框架數(shù)據(jù)庫(kù)配置、控制與模板調(diào)用實(shí)現(xiàn)信息查詢、更新、刪除等功能相關(guān)操作技巧,需要的朋友可以參考下2018-03-03laravel中數(shù)據(jù)顯示方法(默認(rèn)值和下拉option默認(rèn)選中)
今天小編就為大家分享一篇laravel中數(shù)據(jù)顯示方法(默認(rèn)值和下拉option默認(rèn)選中),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10將博客園(cnblogs.com)數(shù)據(jù)導(dǎo)入到wordpress的代碼
博客園限制太多,于是決定從博客園(cnblogs)更換自己個(gè)人的博客。WORDPRESS口碑還不錯(cuò),于是決定用用看。之前發(fā)的數(shù)百篇日志需要導(dǎo)入過(guò)來(lái),在網(wǎng)上搜了一會(huì),發(fā)現(xiàn)沒(méi)有這個(gè)插件,無(wú)奈只能自己寫一個(gè)2013-01-01php+memcache實(shí)現(xiàn)的網(wǎng)站在線人數(shù)統(tǒng)計(jì)代碼
這篇文章主要介紹了php+memcache實(shí)現(xiàn)的網(wǎng)站在線人數(shù)統(tǒng)計(jì)代碼,代碼例子簡(jiǎn)潔實(shí)用,需要的朋友可以參考下2014-07-07PHP實(shí)現(xiàn)微信提現(xiàn)功能(微信商城)
這篇文章主要介紹了PHP實(shí)現(xiàn)微信提現(xiàn)功能,此類功能在微信商城中經(jīng)常會(huì)用到,今天小編通過(guò)實(shí)例代碼給大家講解,需要的朋友可以參考下2019-11-11