本文目錄一覽:
- 1、php 後台怎麼把多種支付方式集成在一起 可以先擇性安裝
- 2、怎麼在phpweb網站中加paypal代碼
- 3、PHP的集成環境wampserver,在電腦右下角已經是綠色的了,問題是在網頁端可以進去(比如PH
- 4、php mysql apache 集成環境有哪些
- 5、服務器上用php集成環境好不好呢,哪款集成環境在服務器上使用比較好??
- 6、php開發中app怎麼接入支付寶
php 後台怎麼把多種支付方式集成在一起 可以先擇性安裝
本文將介紹如何快速通過PHP類庫來集成、整合支付寶來實現充值功能。如果你的系統想要擴充積分、賬戶餘額等功能,那麼就要選擇一個第三方支付系統來充值。
支付寶集成時,需要三大步:
1、通過表單提交信息,系統整合信息,提交信息到支付寶;
2、用戶進行支付後,支付寶後台通知系統處理;
3、支付寶後台通知完成後,支付寶前台跳轉到系統返回地址;
支付寶PHP類
PHP 類alipay_notify,主要功能是付款過程中服務器通知處理。
PHP 類alipay_service,根據支付寶外部服務接口生成支付寶地址。
我把這2個類,集中到一個文件alipay.class.inc中,點擊這裡查看並下載PHP支付寶類源碼。
下面主要主要講解通過支付寶的PHP類來實現整合。
PHP支付寶集成
第一步,建立提交充值的基本信息:
zhifubao-chongzhi PHP支付寶集成 建立提交充值的基本信息
第二步,驗證用戶提交的金額正確,通過表單驗證後,通過支付寶alipay_service類生成支付寶鏈接,然後跳轉到支付寶鏈接。
function index() {
$total = intval($_POST[‘total’]);
if (!$total) {
$total = 1;
}
$pay_bank = trim($_POST[‘pay_bank’]);
$account = $_POST[‘_account’];
$base_path = ‘http://’.$_SERVER[‘HTTP_HOST’].base_path();
$order_id = date(‘YmdHis’, time()); //時間值作為唯一的訂單ID號
$subject = $body = ‘LixiPHP充值’.$total.’元’;
$out_trade_no = date(‘YmdHis’, time()).’-’.$account-student[‘sid’];
//合作身份者ID,以2088開頭的16位純數字
$partner = ’20887015**9*7**’;
//安全檢驗碼,以數字和字母組成的32位字符
$security_code = ‘gc2qxh4**ab***3jp8*****2ptxewks4′;
//簽約支付寶賬號或賣家支付寶帳戶
$seller_email = ‘seller@alipay.com’;
$_input_charset = “UTF-8”;
$sign_type = “MD5”; //簽名方式
$transport = ‘https’;//字符編碼格式
$parameter = array(
“service” = “create_direct_pay_by_user”, //交易類型
“partner” = $partner, //合作商戶號
“return_url” = $base_path.’alipay/return’, //同步返回
“notify_url” = $base_path.’alipay/notify’, //異步返回
“_input_charset” = ‘UTF-8′, //字符集,默認為GBK
“subject” = $subject, //商品名稱,必填
“body” = $subject, //商品描述,必填
“out_trade_no” = $out_trade_no, //商品外部交易號,必填(保證唯一性)
“price” = $total, //商品單價,必填(價格不能為0)
“payment_type” = “1”, //默認為1,不需要修改
“quantity” = “1”, //商品數量,必填
“paymethod” = ‘directPay’,
“defaultbank” = $pay_bank,
“logistics_fee” =’0.00′, //物流配送費用
“logistics_payment” =’BUYER_PAY’, //物流費用付款方式:SELLER_PAY(賣家支付)、BUYER_PAY(買家支付)、BUYER_PAY_AFTER_RECEIVE(貨到付款)
“logistics_type” =’EXPRESS’, //物流配送方式:POST(平郵)、EMS(EMS)、EXPRESS(其他快遞)
//”receive _mobile” = ”, //收貨人手機
“show_url” = $base_path, //商品相關網站
“seller_email” = $seller_email, //賣家郵箱,必填
);
require(“../libraries/payment/alipay.class.inc”);
$alipay = new alipay_service($parameter, $security_code, $sign_type);
$link = $alipay-create_url();
header(“Location: “.$link);
}
用戶跳轉到支付寶支付界面後,默認的支付銀行是在提交表單前選擇的網上銀行,選擇支付寶的話就是使用支付寶餘額支付。然後就是等待用戶支付了。用戶完成支付後,請會發生下面的幾個步驟,當然如果用戶放棄支付的話,就沒有後面的處理了。
第三步,用戶進行支付後,支付寶後台通知系統處理。系統處理頁面主要是根據生成支付寶鏈接是使用的notify_url來決定的。它處理完成後,成功返回success,失敗返回fail,如果支付寶收到的是fail,那麼支付寶還會在隔1小時,1天,1周等周期再次通知服務器處理,這裡的周期需求向支付寶詢問。如果支付寶收到的是success,注意支付寶好像在一個月後要發送一次TRADE_FINISHED表示交易完成,這個一定不要再給用戶加一次充值了。
function alipay_notify() {
$out_trade_no = date(‘YmdHis’, time()).’-’.$account-student[‘sid’];
//合作身份者ID,以2088開頭的16位純數字
$partner = ’20887015**9*7**’;
//安全檢驗碼,以數字和字母組成的32位字符
$security_code = ‘gc2qxh4**ab***3jp8*****2ptxewks4′;
//簽約支付寶賬號或賣家支付寶帳戶
$seller_email = ‘seller@alipay.com’;
$sign_type = “MD5”;
$_input_charset = ‘UTF-8′;
$transport = ‘https’;
require(“../libraries/payment/alipay.class.inc”);
$alipay = new alipay_notify($partner,$security_code,$sign_type,$_input_charset,$transport);
$verify_result = $alipay-notify_verify();
//支付寶 Notice verify
if($verify_result) {
//認證合格
//獲取支付寶的反饋參數
//獲取支付寶傳遞過來的訂單號
$order_id = $_POST[‘out_trade_no’];
//獲取支付寶傳遞過來的總價格
$total_fee = $_POST[‘total_fee’];
//拆分訂單號為訂單和學員ID
$txn_id = explode(‘-’, $order_id);
$real_orderid = $txn_id[0]; //get the real order
$sid = $txn_id[1];
if($_POST[‘trade_status’] == ‘TRADE_SUCCESS’) {
//這裡放入你自定義代碼,比如根據不同的trade_status進行不同操作
mysql_query(“UPDATE {student} set balance = balance+%d where sid = %d”, (int) $total_fee, $sid);
mysql_query(“INSERT INTO {payment_receipts} (sid, order_id, amount, received) VALUES (%d, ‘%s’, %f, %d)”, $sid, $real_orderid, (int) $total_fee, time());
echo “success”;
}
else {
echo “fail”;
}
}
else {
echo “fail”;
}
}
第四步,用戶完成支付後,支付寶前台跳轉到系統返回地址。這個頁面其實可以只做一個非常簡單頁面,不用做任何驗證。但是為了安全建議也做一下返回驗證。但是最後不要在返回頁面做數據庫操作。
function alipay_return() {
$out_trade_no = date(‘YmdHis’, time()).’-’.$account-student[‘sid’];
//合作身份者ID,以2088開頭的16位純數字
$partner = ’20887015**9*7**’;
//安全檢驗碼,以數字和字母組成的32位字符
$security_code = ‘gc2qxh4**ab***3jp8*****2ptxewks4′;
//簽約支付寶賬號或賣家支付寶帳戶
$seller_email = ‘seller@alipay.com’;
$sign_type = “MD5”;
$_input_charset = ‘UTF-8′;
$transport = ‘https’;
require(“../libraries/payment/alipay.class.inc”);
$alipay = new alipay_notify($partner,$security_code,$sign_type,$_input_charset,$transport);
$verify_result = $alipay-return_verify();
$order_id = $_GET[‘out_trade_no’]; //獲取訂單號
$total_fee = (int) $_GET[‘total_fee’]; //獲取總價格
$txn_id = explode(‘-’, $order_id);
$real_orderid = $txn_id[0]; //get the real order
$sid = $txn_id[1];
//認證合格
if($verify_result) {
$output = ‘h2恭喜您,學員ID’.$sid.’充值’.$total_fee.’元成功!/h2’;
$student = mysql_query(“SELECT uid, balance FROM {student} WHERE sid = %d”, $sid);
$output .= ‘p您目前的餘額’.$student-balance.’元。/p’;
$output .= l(‘查看記錄’, ‘user/’.$student-uid.’/depositlogs’);
return $output;
}
else {
$output = ‘h2你的訂單支付過程出現故障!/h2’;
$output .= ‘p您的交易信息是無效的,如果你使用的是已有的返回信息的話,那麼交易已經成立,你可以查看我的訂單歷史。br如果你是黑客的話,俺是守法的好公民,希望你能饒了我這個小店。’;
$output .= ‘/ppa href=”/”返回首頁/a/p’;
return $output;
}
}
如果用戶是惡意修改網址參數,將會看到:
callback return failed 如果用戶是惡意修改網址參數
如果用戶正常通過支付寶自動跳轉回來的,將會看到:
callback return success 如果用戶正常通過支付寶自動跳轉回來的
好的,趕快將以上方法和代碼應用到你的積分、賬戶餘額系統把!
怎麼在phpweb網站中加paypal代碼
第一步:登陸PP的BIZ網站
第二步:點擊用戶信息-更多選項
第三步:點擊銷售工具
第四步:點擊 API訪問旁邊的更新
第五步:點擊申請API憑證
第六步:點擊查看API簽名
第七步:根據自己的需求申請API憑證或API證書
希望我的回答有幫到您
paypal–Sam 1486554099
PHP的集成環境wampserver,在電腦右下角已經是綠色的了,問題是在網頁端可以進去(比如PH
右鍵重啟,看看顏色變化,有的版本黃色、紅色等代表有問題,純白色才是一切正常啟動;
php mysql apache 集成環境有哪些
1.AppServ (推薦,簡潔精簡)
當前的兩個版本是: 2.5.10 2.6.0 (點擊版本號下載)
AppServ是PHP網頁架站工具組合包,泰國的作者將一些網路上免費的架站資源重新包裝成單一的安裝程序,以方便初學者快速完成架站,AppServ 所包含的軟件有:Apache、Apache Monitor、PHP、MySQL、PHP-Nuke、phpMyAdmin。適合初學者
AppServ 2.5.10組件版本:
Apache 2.2.8
PHP 5.2.6
MySQL 5.0.51b
phpMyAdmin-2.10.3
AppServ 2.6.0組件版本:
Apache 2.2.8
PHP 6.0.0-dev
MySQL 6.0.4-alpha
phpMyAdmin-2.10.3
2.XAMPP (功能全面)
XAMPP是一款具有中文說明的功能全面的集成環境,XAMPP並不僅僅針對Windows,而是一個適用於Linux、Windows、Mac OS X 和Solaris 的易於安裝的Apache 發行版。軟件包中包含Apache 服務器、MySQL、SQLite、PHP、Perl、FileZilla FTP Server、Tomcat等等。默認安裝開放了所有功能,安全性有問題,需要對以下安全問題進行設定。
MySQL 管理員(root)未設置密碼。
MySQL 服務器可以通過網絡訪問。
PhpMyAdmin 可以通過網絡訪問。
樣例可以通過網絡訪問。
Mercury 郵件服務器和 FileZilla FTP 服務器的用戶是公開的。
3.WampServer (簡便易用)
主頁
WampServer – WampServe集成了Apache、MySQL、PHP、phpmyadmin,支持Apache的mod_rewrite,PHP擴展、Apache模塊只需要在菜單“開啟/關閉”上點點就搞定,省去了修改配置文件的麻煩。
4. phpstudy
該程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安裝,無須配置即可使用,是非常方便、好用的PHP調試環境。該程序不僅包括PHP調試環境,還包括了開發工具、開發手冊等。總之學習PHP只需一個包。
對學習PHP的新手來說,WINDOWS下環境配置是一件很困難的事;對老手來說也是一件煩瑣的事。因此無論你是新手還是老手,該程序包都是一個不錯的選擇。
1、全面適合 Win2000/XP/2003 操作系統,IIS和Apache二選一安裝。
2、該程序包集成以下軟件,均為最新版本。
PHP 5.2.5 新型的CGI程序編寫語言,易學易用、速度快、跨平台。
Apache 2.2.8 最流行的HTTP服務器軟件,快速、可靠、開源。
MySQL 5.0.45 執行性能高,運行速度快,容易使用,非常棒數據庫。
phpMyAdmin 2.11.4 開源、基於WEB而小巧的MySQL管理程序。
ZendOptimizer 3.3.0 免費的PHP優化引擎,性能提高30%以上。
OpenSSL 0.9.8g 密碼算法庫、SSL協議庫以及應用程序。
eAccelerator 0.9.5.2 又一加速,不亞於ZendOptimizer。
3、如果作為服務器請稍修改配置文件即可。MySQL數據庫用戶名:root,密碼root,安裝後請重新設置密碼。
5.APMServ
APMServ 5.2.0 是一款擁有圖形界面的快速搭建Apache 2.2.3、PHP 5.2.0、MySQL 5.0.27&4.0.26、SQLite、ZendOptimizer、OpenSSL、phpMyAdmin、
SQLiteManager,以及ASP、CGI、Perl網站服務器平台的綠色軟件。無需安裝,具有靈活的移動性,將其拷貝到其它目錄、分區或別的電腦時,均只需點擊APMServ.exe
中的啟動按鈕,即可自動進行相關設置,將Apache和MySQL安裝為系統服務並啟動。APMServ集合了Apache穩定安全的優點,並擁有跟IIS一樣便捷的圖形管理界面,同
時支持MySQL 5.0 4.0兩個版本,虛擬主機、虛擬目錄、端口更改、SMTP、上傳大小限制、自動全局變量、SSL證書製作、緩存性能優化等設置,只需鼠標一點即可完
成。
1、注意事項:APMServ程序所在路徑不能含有漢字和空格。
2、MySQL默認用戶名:root,密碼為空
3、MySQL數據庫文件存放目錄:MySQL5.0/data或MySQL4.0/data
4、網站根目錄[HTML,PHP]www/htdocs [ASP]www/asp [CGI,Perl]www/cgi-bin
5、訪問本機請用127.0.0.1/或 (如果開啟SSL)
6、非默認端口,網址為127.0.0.1:端口/或:端口/
7、APMServ集成了以下軟件:
Apache 2.2.3 [HTTP服務器]
NetBox 2.8 Build 4128 [HTTP服務器+ASP腳本解釋引擎]
PHP 5.2.0 [PHP腳本解釋引擎]
MiniPerl 5.8 [Perl腳本解釋器]
MySQL 5.0.27 [MySQL數據庫服務器]
MySQL 4.0.26 [MySQL數據庫服務器]
SQLite 3.3.8 [SQLite數據庫服務器]
phpMyAdmin 2.9.1.1 [MySQL數據庫在線管理工具]
SQLiteManager 1.2.0 [SQLite數據庫在線管理工具]
ZendOptimizer 3.2.0 [PHP腳本加速引擎]
OpenSSL 0.9.8d [HTTPS(SSL)安全傳輸協議]
附加組件:
一Perl、CGI支持(需下載ActivePerl):
APMServ 5.2.0 附帶的是MiniPerl,可以運行簡單的Perl、CGI程序。如果運行複雜的Perl、CGI程序,請下載ActivePerl,安裝在APMServ所在分區根目錄下的usr目錄中。假如APMServ所在目錄為E:/APMServ5.2.0,則將ActivePerl的安裝路徑選為E:/usr
服務器上用php集成環境好不好呢,哪款集成環境在服務器上使用比較好??
先回答你的第一個問題。
網上有人說適合,也有人說不適合的,不能說他們說的完全錯誤,但也不能說是完全正確的,具體問題具體分析,這種事情要看情況。
php集成環境的本質是啥?網上那些php集成環境和我們自己安裝的有啥區別呢?
其實沒多大差別,所謂的php集成環境只不過通過軟件替我們完成了一些比較麻煩的操作罷了,本質上沒有任何區別!那些程序開發者開發php集成環境軟件的時候,都要把apache與mysql等組件集成在軟件裡面,而這些apache等組件和自己安裝的是沒啥區別的,不過不建議使用精簡版的集成環境,可以使用完全版的php集成環境。
我打個比方,軟件的安裝版和綠化版其實沒毛線區別,有的集成環境集成組件後重新打包成安裝版罷了,而有的集成環境集成組件後將其綠化成綠色版集成環境,不過綠化後的php集成環境確實方便,插上U盤,插其他電腦就可以直接運行網站,用軟件能省略了很多繁瑣步驟,確實很便捷。php集成環境是一種工具,工具本身就是為了方便,當然你也可以自行安裝,比較費事罷了,集成環境功能多,方便使用。
關於你的第二個問題“哪款集成環境在服務器上使用比較好??
既然集成環境適合在服務器上運行,那是不是就可以直接用在服務器上?看你的需求了,同時也要看是哪種集成環境。
選擇哪種php集成環境做服務器環境主要有以下幾點要考慮
1、大部分php集成環境集成的版本都不是最新(這條無關緊要,因為現在很多網站都不是用最新的,舊版本程序不一定適合新的啊!)
解決:可以選擇那些集成了新組件的集成環境,或者能自定義設置版本的php集成環境
2、一些php集成環境可能為了減小軟件體積,閹割了一些組件,所以不太適合運營使用
解決:你可以選擇一些集成了完整版組件的集成環境。
3、一些php集成環境因為某些配置文件是自動生成,有些配置是不能自己改,就算你改了也會被程序自動改回來
解決:目前有一些php集成環境還是能完全自己修改和自定義配置的,不會被軟件自動生死所限制。
具體用哪個,你可以根據自己的需求選擇,畢竟每個集成環境都各具特點,按需選擇。
有的人說用集成環境不安全,自己配置的比較安全,我的乖乖,安不安全看誰在用,你本身啥都不懂,你就算自己配置了php環境,你敢保證是安全的嗎?本身集成環境和自己安裝的就沒啥區別,很多集成環境我們自己都說可以隨意配置的,和你自行分開下載安裝的配置是一毛一樣的。安不安全,看是誰在用,就好比天天有人說這個語言好,那個語言不好,其實語言沒所謂好壞,畢竟各有其特點,語言好不好得看用他的人。
phpwamp和PHPCUSTOM這兩款集成環境很適合在服務器運行,集成官方完全組件,無閹割無精簡,是完全版的,而且支持完全的配置自定義,php版本等自定義,還能同時運行多版本,自帶重啟任務。
PHPCUSTOM自帶重啟任務,能定時重啟服務器,定時重啟網站服務等。
純綠色很方便,所集成的組件是完全的,適合測試,也比較適合服務器
累死了,純手工打字啊,採納我給我賺點分吧。
php開發中app怎麼接入支付寶
準備工作
APP支付接口:alipay.trade.app.pay
服務器端使用框架:TP5
登錄螞蟻金服開放平台 — 創建應用 — 添加App支付功能。具體查看官方文檔
下載官方 SDK (PHP版本資源)——當前SDK版本:106 生成時間:2017-07-25 11:46:10
將SDK原碼放置在TP5的vendor目錄下的alipay文件夾(可根據實際使用框架技術進行實際調整)。
支付接口調用原理
1、APP支付系統架構
APP支付系統架構圖
2、數據校驗原理
數據校驗原理
應用公鑰(商戶自身的RSA公鑰):支付寶使用該公鑰驗證該交易是商戶發起。
支付寶公鑰(支付寶的RSA公鑰):商戶使用該公鑰驗證該結果是支付寶返回的。
3、系統交互流程
系統交互流程圖
4、支付場景具體實現流程(最詳細圖解)
在集成App支付能力時,建議實現如下支付流程,創建訂單並支付,根據返回的結果確定支付狀態,並進行相應的異常處理,其過程如下圖所示.
支付場景具體實現流程
商家APP在創建訂單並且喚起支付寶APP支付,流程如上圖所示,根據第2.2,3步返回的支付結果,確定支付狀態,並且做相應的異常處理(必要時關閉訂單)
代碼實現
步驟1:商戶APP端請求商戶服務器接口,提交訂單數據。
步驟2:商戶服務器端接收數據,然後對數據進行簽名,返回請求參數到商戶APP端。
官方接口文檔:
——代碼如下:
//vendor();為TP5框架的方法,作用:導入第三方框架類庫
vendor(‘alipay.aop.AopClient’);
vendor(‘alipay.aop.request.AlipayTradeAppPayRequest’);
//實例化支付接口
$aop = new \AopClient();
$aop-gatewayUrl = “”; //支付寶網關
$aop-appId = “應用ID,填寫你的APPID”;
$aop-rsaPrivateKey = “商戶私鑰,您的原始格式RSA私鑰()”;
$aop-alipayrsaPublicKey = “支付寶公鑰”;
$aop-apiVersion = ‘1.0’;
$aop-signType = “簽名方式,如 RSA2 “;
$aop-postCharset = ‘UTF-8’;
$aop-format = “json”;
//實例化具體API對應的request類,類名稱和接口名稱對應,當前調用接口名稱:alipay.trade.app.pay
$appRequest = new \AlipayTradeAppPayRequest();
//SDK已經封裝掉了公共參數,這裡只需要傳入業務參數
$bizcontent = json_encode([
‘body’ = ‘餘額充值’, //訂單描述
‘subject’ = ‘充值’, //訂單標題
‘timeout_express’ = ’30m’,
‘out_trade_no’ = ‘20170125test01’, //商戶網站唯一訂單號
‘total_amount’ = ‘0.01’, //訂單總金額
‘product_code’ = ‘QUICK_MSECURITY_PAY’, //固定值
]);
$appRequest-setNotifyUrl($url); //設置異步通知地址
$appRequest-setBizContent($bizcontent);
//這裡和普通的接口調用不同,使用的是sdkExecute
$response = $aop-sdkExecute($appRequest);
//htmlspecialchars是為了輸出到頁面時防止被瀏覽器將關鍵參數html轉義,實際打印到日誌以及http傳輸不會有這個問題
echo htmlspecialchars($response);//就是orderString 可以直接給客戶端請求,無需再做處理。
// 如果最後有問題可以嘗試把htmlspecialchars方法去掉,直接返回$response
說明:sdkExecute()方法,作用生成簽名,詳細步驟如下:
將請求參數組裝分下列3步,以最後第三步獲取到的請求為準。
1)將請求參數的鍵按字典排序,然後按照key=valuekey=value方式拼接,得到未簽名原始字符串如下:
app_id=2015052600090779biz_content={“timeout_express”:”30m”,”product_code”:”QUICK_MSECURITY_PAY”,”total_amount”:”0.01″,”subject”:”1″,”body”:”我是測試數據”,”out_trade_no”:”IQJZSRC1YMQB5HU”}charset=utf-8format=jsonmethod=alipay.trade.app.pay¬ify_url=;sign_type=RSA2×tamp=2016-08-25 20:26:31version=1.0
2)再對原始字符串進行簽名
app_id=2015052600090779biz_content={“timeout_express”:”30m”,”product_code”:”QUICK_MSECURITY_PAY”,”total_amount”:”0.01″,”subject”:”1″,”body”:”我是測試數據”,”out_trade_no”:”IQJZSRC1YMQB5HU”}charset=utf-8format=jsonmethod=alipay.trade.app.pay¬ify_url=;sign_type=RSA2×tamp=2016-08-25 20:26:31version=1.0sign=cYmuUnKi5QdBsoZEAbMXVMmRWjsuUj+y48A2DvWAVVBuYkiBj13CFDHu2vZQvmOfkjE0YqCUQE04kqm9Xg3tIX8tPeIGIFtsIyp/M45w1ZsDOiduBbduGfRo1XRsvAyVAv2hCrBLLrDI5Vi7uZZ77Lo5J0PpUUWwyQGt0M4cj8g=
3)最後對請求字符串的所有一級value(biz_content作為一個value)進行encode,編碼格式按請求串中的charset為準,沒傳charset按UTF-8處理,獲得最終的請求字符串:
app_id=2015052600090779biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22IQJZSRC1YMQB5HU%22%7Dcharset=utf-8format=jsonmethod=alipay.trade.app.pay¬ify_url=http%3A%2F%2Fdomain.merchant.com%2Fpayment_notifysign_type=RSA2×tamp=2016-08-25%2020%3A26%3A31version=1.0sign=cYmuUnKi5QdBsoZEAbMXVMmRWjsuUj%2By48A2DvWAVVBuYkiBj13CFDHu2vZQvmOfkjE0YqCUQE04kqm9Xg3tIX8tPeIGIFtsIyp%2FM45w1ZsDOiduBbduGfRo1XRsvAyVAv2hCrBLLrDI5Vi7uZZ77Lo5J0PpUUWwyQGt0M4cj8g%3D
步驟3:商戶APP接收從商戶服務器端返回的請求參數,然後調起支付寶支付面板。
若用戶支付成功,支付寶會同步給商戶APP端返回一個支付結果。相應地,支付寶也會通過異步通知給商戶服務器端返回一個支付結果。
注意:由於同步通知和異步通知都可以作為支付完成的憑證,且異步通知支付寶一定會確保發送給商戶服務端。為了簡化集成流程,商戶可以將同步結果僅僅作為一個支付結束的通知(忽略執行校驗),實際支付是否成功,完全依賴服務端異步通知。
步驟4:服務端異步通知處理機制(支付寶主動發起通知,該方式才會被啟用)
官方接口文檔:
注意點:
1)必須保證服務器異步通知頁面(notify_url)上無任何字符,如空格、HTML標籤、開發系統自帶拋出的異常提示信息等;
2)支付寶是用POST方式發送通知信息,因此該頁面中獲取參數的方式,如:$_POST[‘out_trade_no’];
3)程序執行完後必須打印輸出“success”(不包含引號)。如果商戶反饋給支付寶的字符不是success這7個字符,支付寶服務器會不斷重發通知,直到超過24小時22分鐘。一般情況下,25小時以內完成8次通知(通知的間隔頻率一般是:4m,10m,10m,1h,2h,6h,15h);
4)當商戶收到服務器異步通知並打印出success時,服務器異步通知參數notify_id才會失效。
——代碼如下:
$aop = new AopClient;
$aop-alipayrsaPublicKey = ‘請填寫支付寶公鑰,一行字符串’;
$flag = $aop-rsaCheckV1($_POST, NULL, “RSA2”); //驗證簽名
if($flag){
//校驗通知數據的正確性
$out_trade_no = $_POST[‘out_trade_no’]; //商戶訂單號
$trade_no = $_POST[‘trade_no’]; //支付寶交易號
$trade_status = $_POST[‘trade_status’]; //交易狀態trade_status
$total_amount = $_POST[‘’total_amount’]; //訂單的實際金額
$app_id = $_POST[‘app_id’];
if($app_id!=$this-config[‘app_id’]) exit(‘fail’); //驗證app_id是否為該商戶本身
//只有交易通知狀態為TRADE_SUCCESS或TRADE_FINISHED時,支付寶才會認定為買家付款成功。
if($trade_status != ‘TRADE_FINISHED’ $trade_status != ‘TRADE_SUCCESS’)
exit(‘fail’);
//校驗訂單的正確性
if(!empty($out_trade_no)){
//1、商戶需要驗證該通知數據中的out_trade_no是否為商戶系統中創建的訂單號;
//2、判斷total_amount是否確實為該訂單的實際金額(即商戶訂單創建時的金額);
//3、校驗通知中的seller_id(或者seller_email) 是否為out_trade_no這筆單據的對應的操作方(有的時候,一個商戶可能有多個seller_id/seller_email)。
//上述1、2、3有任何一個驗證不通過,則表明本次通知是異常通知,務必忽略。在上述驗證通過後商戶必須根據支付寶不同類型的業務通知,正確的進行不同的業務處理,並且過濾重複的通知結果數據。
//校驗成功後在response中返回success,校驗失敗返回failure
}
exit(‘fail’);
}
echo”fail”; //驗證簽名失敗
步驟5:當商戶APP端接收到支付寶的同步返回結果為成功時,商戶APP端再請求商戶服務器端API,判斷訂單最終支付結果,並做出最終響應。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/151556.html