支付宝支付

来源:互联网 发布:不安理智网络歌手 编辑:程序博客网 时间:2024/06/10 03:38

支付宝支付

  • 1.将jar导入项目中(有需要jar包的从下面的网盘下载http://pan.baidu.com/s/1mhUQwIG),将demo中的alipayto.jsp这个jsp放到自己的工程目录下
  • 2.新建一个工具类,这个类用来填写合作者ID,key,以及收款支付宝账号,以及支付成功后跳转的地址,支付成功后所有的逻辑处理都要这个地址中

代码块

package com.hysm.common.utils;import java.util.Map;import java.util.SortedMap;import java.util.TreeMap;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.alipay.common.PartnerCommon;import com.common.Secret;import com.demo.Demo;import com.hysm.model.WeChatVO;import com.hysm.web.action.BaseAction;import com.utils.RequestHandler;public class PayTool {    private static String appid,appsecret,partner,partnerkey,openId;    /**     * 支付宝支付配置     */    public static void pay_detail(String subject ,String total_fee){        HttpServletRequest request = ServletActionContext.getRequest();        //合作号        String partner="2088021066286629";        //key        String key="1ei12j07r2ep50jje1nn2sth3thm4k37";        //收款支付宝账号        String seller_email="583691572@qq.com";        //支付成功返回的页面          String return_url="http://127.0.0.1:8080/ec/pay/pay!handle_alipay.do";        //商品的信息        request.setAttribute("subject", subject);        //交易金额        request.setAttribute("total_fee", total_fee);        PartnerCommon.getAlipayConfig(partner, key, seller_email,return_url);    }}

-用户在页面点击支付后到action处理好自己的逻辑后,将商品的名称以及支付的金额带到页面,跳转地址:工程名+/jsp/pages/pay/alipayto.jsp()

代码块

public String test(){        //1.先处理自己的逻辑        //.........        //2.调用支付宝支付        PayTool.pay_detail("商品信息","金额");        return "zhifubao";  //对应的zhifubao页面    }

-到这为止,支付宝支付的一部分就完成了,接下来就等着支付宝给你返回结果,处理逻辑
这里写图片描述

-在PayToll中配置了返回的地址,在返回的这个方法中获取支付宝给你返回的参数,以及处理自己的逻辑

代码块

//支付成功处理    public String pay_handle(){        //获取支付宝GET过来反馈信息        Map<String,String> params = new HashMap<String,String>();        Map requestParams = request.getParameterMap();        System.out.println(requestParams);        for (Iterator 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] + ",";            }            //乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化            //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "UTF-8");            params.put(name, valueStr);        }        //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)//        String trade_no = request.getParameter("trade_no");             //支付宝交易号        System.out.println("trade_no:"+trade_no);        String out_trade_no = request.getParameter("out_trade_no");     //获取订单号        String total_fee = request.getParameter("total_fee");           //获取总金额        String subject=request.getParameter("subject");                 //商品名称        String buyer_id=request.getParameter("buyer_id");               //买家支付宝账户号        //String subject = new String(request.getParameter("subject").getBytes("ISO-8859-1"),"utf-8");//商品名称、订单名称        String body = "";        if(request.getParameter("body") != null){            body=request.getParameter("body");                          //商品描述            //body = new String(request.getParameter("body").getBytes("ISO-8859-1"), "utf-8");//商品描述、订单备注、描述        }        String seller_email = request.getParameter("seller_email");     //卖家支付账号        String seller_id = request.getParameter("seller_id");           //卖家支付宝账户号        String buyer_email = request.getParameter("buyer_email");       //买家支付宝账号        String buyer_account_name=request.getParameter("buyer_account_name");//卖家祝福包别人        String trade_status = request.getParameter("trade_status");     //交易状态        String createTime= (String)request.getSession().getAttribute("createTime"); //发起申请时间        System.out.println("createTime:"+createTime);        String return_url=request.getParameter("return_url");   //返回地址        String error_code=request.getParameter("error_code");   //错误码        String sign=request.getParameter("sign");               //签名        String sign_type=request.getParameter("sign_type");     //签名类型        String exterface=request.getParameter("exterface");     //接口名称        String is_success=request.getParameter("is_success");   //成功标志        String notify_id=request.getParameter("notify_id");     //通知校验ID        String notify_time=request.getParameter("notify_time"); //通知时间        String notify_type=request.getParameter("notify_type"); //通知类型        String payment_type=request.getParameter("payment_type");//支付类型        AlipayVO payVO1=new AlipayVO();        payVO1.setBody(body);        payVO1.setBuyer_account_name(buyer_account_name);        payVO1.setBuyer_email(buyer_email);        payVO1.setBuyer_id(buyer_id);        payVO1.setError_code(error_code);        payVO1.setExterface(exterface);        payVO1.setIs_success(is_success);        payVO1.setNotify_id(notify_id);        payVO1.setNotify_time(notify_time);        payVO1.setNotify_type(notify_type);        payVO1.setOut_trade_no(out_trade_no);        payVO1.setPayment_type(payment_type);        payVO1.setReturn_url(return_url);        payVO1.setSeller_email(seller_email);        payVO1.setSeller_id(seller_id);        payVO1.setSign(sign);        payVO1.setSign_type(sign_type);        payVO1.setSubject(subject);        payVO1.setTotal_fee(total_fee);        payVO1.setTrade_no(trade_no);        payVO1.setTrade_status(trade_status);        //计算得出通知验证结果        boolean verify_result = AlipayNotify.verify(params);        if(verify_result){//验证成功            payService.insert_orderrecord(payVO1);  //订单新增            payService.insert_return_url(payVO1);   //result_url            payService.insert_notify_url(payVO1);   //notify_url            OrderPayVO p=(OrderPayVO) request.getSession().getAttribute("cl"+user.getId());            //支付成功,保存支付记录            PayVO p1=new PayVO();            p1.setPay_time(notify_time);            p1.setResult("success");            p1.setPaymoney(p.getTotal_fee());            p1.setName(buyer_email);            p1.setUserid(0);            p1.setTrade_no(trade_no);            p1.setOrderid(p.getOrder_id());        }else{            payService.insert_error(payVO1);        }    }
0 0
原创粉丝点击