码迷,mamicode.com
首页 > 其他好文 > 详细

支付宝即时到账收款接口

时间:2014-11-19 10:38:40      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

官方文档 

参考网站

1.src导入taobao接口包 lib导入jar包

百度网盘

2.三个支付宝界面

alipayapi.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.alipay.config.*"%>
<%@ page import="com.alipay.util.*"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>支付宝纯担保交易接口</title>
</head>
<%
    ////////////////////////////////////请求参数//////////////////////////////////////

    //支付类型
    String payment_type = "1";
    //必填,不能修改
    //服务器异步通知页面路径。暂不处理
    String notify_url = "http://60.174.234.114:8080/cs4/notify_url.jsp";
    //需http://格式的完整路径,不能加?id=123这类自定义参数

    //页面跳转同步通知页面路径
    String return_url = "http://60.174.234.114:8080/cs4/return_url.jsp";
    //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/

    //卖家支付宝帐户
    String seller_email = new String("ssxtgf@163.com".getBytes("ISO-8859-1"), "UTF-8"); //公司账号需要申请
    //必填 

    //商户订单号
    //String out_trade_no = new String(((String)request.getSession().getAttribute("orderid")).getBytes("ISO-8859-1"),"UTF-8");
    String orderid = String.valueOf(request.getAttribute("orderid"));
    String out_trade_no = new String(orderid);//系统毫秒数可否考虑?
    //商户网站订单系统中唯一订单号,必填

    //订单名称
    String subject = new String((String) request.getAttribute("productname"));
    //必填

    //付款金额
    //String price = new String(((String)request.getSession().getAttribute("money")).getBytes("ISO-8859-1"),"UTF-8");
    String price = new String((String) request.getAttribute("total"));
    //测试用 String price = "1.01";
    //必填

    //商品数量
    String quantity = "1";
    //必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品

    //物流费用
    String logistics_fee = "0.00";
    //必填,即运费
    //物流类型
    String logistics_type = "EXPRESS";
    //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
    //物流支付方式
    String logistics_payment = "SELLER_PAY"; 
    //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
    //订单描述

    //////////////////////////////////////////////////////////////////////////////////

    //把请求参数打包成数组
    Map<String, String> sParaTemp = new HashMap<String, String>();
    sParaTemp.put("service", "create_partner_trade_by_buyer");
    sParaTemp.put("partner", AlipayConfig.partner);
    sParaTemp.put("_input_charset", AlipayConfig.input_charset);
    sParaTemp.put("payment_type", payment_type);
    sParaTemp.put("notify_url", notify_url);
    sParaTemp.put("return_url", return_url);
    sParaTemp.put("seller_email", seller_email);
    sParaTemp.put("out_trade_no", out_trade_no);
    sParaTemp.put("subject", subject);
    sParaTemp.put("price", price);
    sParaTemp.put("quantity", quantity);
    sParaTemp.put("logistics_fee", logistics_fee);
    sParaTemp.put("logistics_type", logistics_type);
    sParaTemp.put("logistics_payment", logistics_payment);

    //建立请求
    String sHtmlText = AlipaySubmit
            .buildRequest(sParaTemp, "get", "确认");
    out.println(sHtmlText);
%>
<body>
</body>
</html>

notify_url.jsp

