如何用struts调用支付宝接口

meiyuan564

meiyuan564

2016-02-19 10:50

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的如何用struts调用支付宝接口,希望大家看完后能赶快学习起来。

一、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*****↓↓↓↓↓↓↓↓↓↓把请求参数打包成数组↓↓↓↓↓↓↓↓↓↓*/
            MapString, String sParaTemp = new HashMapString, String();
            sParaTemp = getPayPrama(totalfee, out_trade_no);

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

            /*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 MapString,String
     */
    public MapString, String getPayPrama(String totalfee, String out_trade_no) {
        MapString, String sParaTemp = new HashMapString, 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 类是封装支付宝接口参数

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

代码如下:

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这个里面,也可以直接写个接口给支付宝接口调用

展开更多 50%)
分享

猜你喜欢

如何用struts调用支付宝接口

编程语言 网络编程
如何用struts调用支付宝接口

新版支付宝如何用支付码支付

手机软件 应用软件
新版支付宝如何用支付码支付

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何用支付宝买车票

手机软件 应用软件
如何用支付宝买车票

如何用IOS调用WebService(SOAP接口)

编程语言 网络编程
如何用IOS调用WebService(SOAP接口)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

支付宝阅后即焚如何用?

手机软件 应用软件
支付宝阅后即焚如何用?

支付宝如何查询支付宝付款记录

手机软件 应用软件
支付宝如何查询支付宝付款记录

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Javascript的荧光字效果

Javascript的荧光字效果

JavaScript 学习 - 提高篇

JavaScript 学习 - 提高篇
下拉加载更多内容 ↓