当前位置: 移动技术网 > IT编程>开发语言>Java > 如何用struts调用支付宝接口

如何用struts调用支付宝接口

2019年07月22日  | 移动技术网IT编程  | 我要评论

怀化市房产网,魔戒全面战争,哈利波特下载

一、action类关键代码 没用的包可以干掉

复制代码 代码如下:

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<string, string> sparatemp = new hashmap<string, string>();
            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<string,string>
     */
    public map<string, string> getpayprama(string totalfee, string out_trade_no) {
        map<string, string> sparatemp = new hashmap<string, string>();
        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://开头的完整路径,例如:http://www.xxx.com/myorder.html*/
        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 类是封装支付宝接口参数

复制代码 代码如下:

package com.hzdracom.config;

import com.hzdracom.util.utildate;

/* *
 *类名:alipayconfig
 *功能:基础配置类
 *详细:设置帐户有关信息及返回路径
 *版本:3.3
 *日期:2012-08-10
 *说明:
 *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。

 *提示:如何获取安全校验码和合作身份者id
 *1.用您的签约支付宝账号登录支付宝网站(www.alipay.com)
 *2.点击“商家服务”(https://b.alipay.com/order/myorder.htm)
 *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 = "jjj@hzdracom.com";
    //必填

    //商户订单号
 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配置文件

<action name="pay" method="pay" class="com.hzdracom.alipay.action.alipayaction">
  </action>

以上属于关键代码部分,需要注意的事项有 :

1.需要把支付宝提供的接口的几个类引入到你的项目中,包括架包

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

3.你自己的业务处理写notify_url.jsp这个里面,也可以直接写个接口给支付宝接口调用


 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网