程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> struts調用支付寶接口

struts調用支付寶接口

編輯:關於JSP

[java]

 
一、ACTION類關鍵代碼 沒用的包可以干掉

 

 


一、ACTION類關鍵代碼 沒用的包可以干掉[java] view plaincopyprint?package com.hzdracom.alipay.action; 
 
import it.sauronsoftware.base64.Base64; 
 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.net.HttpURLConnection; 
import java.util.HashMap; 
import java.util.Map; 
import java.util.ResourceBundle; 
 
import javax.servlet.http.HttpServletResponse; 
 
import org.apache.struts2.ServletActionContext; 
import org.dom4j.Document; 
import org.springframework.stereotype.Controller; 
 
import com.alibaba.fastjson.JSON; 
import com.hzdracom.action.BaseAction; 
import com.hzdracom.config.AlipayConfig; 
import com.hzdracom.util.AlipaySubmit; 
import com.hzdracom.util.HTTPService; 
import com.hzdracom.util.UtilDate; 
import com.hzlq.source.security.DESUtil; 
/*
 * 支付寶付款接口
 * @author ZhuangZi
 * @Directions 
 * @version $Id: AliPayAction.java,v 0.1 2013-3-27 下午04:49:57 ZhuangZi Exp $
 */ 
@Controller 
public class AliPayAction extends BaseAction { 
    private String              phoneCode; 
    private String              totalfee; 
 
    /**
     * 調用支付寶接口
     * @author ZhuangZi
     * @class com.hzdracom.alipay.action.AliPayAction
     * @method AliPay
     * @Directions 調用支付寶接口
     * @date 2013-3-27下午04:53:35 void
     */ 
    public void pay() { 
        try { 
            /*1****生成支付寶交易號,根據時間到毫秒級別*/ 
            String out_trade_no = UtilDate.getOrderNum() ; 
           /*2*****↓↓↓↓↓↓↓↓↓↓把請求參數打包成數組↓↓↓↓↓↓↓↓↓↓*/ 
            Map sParaTemp = new HashMap(); 
            sParaTemp = getPayPrama(totalfee, out_trade_no); 
 
            /*3*****↓↓↓↓↓↓↓↓↓↓請求支付寶接口↓↓↓↓↓↓↓↓↓↓*/ 
            String json = AlipaySubmit.buildRequest(sParaTemp, "get", "確認"); 
            HttpServletResponse response = ServletActionContext.getResponse(); 
            response.setContentType("text/html"); 
            response.setCharacterEncoding("utf-8"); 
            PrintWriter out; 
            out = response.getWriter(); 
            json = JSON.toJSONString(json); 
            out.write(json); 
            out.flush(); 
            out.close(); 
 
        } catch (IOException e) { 
        } 
    } 
 
    /**
     * 
     * @author ZhuangZi
     * @class com.hzdracom.alipay.action.AliPayAction
     * @method GetPayPrama
     * @Directions 封裝調用支付寶參數
      * @date 2013-4-1下午05:26:11
     * @param totalfee 金額
      * @param out_trade_no  訂單編號
      * @return Map
     */ 
    public Map getPayPrama(String totalfee, String out_trade_no) { 
        Map sParaTemp = new HashMap(); 
        sParaTemp.put("service", "create_direct_pay_by_user"); 
        sParaTemp.put("partner", AlipayConfig.partner); 
        sParaTemp.put("_input_charset", AlipayConfig.input_charset); 
        sParaTemp.put("payment_type", AlipayConfig.payment_type); 
        /*服務器異步通知頁面路徑//需http://格式的完整路徑,不能加?id=123這類自定義參數*/ 
        sParaTemp.put("notify_url", AlipayConfig.notify_url); 
        /*頁面跳轉同步通知頁面路徑 //需http://格式的完整路徑,不能加?id=123這類自定義參數,不能寫成http://localhost/*/ 
        sParaTemp.put("return_url", AlipayConfig.return_url); 
        /*賣家支付寶帳戶*/ 
        sParaTemp.put("seller_email", AlipayConfig.seller_email); 
        /*商戶訂單號*/ 
        sParaTemp.put("out_trade_no", out_trade_no); 
        /*訂單名稱*/ 
        sParaTemp.put("subject", AlipayConfig.subject); 
        /*付款金額*/ 
        sParaTemp.put("total_fee", totalfee); 
        /*訂單描述*/ 
        sParaTemp.put("body", AlipayConfig.body); 
        /*需以http://開頭的完整路徑,
        sParaTemp.put("show_url", AlipayConfig.show_url); 
        //防釣魚時間戳  
        sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key); 
        /*客戶端的IP地址 非局域網的外網IP地址,如:221.0.0.1*/ 
        sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip); 
        return sParaTemp; 
 
    } 
 
    public String getPhoneCode() { 
        return phoneCode; 
    } 
 
    public void setPhoneCode(String phoneCode) { 
        this.phoneCode = phoneCode; 
    } 
 
    public String getTotalfee() { 
        return totalfee; 
    } 
 
    public void setTotalfee(String totalfee) { 
        this.totalfee = totalfee; 
    } 
 