<%
    /* *
     功能:支付宝服务器异步通知页面
     版本:3.3
     日期:2012-08-17
     说明:
     以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
     该代码仅供学习和研究支付宝接口使用,只是提供一个参考。

     //***********页面功能说明***********
     创建该页面文件时,请留心该页面文件中无任何HTML代码及空格。
     该页面不能在本机电脑测试,请到服务器上做测试。请确保外部可以访问该页面。
     该页面调试工具请使用写文本函数logResult,该函数在com.alipay.util文件夹的AlipayNotify.java类文件中
     如果没有收到该页面返回的 success 信息,支付宝会在24小时内按一定的时间策略重发通知
     //********************************
     * */
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ page import="com.alipay.util.*"%>
<%@ page import="com.alipay.config.*"%>
<%@page import="xuntong.entity.Orderlist"%>
<%@page import="xuntong.impl.OrderListDAOImpl"%>
<%@page import="xuntong.dao.IOrderListDAO"%>
<%

    //获取支付宝POST过来反馈信息
    Map<String, String> params = new HashMap<String, String>();
    Map requestParams = request.getParameterMap();
    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"), "gbk");
        params.put(name, valueStr);
    }

    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)//
    //商户订单号

    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 trade_status = new String(request.getParameter(
            "trade_status").getBytes("ISO-8859-1"), "UTF-8");
    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)//

    if (AlipayNotify.verify(params)) {//验证成功
        //////////////////////////////////////////////////////////////////////////////////////////
        //请在这里加上商户的业务逻辑程序代码
        //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——

        if (trade_status.equals("WAIT_BUYER_PAY")) {
            //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款
            //判断该笔订单是否在商户网站中已经做过处理
            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
            //如果有做过处理,不执行商户的业务程序

            out.println("success"); //请不要修改或删除
        } else if (trade_status.equals("WAIT_SELLER_SEND_GOODS")) {
            //该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货
            //判断该笔订单是否在商户网站中已经做过处理
            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
            //如果有做过处理,不执行商户的业务程序
            IOrderListDAO orderListDAO = new OrderListDAOImpl();
            Orderlist orderlist = orderListDAO.get(Integer.parseInt(out_trade_no));
            orderlist.setPaystatus("1");
            orderListDAO.update(orderlist);
            out.println("success"); //订单付款状态码更新了
//请不要修改或删除 } else if (trade_status.equals("WAIT_BUYER_CONFIRM_GOODS")) { //该判断表示卖家已经发了货,但买家还没有做确认收货的操作 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 out.println("success"); //请不要修改或删除 } else if (trade_status.equals("TRADE_FINISHED")) { //该判断表示买家已经确认收货,这笔交易完成 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 out.println("success"); //请不要修改或删除 } else { out.println("success"); //请不要修改或删除 } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ////////////////////////////////////////////////////////////////////////////////////////// } else {//验证失败 out.println("fail"); } %>

return_url.jsp

<%@page import="xuntong.entity.Orderlist"%>
<%@page import="xuntong.impl.OrderListDAOImpl"%>
<%@page import="xuntong.dao.IOrderListDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ page import="java.util.Map"%>
<%@ page import="com.alipay.util.*"%>
<%@ page import="com.alipay.config.*"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>支付宝页面跳转同步通知页面</title>

<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
    <%
        //获取支付宝GET过来反馈信息
        Map<String, String> params = new HashMap<String, String>();
        Map requestParams = request.getParameterMap();
        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 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 trade_status = new String(request.getParameter(
                "trade_status").getBytes("ISO-8859-1"), "UTF-8");
        //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)//

        //计算得出通知验证结果
        boolean verify_result = AlipayNotify.verify(params);

        if (verify_result) {//验证成功
            //////////////////////////////////////////////////////////////////////////////////////////
            //请在这里加上商户的业务逻辑程序代码
    %>
    <div>
          <img src="images/buyOk.jpg">         //显示成功界面
    </div>
    <%
        //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——

            if (trade_status.equals("WAIT_SELLER_SEND_GOODS")) {
                //判断该笔订单是否已支付,如果支付,通过out_trade_no,调用get(int orderid)获取用户订单信息,将status改为"1",调用update()
                IOrderListDAO orderListDAO=new OrderListDAOImpl();
                Orderlist orderlist = orderListDAO.get(Integer.parseInt(out_trade_no));
                orderlist.setPaystatus("1");
                orderListDAO.update(orderlist); //更新订单支付状态码
            }

            //该页面可做页面美工编辑
            //out.println("验证成功<br />");

            //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

            //////////////////////////////////////////////////////////////////////////////////////////
        } else {
            //该页面可做页面美工编辑
            out.println("验证失败");
        }
    %>
</body>
</html>

 

支付宝即时到账收款接口

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/manusas/p/4107503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!