支付寶沙箱應用


一、支付寶開放平台設置

1、首先登陸支付寶開放平台

網址:https://openhome.alipay.com/platform/home.htm

2、使用手機支付寶掃碼登錄

登錄后選擇沙箱操作頁面

3、進入沙箱應用選項后設置沙箱的基本信息。

不能使用safari瀏覽器,看不到右側詳情頁,建議使用chrome瀏覽器。

4、設置應用公鑰

公鑰生成器下載地址,下載對應版本的程序。

下載地址:https://alipay.open.taobao.com/docs/doc.htm?treeId=291&articleId=106097&docType=1

使用程序生成私鑰和公鑰。並將公鑰添加到沙箱中。(上圖所示位置)

 

 

5、下載安卓手機支付寶沙箱APP軟件,可以實現掃碼支付功能。

6、下載的軟件使用測試賬號登錄,賬號在沙箱賬號中獲得。

二、支付寶沙箱操作代碼

1、示例代碼下載

支付寶提供多種下載方式下載,這里只描述java版本的操作。

示例代碼地址:https://openclub.alipay.com/club/history/read/1692

 2、提交信息到支付寶網關的示例代碼

在項目中引入支付寶SDK:https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java

<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.7.1.ALL</version>
</dependency>

 

客戶端初始化操作,參數意義詳見下表。

AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE);

 

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do","2016072200101X","商戶私鑰","json","utf-8","支付寶公鑰","RSA2");

 

注意:這里要用沙箱的網關,而不是真正的支付寶網關。

提交信息到網關的示例代碼:

//獲得初始化的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);//異步返回頁面
    
    //商戶訂單號,商戶網站訂單系統中唯一訂單號,必填
    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");
    
    alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," 
            + "\"total_amount\":\""+ total_amount +"\"," 
            + "\"subject\":\""+ subject +"\"," 
            + "\"body\":\""+ body +"\"," 
            + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
    
    //請求
    String result = alipayClient.pageExecute(alipayRequest).getBody();
    
    //輸出
    out.println(result);

 

 

3、接收從支付寶網關返回的代碼

Map<String,String> params = new HashMap<String,String>();
    Map<String,String[]> requestParams = request.getParameterMap();
    for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
        String name = (String) iter.next();
        String[] values = (String[]) requestParams.get(name);
        String valueStr = "";
        for (int i = 0; i < values.length; i++) {
            valueStr = (i == values.length - 1) ? valueStr + values[i]
                    : valueStr + values[i] + ",";
        }
        //亂碼解決,這段代碼在出現亂碼時使用
        valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
        params.put(name, valueStr);
    }
    
    boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type); //調用SDK驗證簽名

    //——請在這里編寫您的程序(以下代碼僅作參考)——
    if(signVerified) {
        //商戶訂單號
        String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");
    
        //支付寶交易號
        String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");
    
        //付款金額
        String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");
        
        out.println("trade_no:"+trade_no+"<br/>out_trade_no:"+out_trade_no+"<br/>total_amount:"+total_amount);
    }else {
        out.println("驗簽失敗");
    }

 

至此支付寶沙箱接入過程全部完畢。

 


免責聲明!

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



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