package com.hzdracom.alipay.action;

import it.sauronsoftware.base64.Base64;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.dom4j.Document;
import org.springframework.stereotype.Controller;

import com.alibaba.fastjson.JSON;
import com.hzdracom.action.BaseAction;
import com.hzdracom.config.AlipayConfig;
import com.hzdracom.util.AlipaySubmit;
import com.hzdracom.util.HTTPService;
import com.hzdracom.util.UtilDate;
import com.hzlq.source.security.DESUtil;
/*
 * 支付寶付款接口
 * @author ZhuangZi
 * @Directions
 * @version $Id: AliPayAction.java,v 0.1 2013-3-27 下午04:49:57 ZhuangZi Exp $
 */
@Controller
public class AliPayAction extends BaseAction {
    private String              phoneCode;
    private String              totalfee;

    /**
     * 調用支付寶接口
     * @author ZhuangZi
     * @class com.hzdracom.alipay.action.AliPayAction
     * @method AliPay
     * @Directions 調用支付寶接口
     * @date 2013-3-27下午04:53:35 void
     */
    public void pay() {
        try {
            /*1****生成支付寶交易號,根據時間到毫秒級別*/
            String out_trade_no = UtilDate.getOrderNum() ;
           /*2*****↓↓↓↓↓↓↓↓↓↓把請求參數打包成數組↓↓↓↓↓↓↓↓↓↓*/
            Map sParaTemp = new HashMap();
            sParaTemp = getPayPrama(totalfee, out_trade_no);

            /*3*****↓↓↓↓↓↓↓↓↓↓請求支付寶接口↓↓↓↓↓↓↓↓↓↓*/
            String json = AlipaySubmit.buildRequest(sParaTemp, "get", "確認");
            HttpServletResponse response = ServletActionContext.getResponse();
            response.setContentType("text/html");
            response.setCharacterEncoding("utf-8");
            PrintWriter out;
            out = response.getWriter();
            json = JSON.toJSONString(json);
            out.write(json);
            out.flush();
            out.close();

        } catch (IOException e) {
        }
    }

    /**
     *
     * @author ZhuangZi
     * @class com.hzdracom.alipay.action.AliPayAction
     * @method GetPayPrama
     * @Directions 封裝調用支付寶參數
      * @date 2013-4-1下午05:26:11
     * @param totalfee 金額
      * @param out_trade_no  訂單編號
      * @return Map
     */
    public Map getPayPrama(String totalfee, String out_trade_no) {
        Map sParaTemp = new HashMap();
        sParaTemp.put("service", "create_direct_pay_by_user");
        sParaTemp.put("partner", AlipayConfig.partner);
        sParaTemp.put("_input_charset", AlipayConfig.input_charset);
        sParaTemp.put("payment_type", AlipayConfig.payment_type);
        /*服務器異步通知頁面路徑//需http://格式的完整路徑,不能加?id=123這類自定義參數*/
        sParaTemp.put("notify_url", AlipayConfig.notify_url);
        /*頁面跳轉同步通知頁面路徑 //需http://格式的完整路徑,不能加?id=123這類自定義參數,不能寫成http://localhost/*/
        sParaTemp.put("return_url", AlipayConfig.return_url);
        /*賣家支付寶帳戶*/
        sParaTemp.put("seller_email", AlipayConfig.seller_email);
        /*商戶訂單號*/
        sParaTemp.put("out_trade_no", out_trade_no);
        /*訂單名稱*/
        sParaTemp.put("subject", AlipayConfig.subject);
        /*付款金額*/
        sParaTemp.put("total_fee", totalfee);
        /*訂單描述*/
        sParaTemp.put("body", AlipayConfig.body);
        /*需以http://開頭的完整路徑,
        sParaTemp.put("show_url", AlipayConfig.show_url);
        //防釣魚時間戳
        sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
        /*客戶端的IP地址 非局域網的外網IP地址,如:221.0.0.1*/
        sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
        return sParaTemp;

    }

    public String getPhoneCode() {
        return phoneCode;
    }

    public void setPhoneCode(String phoneCode) {
        this.phoneCode = phoneCode;
    }

    public String getTotalfee() {
        return totalfee;
    }

    public void setTotalfee(String totalfee) {
        this.totalfee = totalfee;
    }

}
 二、AlipayConfig 類是封裝支付寶接口參數

[java]
package com.hzdracom.config; 
 
import com.hzdracom.util.UtilDate; 
 
/* *
 *類名:AlipayConfig
 *功能:基礎配置類
 *詳細:設置帳戶有關信息及返回路徑
 *版本:3.3
 *日期:2012-08-10
 *說明:
 *以下代碼只是為了方便商戶測試而提供的樣例代碼,商戶可以根據自己網站的需要,按照技術文檔編寫,並非一定要使用該代碼。
 *該代碼僅供學習和研究支付寶接口使用,只是提供一個參考。
    
 *提示:如何獲取安全校驗碼和合作身份者ID
 *1.用您的簽約支付寶賬號登錄支付寶網站
 *2.點擊“商家服務
 *3.點擊“查詢合作者身份(PID)”、“查詢安全校驗碼(Key)”
 
 *安全校驗碼查看時,輸入支付密碼後,頁面呈灰色的現象,怎麼辦?
 *解決方法:
 *1、檢查浏覽器配置,不讓浏覽器做彈框屏蔽設置
 *2、更換浏覽器或電腦,重新登錄查詢。
 */ 
 
public class AlipayConfig { 
     
    //↓↓↓↓↓↓↓↓↓↓請在這裡配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓  
    // 合作身份者ID,以2088開頭由16位純數字組成的字符串  
    public static String partner = "2088001466494907"; 
    // 商戶的私鑰  
    public static String key = "fb30213vjc4k4oabt7z4q9e07sfmlmzr"; 
 
    //↑↑↑↑↑↑↑↑↑↑請在這裡配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑  
     
    // 調試用,創建TXT日志文件夾路徑  
    public static String log_path = "D:\\"; 
 
    // 字符編碼格式 目前支持 gbk 或 utf-8  
    public static String input_charset = "utf-8"; 
     
    // 簽名方式 不需修改  
    public static String sign_type = "MD5"; 
     
    public static String payment_type = "1"; 
    //必填,不能修改  
    //服務器異步通知頁面路徑  
    public static  String notify_url = "notify_url.jsp"; 
    //需http://格式的完整路徑,不能加?id=123這類自定義參數  
    
    //頁面跳轉同步通知頁面路徑  
    public static  String return_url = "return_url.jsp"; 
    //需http://格式的完整路徑,不能加?id=123這類自定義參數,不能寫成http://localhost/  
 
