支付寶支付(二)—PC電腦網站支付(alipay.trade.page.pay)


  在看這篇文章之前,希望你先看上一篇文章支付寶支付(一)—H5手機網站支付2.0(alipay.trade.wap.pay) ,涉及到的部分准備工作這里就不再重復了,有疑問的看上一篇文章或者查閱官方文檔。

一、PC收銀台產品介紹

  這篇文章我們先來介紹一下支付寶Page支付(也叫作電腦網站支付)。

  電腦網站支付產品幫助用戶在商家 PC 網站購買商品支付時,跳轉到支付寶 PC 網站收銀台完成付款。 交易資金直接打入商家支付寶賬戶,實時到賬。

  用戶可以通過輸入支付寶賬號、密碼完成支付。也可以通過支付寶APP掃碼完成支付。

  用戶交易款項即時到賬,提供退款、資金分賬、對賬等配套服務。

1、應用場景

  以下流程僅供參考,開發者可根據自身網站進行調整:

  步驟1:買家在商戶網站選擇需購買的商品,填寫訂單信息后,點擊立即購買,如下圖所示。

   步驟2:網頁跳轉到支付寶收銀台頁面,此時有兩種付款方式供用戶選擇:

  • 用戶可以使用支付寶 APP 掃一掃屏幕二維碼,待手機提示付款后選擇支付工具輸入密碼即可完成支付,如圖1所示;

  • 如果不使用手機支付,也可以點擊圖 1 頁面右側的 登錄賬戶付款,輸入支付寶賬號和支付密碼登錄 PC 收銀台,如圖 2 所示。

  步驟3:用戶選擇付款方式,輸入支付密碼后點擊 確認付款,跳轉到付款成功頁后則表示付款成功。

   例如我們常用的優酷網頁版購買會員即可以使用電腦網站支付,露出前置支付寶二維碼掃碼支付,開發者可以自行前往體驗。

2、准入條件

  • 企業支付寶賬戶或個體工商戶均可申請,

  • 提供真實有效的營業執照,且支付寶賬戶名稱需與營業執照主體一致;

  • 提供能正常訪問的網站地址且頁面顯示完整,且頁面有完整商品和價格信息;

  • 網站通過ICP備案,有明確的運營內容與完整的商品和價格信息。

  注意: 團購類網站不支持個體商家簽約。

3、計費模式

  電腦網站支付的簽約費率如下表所示:

服務名稱 費率 服務期限
單筆費率 0.6% 1年

4、使用說明

  電腦網站支付產品包含的接口和描述如下:

接口英文名 接口中文名
alipay.trade.page.pay 統一收單下單並支付頁面接口
alipay.trade.refund 統一收單交易退款接口
alipay.trade.fastpay.refund.query 統一收單交易退款查詢接口
alipay.trade.query 統一收單線下交易查詢接口
alipay.trade.close 統一收單交易關閉接口
alipay.data.dataservice.bill.downloadurl.query 查詢對賬單下載地址
   注意:其實除了 alipay.trade.page.pay 手機網站支付接口,其他接口對於其他產品都是通用的
 

二、准備工作

  還是先上官方文檔入口

  【官方電腦網站支付快速接入文檔】

  前四個步驟這里就不再重復了,有興趣有疑問的查看上一篇文章支付寶支付(一)—H5手機網站支付2.0(alipay.trade.wap.pay)

1、創建應用並獲取APPID

2、配置應用環境

3、配置沙箱環境

4、服務端實現(集成並且配置SDK)

5、調用接口

  電腦網站支付產品包含兩類API:

  頁面跳轉類:需要從前端頁面以Form表單的形式發起請求,瀏覽器會自動跳轉至支付寶的相關頁面(一般是收銀台或簽約頁面),用戶在該頁面完成相關業務操作后再回跳到商戶指定頁面。例如本產品中的電腦網站支付接口alipay.trade.page.pay

  系統調用類:直接從服務端發起HTTP請求,支付寶會同步返回請求結果。例如本產品中的交易查詢等配套API。

6、調用流程圖

 

三、服務端具體封裝和操作過程

  前三個步驟這里就不再重復了,有興趣有疑問的查看上一篇文章支付寶支付(一)—H5手機網站支付2.0(alipay.trade.wap.pay)

1、將支付寶通用參數獨立配置在一個屬性文件中方便管理

2、讀取配置文件信息

3、加載接入參數並初始化AlipayClient

4、利用sdk封裝page支付代碼

  通用模塊,就在demo里面的 AliPayUtil.java 里面

  /**
     * alipay.trade.page.pay:統一收單下單並支付頁面接口(PC場景下單並支付)
     * @param aliPayMap
     * @return
     */
    public static String alipayTradePagePay(String out_trade_no, String total_amount){
        try {
            //(1)封裝bizmodel信息
            AlipayTradePagePayModel model = new AlipayTradePagePayModel();
            model.setOutTradeNo(out_trade_no);
            model.setSubject("支付寶電腦網站支付");
            model.setBody("支付寶電腦網站支付");
            model.setProductCode("FAST_INSTANT_TRADE_PAY");
            model.setTotalAmount(total_amount);
            model.setTimeoutExpress(staticAliPayProperties.getAli_timeout_express());
            //(2)設置請求參數
            AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
            alipayRequest.setReturnUrl(staticAliPayProperties.getAli_return_url());
            alipayRequest.setNotifyUrl(staticAliPayProperties.getAli_notify_url());
            alipayRequest.setBizModel(model);                                                                                                                                                               
            //(3)請求
            String form = alipayClient.pageExecute(alipayRequest).getBody();
            System.out.println("*********************\n返回結果為:"+form);
            return form;
        } catch (AlipayApiException e) {
            e.printStackTrace();
            return null;
        }
    }
    

  PC電腦網站支付和H5手機網站支付的區別重點看我標黃部分

5、模擬支付請求

  步驟1:控制層 AliPayController.java 寫請求方法 alipayTradePagePay

   步驟2:調取的接口和實現類

 

注意:

  (1)這里我隨機生成了商戶訂單號 out_trade_no,交易金額 total_amount 寫死了,正常業務處理中,我們是根據你的業務實際情況處理

  (2)里面涉及到的其他的工具類,最后的demo里面會提供。當然,你也可以自己隨機商城,保持不重復的原則即可

  (3)實際操作中,在調取之前,我們需要處理具體的業務邏輯,因為本文只總結支付寶相關的,就不補充了。例如:訂單金額計算處理;商戶訂單和支付寶訂單的關聯和存儲,商戶訂單和支付寶訂單可能是多對一的關系;支付寶訂單需要保存,因為在回調的時候你需要根據支付寶訂單的 out_trade_no 識別支付寶通知的訂單結果;你可以把它存儲在redis或者持久化到數據庫中。

  步驟3:模擬支付請求

  這里,我是寫了一個html頁面,通過前端請求到后台調取控制層方法模擬實際支付請求的

   對於返回的form內容處理方式有多種,這里繼續采取前端處理模式,其他的不做過多說明了,有興趣的看上一篇文章。

6、運行查看測試結果

   點擊“統一收單下單並支付頁面”按鈕,其他按鈕功能開發后面有時間會發博文介紹,不過demo里面已經有了,你也可以自己先測試,請求后控制台日志顯示

 

   詳細form內容如下:

<form name="punchout_form" method="post" action="https://openapi.alipaydev.com/gateway.do?charset=utf-8&method=alipay.trade.page.pay&sign=Rj41eaOzYORHmEar8Z%2Fgcc6BLxb%2Buz55KTgKCNfEV3dklhz%2BkvYapS6ZZgLzs1NwO67P7dUz1%2Fv0cvD9%2FrhFiqSC9L4EGI%2Bd7j7TI%2FCEMrbrY8je656YWWT8cH7st8Oh0gtMqGeuAw4UwKIy%2FjBOsTPZXGmQVabLx%2FNLpYE%2BNFJ0%2BGjt%2FOVdjLiEP%2F7swlnTQBVk8%2BVkn1A5UgbaD%2BKWLIoI58%2BeD0sY70BHA%2FB%2Bwh7RUBSfzuDwWC%2FjW%2B%2BXDdcRq4yrifGqzGvaYw%2Fx4lMkdpuuAYzW7F82UZoe7JssHikRFS41b9wy5NA7fnoJoQTjbVBkbKoNFaa2e81ZyrrPUQ%3D%3D&return_url=http%3A%2F%2Ftrt.wgzvip.com%2Fapi%2FaliReturnPay%2FreturnPaySynchronization&notify_url=http%3A%2F%2Ftrt.wgzvip.com%2Fapi%2FaliReturnPay%2FreturnPayAsynchronous&version=1.0&app_id=2021000116673834&sign_type=RSA2&timestamp=2020-08-03+18%3A05%3A37&alipay_sdk=alipay-sdk-java-3.3.87.ALL&format=json">
<input type="hidden" name="biz_content" value="{&quot;body&quot;:&quot;支付寶電腦網站支付&quot;,&quot;out_trade_no&quot;:&quot;20200803180537168772054&quot;,&quot;product_code&quot;:&quot;FAST_INSTANT_TRADE_PAY&quot;,&quot;subject&quot;:&quot;支付寶電腦網站支付&quot;,&quot;timeout_express&quot;:&quot;30m&quot;,&quot;total_amount&quot;:&quot;0.01&quot;}">
<input type="submit" value="立即支付" style="display:none" >
</form>
<script>document.forms[0].submit();</script>

  我們可以很清楚的看到,支付寶返回的是一個form表單的內容,我們在前端接收后按照上面前端的處理方法處理后,發現點擊“統一收單下單並支付頁面”按鈕之后,直接跳到了支付寶下面頁面,按照以下步驟操作就行

  方式一:沙箱錢包掃描二維碼支付

 

   方拾二:賬號密碼登錄支付

 

四、同異步結果處理

  這部分處理與H5手機網站支付一樣,不再重復啰嗦了,有疑問的查看上一篇文章支付寶支付(一)—H5手機網站支付2.0(alipay.trade.wap.pay)

 

五、demo示例下載

  查看上一篇文章支付寶支付(一)—H5手機網站支付2.0(alipay.trade.wap.pay)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM