1. 程式人生 > >PHP下基於MVC結構實現支付寶交易介面

PHP下基於MVC結構實現支付寶交易介面

最近因為工作需要學習使用了支付寶的“即時到賬交易介面”,在學習應用的過程中走了很多的彎路,也感覺到官方說明文件中有些許不足 ,這裡一併總結下來。
<h2>名詞解釋:</h2>
商戶:通過支付寶來銷售商品的商家,即支付寶介面實現者。 客戶:通過支付寶購買商品的商家,即支付寶介面使用者。 同步通知: 非同步通知:
<h2>支付寶介面實現原理</h2>

官方的圖片很形象的表達了支付寶介面的原理: 

alipay

<h3>商戶構建請求資料</h3>
首先,商戶網站根據使用者的操作以及實際情況在本地構造請求資料,例如客戶要付款的金額、在商戶網站中的唯一訂單號、產品名稱等等,這些資料是要在本地確定下來,然後傳送給支付寶系統的。
<h3>傳送請求資料</h3>
商戶將資料整理好後,通過支付寶提供的介面傳送給支付寶系統伺服器,事實上,關於整合資料的過程,支付寶已經提供了非常實用的demo,屆時直接複製,然後根據實際需要再進行補充即可。
<h3>交易進行</h3>
這是支付寶系統內部的事情,就不多贅述了……
<h3>返回響應資料</h3>
我認為這裡只支付寶介面實現中一個很關鍵的過程,支付寶將交易結果回傳是通過兩種方式的,一種叫做頁面迴轉同步通知,另一種叫做伺服器非同步通知。 頁面迴轉同步通知:簡單來說就是將交易結果顯示給客戶看,在付款完成,支付寶系統現實交易完成後,頁面會在幾秒之後自動跳轉到商戶指定的一個網址去,而交易的結果(如支付寶交易號等)會以GET方式附加到網址裡面,到時商戶通過自行提取,然後顯示在頁面中,告知客戶即可。 伺服器非同步通知:簡單來說就是將更詳細的交易結果以POST的方式直接傳送給商戶的伺服器。 我個人認為這是頁面迴轉同步通知是用來給客戶看的,伺服器非同步通知是用來更新商戶伺服器的,最好不要根據頁面迴轉同步通知的結果來更新資料庫,一來非同步通知的資訊量更大,資訊更完善,二來把“渲染資訊為頁面”與“將資訊更新到資料庫”兩個功能分開也更符合模組化思想,歡迎指正。
<h3>對響應資料進行處理</h3>
就是根據支付寶系統返回的交易結果來更新資料庫了,比如記錄交易時間、訂單號、交易金額等等了。
<h2>實戰:在MVC模式下實現支付寶介面</h2>
就把我開發介面的經驗跟教訓分享給大家吧。 工作中使用的是Yii框架1.1版本,基於MVC模式。
<h3>支付寶demo資料夾</h3>

我們在支付寶官網可以下到即時到賬收款的開發包: 

<a href="http://download.alipay.com/public/api/base/alipaydirect.zip">http://download.alipay.com/public/api/base/alipaydirect.zip</a>

 這裡用PHP語言,UTF-8編碼的demo包,可以看到結構如下:   這個demo包放到localhost中是可以直接用的,預設就是開啟index.php檔案作為入口。 下面介紹各個檔案: Images:這是index.php的資原始檔夾,存放圖片等。 lib:這是庫函式檔案,不需要改動,只需要仿照demo引用到各個功能模組中就可以了。 alipay.config.php:這是支付寶介面的配置檔案,在裡面可以填寫商戶合作者ID與祕鑰,其他內容一般不需要改動。 cacert.pem:這好像是用來驗證連結的檔案,就是驗證return_url跟notify_url連結是不是由支付寶系統發出的…… index.php:支付寶介面入口檔案,其實就是HTML表單了,將資訊提交給alipayapi.php檔案。 log.txt:這是日誌檔案,使用支付寶自帶的logResult(str)函式寫入內容,如果要除錯notify_url的話,這個檔案會非常有用!logResult()函式在alipay_core.function.php中! notify_url.php:伺服器非同步通知模板檔案,對伺服器非同步通知資訊的提取基本就是按裡面的步驟來走的,在MVC中可以看做是個action。 readme.txt:T_T我怎麼早沒看到這個檔案……關於每個檔案的介紹這裡面都有……關於cacert.pem和庫函式的使用裡面都有介紹,cacert.pem的要是還看不懂的話那就沒辦法了,因為我也不是很懂╮(╯_╰)╭ return_url:與notify_url.php相似,區別只是面向同步通知的。

<h3>MVC結構</h3>
<h4>Model</h4>
在資料表中的欄位有:
<pre class="lang:php decode:1 ">/**
 *  表 "bill_alipay_log" 模型.
 *
 @out_trade_no:商戶唯一訂單號,str
@notify_time:通知時間,datetime
@subject:商品名稱,str
@payment_type:支付型別,str
@trade_no:支付寶交易號,str
@trade_status:交易狀態,str
@gmt_create:交易建立時間,datetime
@gmt_payment:交易付款時間,datetime
@gmt_close:交易關閉時間,datetime
@buyer_id:買家支付寶使用者號,str
@buyer_email:買家支付寶賬號,str
@buyer_account_name:買家別名支付寶賬號,str
@total_fee:交易金額,decimal
@price:商品單價,decimal
@quantity:購買數量,int
@body:商品描述,str
@discount:折扣,int
 */
</pre>
&nbsp;
<h4>Controller</h4>
控制器下有四個action: actionIndex:用來渲染填寫資訊的表單頁面。(index.php) actionPush:用來接收使用者填寫的表單,並將資料傳送到支付寶伺服器。 actionReturnUrl:用來接收同步通知,渲染給客戶看的結果頁面。(return_url.php) actionNotifyUrl:用來接收非同步通知,更新資料庫。
<h4>View</h4>
index.php(客戶填寫的表單) return_url.php(給客戶看的交易結果)
<h3>原理</h3>
當需要交易時,首先呼叫actionIndex,來生成商戶訂單號、商品名稱、商品簡介、賣家支付寶賬號等資訊,然後顯示給使用者。比如在渲染給使用者的表單中,我只讓使用者填寫交易金額一項,其他的都是後臺生成的。 表單的action路徑指向actionPush,actionPush的內容基本上照搬alipayapi.php中的PHP程式碼,根據實際需要進行增刪即可。其中$return_url 值為 actionReturnUrl路徑,$notify_url值為actionNotifyUrl路徑。 actionReturnUrl是接收支付寶傳回的同步通知的,在交易完成後會呼叫這個方法(如果$return_url設定的對的話),基本照搬return_url.php中的程式碼,然後自行增刪即可,記得將最後輸出的結果渲染成頁面哦! actionNotifyUrl是接收伺服器非同步通知的,照搬notify_url.php中的程式碼,然後根據需要增加要獲取的資料,因為我發現交易狀態只有SUCCESS沒有FINISH,所以就刪除了判斷FINISH的語句,而是改成了如果交易狀態為SUCCESS的話,就更新資料庫。這個模組因為沒法看到輸出的資訊,如果有bug的話很難改,一個辦法是呼叫自帶的logResult()方法,它能將資訊寫到log.txt檔案中(如果檔案內容沒有更新的話就在伺服器裡搜尋一下log.txt……很有可能在根目錄下……或者在伺服器根目錄下建立一個log.txt……),這樣調bug的話就比較方便了。   PS:雖然官方文件中說通知會返回很多可選引數,但是很多可選引數是根本不會返回的(比如payment_close似乎在直接交易中就不會有)!我在這裡被坑了好久…… PS2:最好把官方的文件看一遍啊!
<h3>程式碼</h3>
<pre class="lang:php decode:1 ">public function actionIndex(){
/*生成訂單填寫頁面,頁面中填寫充值金額,提交到actionPush*/
/*
out_trade_no
subject
body
*/
//生成商戶訂單號
if(Yii::app()-&gt;user-&gt;isGuest){
$this-&gt;redirect(LOGIN_PAGE);
}
$userid = Yii::app()-&gt;user-&gt;id;
$out_trade_no = date('Ymd') .  date( "His") . sprintf("%05d",$userid) ;
//生成產品名稱
$subject = "快發充值";
//生成產品描述
$body = "這是快發充值產品";
$model = array(
"out_trade_no" =&gt; $out_trade_no,
"subject" =&gt; $subject,
"body" =&gt; $body,
);
$this-&gt;render("index", array('model' =&gt; $model));
}