    //賣家支付寶帳戶  
    public static   String seller_email = "[email protected]"; 
    //必填  
 
    //商戶訂單號  
    public static  String out_trade_no =UtilDate.getOrderNum(); 
    //商戶網站訂單系統中唯一訂單號,必填  
 
    //訂單名稱  
    public static String subject = "隱號充值"; 
    //必填  
 
    //訂單描述  
    public static  String body = "隱號充值"; 
    //商品展示地址  
     
    public static String show_url =""; 
     //防釣魚時間戳  
    public static String anti_phishing_key=""; 
    /*客戶端的IP地址 非局域網的外網IP地址,如:221.0.0.1*/ 
    public static String exter_invoke_ip=""; 

package com.hzdracom.config;

import com.hzdracom.util.UtilDate;

/* *
 *類名:AlipayConfig
 *功能:基礎配置類
 *詳細:設置帳戶有關信息及返回路徑
 *版本:3.3
 *日期:2012-08-10
 *說明:
 *以下代碼只是為了方便商戶測試而提供的樣例代碼,商戶可以根據自己網站的需要,按照技術文檔編寫,並非一定要使用該代碼。
 *該代碼僅供學習和研究支付寶接口使用,只是提供一個參考。
 
 *提示:如何獲取安全校驗碼和合作身份者ID
 *1.用您的簽約支付寶賬號登錄支付寶網站(
 *2.點擊“商家服務”
 *3.點擊“查詢合作者身份(PID)”、“查詢安全校驗碼(Key)”

 *安全校驗碼查看時,輸入支付密碼後,頁面呈灰色的現象,怎麼辦?
 *解決方法:
 *1、檢查浏覽器配置,不讓浏覽器做彈框屏蔽設置
 *2、更換浏覽器或電腦,重新登錄查詢。
 */

public class AlipayConfig {
 
 //↓↓↓↓↓↓↓↓↓↓請在這裡配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
 // 合作身份者ID,以2088開頭由16位純數字組成的字符串
 public static String partner = "2088001466494907";
 // 商戶的私鑰
 public static String key = "fb30213vjc4k4oabt7z4q9e07sfmlmzr";

 //↑↑↑↑↑↑↑↑↑↑請在這裡配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
 
 // 調試用,創建TXT日志文件夾路徑
 public static String log_path = "D:\\";

 // 字符編碼格式 目前支持 gbk 或 utf-8
 public static String input_charset = "utf-8";
 
 // 簽名方式 不需修改
 public static String sign_type = "MD5";
 
 public static String payment_type = "1";
    //必填,不能修改
    //服務器異步通知頁面路徑
 public static  String notify_url = "notify_url.jsp";
    //需http://格式的完整路徑,不能加?id=123這類自定義參數
  
    //頁面跳轉同步通知頁面路徑
 public static  String return_url = "return_url.jsp";
    //需http://格式的完整路徑,不能加?id=123這類自定義參數,不能寫成http://localhost/

    //賣家支付寶帳戶
 public static   String seller_email = "[email protected]";
    //必填

    //商戶訂單號
 public static  String out_trade_no =UtilDate.getOrderNum();
    //商戶網站訂單系統中唯一訂單號,必填

    //訂單名稱
 public static String subject = "隱號充值";
    //必填

    //訂單描述
 public static  String body = "隱號充值";
    //商品展示地址
 
 public static String show_url ="";
  //防釣魚時間戳
 public static String anti_phishing_key="";
 /*客戶端的IP地址 非局域網的外網IP地址,如:221.0.0.1*/
 public static String exter_invoke_ip="";
}

三、strut配置文件


 

以上屬於關鍵代碼部分,需要注意的事項有 :

1.需要把支付寶提供的接口的幾個類引入到你的項目中,包括架包

2.notify_url.jsp和return_url.jsp地址要做好些成外網地址的全路徑

3.你自己的業務處理寫notify_url.jsp這個裡面,也可以直接寫個接口給支付寶接口調用

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved