支付寶電腦網站支付


進入螞蟻金服開放平台->開發者中心

按照文檔新建應用,下載RSA密鑰秘鑰生成器,然后設置為應用公鑰,設置完成后會自動生成支付寶公鑰。

下載demo代碼,下圖為web支付,包括一系列功能及回調通知、異步通知。

更改AlipayConfig.java代碼

將demo改成servlet請求,方便邏輯處理返回其他數據

AlipayConfig.java

package com.alipay.config;

import java.io.FileWriter;
import java.io.IOException;

/* *
 *類名:AlipayConfig
 *功能:基礎配置類
 *詳細:設置帳戶有關信息及返回路徑
 *修改日期:2017-04-05
 *說明:
 *以下代碼只是為了方便商戶測試而提供的樣例代碼,商戶可以根據自己網站的需要,按照技術文檔編寫,並非一定要使用該代碼。
 *該代碼僅供學習和研究支付寶接口使用,只是提供一個參考。
 */

public class AlipayConfig {
    
//↓↓↓↓↓↓↓↓↓↓請在這里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

    // 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號
    public static String app_id = "APPID";
    
    // 商戶私鑰,您的PKCS8格式RSA2私鑰
    public static String merchant_private_key = "RSA私鑰";
    
    // 支付寶公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm 對應APPID下的支付寶公鑰。
    public static String alipay_public_key = "根據RSA公鑰生成的支付寶公鑰";
    
    // 服務器異步通知頁面路徑  需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問
    public static String notify_url = "http://異步通知接口地址/notify_url";
    
    // 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問
    public static String return_url = "http://同步通知地址/Alipay/return_url.jsp";


    // 簽名方式
    public static String sign_type = "RSA2";
    
    // 字符編碼格式
    public static String charset = "utf-8";
    
    // 支付寶網關
    public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
    

//↑↑↑↑↑↑↑↑↑↑請在這里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

   
}

Pay.java

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //獲取要向支付寶支付的參數,由頁面傳過來
        //商戶訂單號,商戶網站訂單系統中唯一訂單號,必填
        String out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"),"UTF-8");
        //付款金額,必填
        String total_amount = new String(request.getParameter("WIDtotal_amount").getBytes("ISO-8859-1"),"UTF-8");
        //訂單名稱,必填
        String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"),"UTF-8");
        //商品描述,可空
        String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"),"UTF-8");
        
        
        //獲得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
        
        //設置請求參數
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        alipayRequest.setReturnUrl(AlipayConfig.return_url);  //設置同步回調通知
        alipayRequest.setNotifyUrl(AlipayConfig.notify_url);  //設置異步回調通知
        
        //設置支付參數
        alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," 
                + "\"total_amount\":\""+ total_amount +"\"," 
                + "\"subject\":\""+ subject +"\"," 
                + "\"body\":\""+ body +"\"," 
                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
        
        //若想給BizContent增加其他可選請求參數,以增加自定義超時時間參數timeout_express來舉例說明
        //alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," 
        //        + "\"total_amount\":\""+ total_amount +"\"," 
        //        + "\"subject\":\""+ subject +"\"," 
        //        + "\"body\":\""+ body +"\"," 
        //        + "\"timeout_express\":\"10m\"," 
        //        + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
        //請求參數可查閱【電腦網站支付的API文檔-alipay.trade.page.pay-請求參數】章節
        
        //請求
        String result = null;
        try {
            result = alipayClient.pageExecute(alipayRequest).getBody();
        } catch (AlipayApiException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        //輸出
        /*打印的是支付寶付款碼頁面<form name="punchout_form" method="post" action="https://openapi.alipaydev.com/gateway.do?sign=NM7Zk33PH6W%2BFxkXVMfcg4ZeTVas3YS5aJoktIiZZOLv1hO4o23yHQvSW%2BTRt5RJCMJFcX0V%2BJQPoHwznZDA31ZywODBfqTjhsHaBenpbmxVOXjKSJE0ODI8Wf39d2AMDRThIJT6m4FtGYvbHMAgHeDLhX0X5HYgg5mGzZJLYAXbcgBKJioULyEX5Yfn%2Bd7twx8F01pJWsfeCFWkQNd46GetzQ83HivXDEmHXEbV3N47gjgJYBSlptLhK%2Bj9d8QTzvYJ6el3D&timestamp=2018-07-06+10%3A17%3A37&sign_type=RSA2&notify_url=http%3A%2F%2Flocalhost%3A80%2FAlipay%2Fnotify_url.jsp&charset=utf-8&app_id=20160804&method=alipay.trade.page.pay&return_url=http%3A%2F%2Flocalhost%3A80%2FAlipay%2Freturn_url.jsp&version=1.0&alipay_sdk=alipay-sdk-java-dynamicVersionNo&format=json">
            <input type="hidden" name="biz_content" value="{&quot;out_trade_no&quot;:&quot;201876101732228&quot;,&quot;total_amount&quot;:&quot;1000&quot;,&quot;subject&quot;:&quot;測試&quot;,&quot;body&quot;:&quot;&quot;,&quot;product_code&quot;:&quot;FAST_INSTANT_TRADE_PAY&quot;}">
            <input type="submit" value="立即支付" style="display:none" >
            </form>
            <script>document.forms[0].submit();</script>*/
        response.resetBuffer();
        response.setContentType("text/html;charset=UTF-8");
        response.getOutputStream().write(result.toString().getBytes("utf-8"));
        response.getOutputStream().flush();
        //response.getWriter().println(result);
        //response.getWriter().flush();
    }

支付接口源碼

問題:

回調通知驗簽成功,異步通知驗簽失敗。要把異步通知中demo代碼的這段注釋


免責聲明!

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



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