</pre>
<pre class="lang:php decode:1 ">public function actionPush(){
/*將使用者提交的資訊及其他資訊仿照alipayapi推送到伺服器,在資料庫中建立記錄*/
require_once("alipay.config.php");
require_once("lib/alipay_submit.class.php");
/**************************請求引數**************************/


        //支付型別
        $payment_type = "1";
        //必填,不能修改
        //伺服器非同步通知頁面路徑
        $notify_url = "http://www.kuaifa.tv/aliPay/notifyUrl/";
        //需http://格式的完整路徑,不能加?id=123這類自定義引數
        //頁面跳轉同步通知頁面路徑
        $return_url = "http://www.kuaifa.tv/aliPay/returnUrl/";
        //需http://格式的完整路徑,不能加?id=123這類自定義引數,不能寫成http://localhost/
        //賣家支付寶帳戶
        //$seller_email = $_POST['WIDseller_email'];
        $seller_email = "
[email protected]
";
//必填
        //商戶訂單號
        $out_trade_no = $_POST['WIDout_trade_no'];
        //商戶網站訂單系統中唯一訂單號,必填
        //訂單名稱
        $subject = $_POST['WIDsubject'];
        //必填
        //付款金額
        $total_fee = $_POST['WIDtotal_fee'];
        //必填
        //訂單描述
        $body = $_POST['WIDbody'];
        //商品展示地址
        //$show_url = $_POST['WIDshow_url'];
        $show_url = "http://www.baidu.com";
//需以http://開頭的完整路徑,例如:http://www.商戶網址.com/myorder.html
        //防釣魚時間戳
        $anti_phishing_key = "";
        //若要使用請呼叫類檔案submit中的query_timestamp函式
        //客戶端的IP地址
        $exter_invoke_ip = "";
        //非區域網的外網IP地址,如:221.0.0.1


//在資料庫中建立記錄

$model = new AlipayLog;
$model-&gt;payment_type = $payment_type;
$model-&gt;out_trade_no = $out_trade_no;
$model-&gt;subject = $subject;
$model-&gt;total_fee = $total_fee;
$model-&gt;body = $body;
$model-&gt;userid = Yii::app()-&gt;user-&gt;id;
$model-&gt;insert();

/************************************************************/


//構造要請求的引數陣列,無需改動
$parameter = array(
"service" =&gt; "create_direct_pay_by_user",//介面名稱
"partner" =&gt; trim($alipay_config['partner']),//合作者id
"payment_type"=&gt; $payment_type,//
"notify_url" =&gt; $notify_url,
"return_url" =&gt; $return_url,//支付結束自動跳轉頁面http://api.test.alipay.net/atinterface/receive_return.htm 
"seller_email"=&gt; $seller_email,
"out_trade_no"=&gt; $out_trade_no,
"subject" =&gt; $subject,
"total_fee" =&gt; $total_fee,
"body" =&gt; $body,
"show_url" =&gt; $show_url,
"anti_phishing_key"=&gt; $anti_phishing_key,
"exter_invoke_ip"=&gt; $exter_invoke_ip,
"_input_charset"=&gt; trim(strtolower($alipay_config['input_charset']))//引數編碼字符集
);
//建立請求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit-&gt;buildRequestForm($parameter,"get", "確認");
echo $html_text;
}
</pre>
<pre class="lang:php decode:1 ">public function actionReturnUrl(){
/*根據支付寶的同步傳輸返回引數生成給使用者看的網頁,不涉及資料庫
*return:$out_trade_no, $trade_no, $result
*
*/
require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");
//計算得出通知驗證結果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify-&gt;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)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程式
//如果有做過處理,不執行商戶的業務程式
$result = "支付成功!";
}
else {
$result = "失敗!" . "trade_status=".$_GET['trade_status'];
}
$model = array(
"out_trade_no" =&gt; $out_trade_no,
"trade_no" =&gt; $trade_no,
"result" =&gt; $result,
);
$this-&gt;render('return_url', array('model' =&gt; $model));
//——請根據您的業務邏輯來編寫程式(以上程式碼僅作參考)——


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else {
//驗證失敗
//如要除錯,請看alipay_notify.php頁面的verifyReturn函式
$this-&gt;render('fail');
}
}
</pre>
<pre class="lang:php decode:1 ">public function actionNotifyUrl(){
/* *
 * 功能:支付寶伺服器非同步通知頁面
 * 版本:3.3
 * 日期:2012-07-23
 * 說明:
 * 以下程式碼只是為了方便商戶測試而提供的樣例程式碼,商戶可以根據自己網站的需要,按照技術文件編寫,並非一定要使用該程式碼。
 * 該程式碼僅供學習和研究支付寶介面使用,只是提供一個參考。




 *************************頁面功能說明*************************
 * 建立該頁面檔案時,請留心該頁面檔案中無任何HTML程式碼及空格。
 * 該頁面不能在本機電腦測試,請到伺服器上做測試。請確保外部可以訪問該頁面。
 * 該頁面除錯工具請使用寫文字函式logResult,該函式已被預設關閉,見alipay_notify_class.php中的函式verifyNotify
 * 如果沒有收到該頁面返回的 success 資訊,支付寶會在24小時內按一定的時間策略重發通知
 */


require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");


//計算得出通知驗證結果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify-&gt;verifyNotify();


if($verify_result) {//驗證成功
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//請在這裡加上商戶的業務邏輯程式代



//——請根據您的業務邏輯來編寫程式(以下程式碼僅作參考)——

    //獲取支付寶的通知返回引數,可參考技術文件中伺服器非同步通知引數列表

//商戶訂單號
if(!empty($_POST['out_trade_no'])){
$out_trade_no = $_POST['out_trade_no'];
}
//支付寶交易號
if(!empty($_POST['trade_no'])){
$trade_no = $_POST['trade_no'];
}
//交易狀態
if(!empty($_POST['trade_status'])){
$trade_status = $_POST['trade_status'];
}
//通知時間
if(!empty($_POST['notify_time'])){
$notify_time = $_POST['notify_time'];
}
//交易建立時間
if(!empty($_POST['gmt_create'])){
$gmt_create = $_POST['gmt_create'];
}
//交易付款時間
if(!empty($_POST['gmt_payment'])){
$gmt_payment = $_POST['gmt_payment'];
}
//交易關閉時間
if(!empty($_POST['gmt_close'])){
$gmt_close = $_POST['gmt_close'];
}
//買家支付寶使用者號
if(!empty($_POST['buyer_id'])){
$buyer_id = $_POST['buyer_id'];
}
//買家支付寶賬號
if(!empty($_POST['buyer_email'])){
$buyer_email = $_POST['buyer_email'];
}
//買家支付寶別名
if(!empty($_POST['buyer_account_name'])){
$buyer_account_name = $_POST['buyer_account_name'];
}
//交易金額
if(!empty($_POST['total_fee'])){
$total_fee = $_POST['total_fee'];
}
//單價
if(!empty($_POST['price'])){
$total_fee = $_POST['price'];
}
//交易數量
if(!empty($_POST['number'])){
$total_fee = $_POST['number'];
}
//折扣
if(!empty($_POST['discount'])){
$discount = $_POST['discount'];
}
/*logResult("我驗證通過了!rn");
logResult("out_trade_no:" . $out_trade_no . "rn");
logResult("trade_no" . $trade_no . "rn");
logResult("trade_status" . $trade_status . "rn");
logResult("notify_time" . $notify_time . "rn");
logResult("gmt_create" . $gmt_create . "rn");
logResult("gmt_payment" . $gmt_payment . "rn");
logResult("buyer_id" . $buyer_id . "rn");
logResult("buyer_email" . $buyer_email . "rn");
logResult("total_fee" . $total_fee . "rn");*/


if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程式
//如果有做過處理,不執行商戶的業務程式

//注意:
//該種交易狀態只在一種情況下出現——開通了高階即時到賬,買家付款成功後。


        //除錯用,寫文字函式記錄程式執行情況是否正常
        //logResult("這裡寫入想要除錯的程式碼變數值,或其他執行的結果記錄");
AlipayLog::model()-&gt;updateByPk($out_trade_no,array('trade_no' =&gt; $trade_no,'trade_status' =&gt; $trade_status, 'notify_time' =&gt; $notify_time, 'gmt_create' =&gt; $gmt_create,'gmt_payment' =&gt; $gmt_payment,'total_fee' =&gt; $total_fee,));
if(!empty($buyer_account_name)){
AlipayLog::model()-&gt;updateByPk($out_trade_no,array('buyer_account_name' =&gt; $buyer_account_name));
}
if(!empty($buyer_email)){
AlipayLog::model()-&gt;updateByPk($out_trade_no,array('buyer_email' =&gt; $buyer_email));
}
if(!empty($buyer_id)){
AlipayLog::model()-&gt;updateByPk($out_trade_no,array('buyer_id' =&gt; $buyer_id));
}
if(!empty($gmt_close)){
AlipayLog::model()-&gt;updateByPk($out_trade_no,array('gmt_close' =&gt; $gmt_close));
}
if(!empty($discount)){
AlipayLog::model()-&gt;updateByPk($out_trade_no,array('discount' =&gt; $discount));
}
if(!empty($price)){
AlipayLog::model()-&gt;updateByPk($out_trade_no,array('price' =&gt; $price));
}
if(!empty($number)){
AlipayLog::model()-&gt;updateByPk($out_trade_no,array('number' =&gt; $number));
}
//logResult("我在success裡!n");
    }


//——請根據您的業務邏輯來編寫程式(以上程式碼僅作參考)——
echo "success";//請不要修改或刪除

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else {
    //驗證失敗
    echo "fail";


    //除錯用,寫文字函式記錄程式執行情況是否正常
}


}//action
</pre>

相關推薦

PHP基於MVC結構實現支付交易介面

最近因為工作需要學習使用了支付寶的“即時到賬交易介面”,在學習應用的過程中走了很多的彎路,也感覺到官方說明文件中有些許不足 ,這裡一併總結下來。 <h2>名詞解釋:</h2> 商戶:通過支付寶來銷售商品的商家,即支付寶介面實現者。 客戶:通過支付寶購

php實現支付授權登錄

gin mem pau info redirect direct ember csrf攻擊 登錄 第一步: 登錄到螞蟻金服開放平臺 https://open.alipay.com/platform/home.htm,前提是有商戶號。創建應用之後,然後到開發者中心開通對應功

Spring MVC+Spring+Mybatis實現支付支付功能(圖文詳解)

通用 ltr 由於 題解 urn ipa 源代碼 ram abi 前言 本教程詳細介紹了如何使用ssm框架實現支付寶支付功能。本文章分為兩大部分,分別是「支付寶測試環境代碼測試」和「將支付寶支付整合到ssm框架」,詳細的代碼和圖文解釋,自己實踐的時候一定仔細閱讀相關文

Xposed框架實現支付微信生成指定金額和備註的二維碼連結

今年Xposed框架實現了重大進步免ROOT,任何手機都可以安裝,門檻大大降低.開發了幾年hook了,最近以學習為目的開發出實現了兩大支付軟體動態生成支付二維碼的關鍵技術 開發工具:android studio3.1 環境:() Xposed框架版本0.16 支付寶版本10.

PHP實現支付小程式使用者授權的工具類

背景 最近專案需要上線支付寶小程式,同時需要走使用者的授權流程完成使用者資訊的儲存,以前做過微信小程式的開發,本以為實現授權的過程是很簡單的事情,但是再實現的過程中還是遇到了不少的坑,因此記錄一下實現的過程 學到的知識 支付寶開放介面的呼叫模式以及實現方式 支付寶小程式授權的流程 RSA加密方式 吐

PHP實現支付手機WAP支付接入說明

因為專案原因,最近剛在專案中接入了支付寶的支付,故將支付過程記錄下來以備檢視。 專案背景:該專案為手機WAP專案,所以接入的是支付寶的手機網站支付型別。 首先,在支付寶官方下載SDK和DEMO: https://docs.open.alipay.com/203/105910

php實現支付當面付(掃碼支付)功能

環境依賴 PHP5.0以上,且需要開啟CURL服務、SSL服務。 注意事項 1.檔案開頭的配置資訊必須完善 2.商戶私鑰需填寫對應簽名演算法型別的私鑰,如何生成金鑰參考: 2.1 生成RSA金鑰 2.2 建立應用 <?php header('Cont

ASP.NET實現支付接口功能

接口 系統 func error 程序 dex ges img user 最近做系統,需要實現在線支付功能,毫不猶豫,選擇的是支付寶的接口支付功能。這裏我用的是即時到帳的接口,具體實現的步驟如下: 一、下載支付寶接口包 下載地址:

HTML+CSS+JS簡單實現支付付款界面效果

6.5 body pre -c css brush ges line col HTML+JS部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

Python實現支付在線支付

mic code 找到 IT gpo .html 折騰 功能 title 最近在做支付寶功能,折騰了半天,終於找到解決辦法!現將鏈接貼在這裏http://www.mamicode.com/info-detail-2212321.htmlPython實現支付寶在線支付

JAVA實現支付提現到個人賬戶

前言:需求是使用者將平臺上的餘額提現到支付寶 一、申請開發者賬號APPID、商戶私鑰、支付寶公鑰-開發者平臺:https://docs.open.alipay.com-注意:商戶私鑰支付寶平臺下載工具自動生成 二、引入SDK工具包:com.alipay.sdk:alipay-sdk-java:3.4.49

android-實現支付支付從底部彈窗效果

前言 我們再用支付寶支付的時候,會從底部彈上來一個對話方塊,讓我們選擇支付方式等等,今天我們就來慢慢實現這個功能 效果圖 實現 主介面很簡單,就是一個按鈕,點選後跳到支付詳情的Fragment中 package com.example.hfs.alipayuidemo; impor

Node.js實現支付H5支付

1、      建立支付應用 1.1、根據需要選擇介面型別,這裡選擇支付應用。   1.2、選擇使用環境   1.3、簽約當面付(線下支付) 2、      使用alipay-sdk 2.1、 引入服務端SDK模組 npm i alipay-sdk 2.2、 配置app資訊 var AlipaySdk

## java實現支付掃碼支付Demo原始碼

java實現支付寶掃碼支付Demo原始碼 掃碼效果圖 做這個非常非常的困難,經歷了很多很多坑後才能做出來,在這裡貼一下相關的程式碼希望能幫助做支付開發的同事們,有不懂的問題可以諮詢我QQ76949433,提供技術解答 專案結構截圖: package com.

使用ssm框架實現支付支付功能

2.下載解壓匯入eclipse readme.txt請好好看一下。 只有一個Java配置類,其餘都是JSP。 3.配置AlipayConfig (1) 註冊螞蟻金服開發者賬號(免費,不像蘋果會收取費用) (2) 設定app_id和gatewayUrl 其中

Material之Behavior實現支付密碼彈窗 仿淘/天貓商品屬性選擇

今天的效果在支付寶、淘寶、京東等電商App中很常見。比如支付寶輸入密碼彈窗、商城下單時選擇商品屬性時,從下面浮動上來一個PopupWindow,那麼今天就帶大家用Behavior來實現這兩個效果,結果你會發現簡直只需要一行程式碼。 總結下現在用的APP:

在django中實現支付支付(支付介面呼叫)

支付寶支付 正式環境:用營業執照,申請商戶號,appid 測試環境:沙箱環境:https://openhome.alipay.com/platform/appDaily.htm?tab=info 支付寶提供介面:給商戶使用,收錢 -Java,php,C#的demo,沒有python的demo -git有人封裝

Django - 實現支付支付介面(沙箱環境)

目錄 注意事項 一、支付寶沙箱 1-1 官網入口  1-2 官方沙箱基礎配置 二、基於Django的支付Demo - 非官方,需pycryptodome模組​ 2-1 頁面A 獲取支付數額,傳送請求到後臺​ 2-2 頁面A 執行檢視函式 2-3 私

Java 從零開始實現支付支付(後臺)

框架使用的是spring boot 我們整合支付寶支付 也就需要提供兩個接口出來.一個是給前端 作用是拿到請求引數加簽返回給前端前端拿到我們返回的資料.進行調起支付就行了,第二個介面是提供給支付寶的伺服器,支付成功或者失敗的時候.支付寶的伺服器會回撥我們的這個介面.非同步通

asp.net 實現支付介面

//進入支付寶支付 protected void Button1_Click(object sender, EventArgs e) { string out_trade