支付宝支付 您所在的位置:网站首页 当面交易图片怎么做的 支付宝支付

支付宝支付

2024-06-29 15:21| 来源: 网络整理| 查看: 265

public String alipaynotify(Model model, HttpServletRequest request) {

    log.info("支付宝异步回调 ------------beg-----------");    String result = "fail";    /**获取支付宝POST过来反馈信息**/    /* *     * 功能:支付宝服务器异步通知页面     * 说明:     * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。     * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。     */    Map params=this.getAlipayRequest(request);    if(params == null || params.size()==0){        BufferedReader bufferReader = null;        StringBuilder sb = new StringBuilder();        try {            bufferReader = new BufferedReader(request.getReader());

            String line = null;            while ((line = bufferReader.readLine()) != null) {                sb.append(new String(line.getBytes("ISO-8859-1"), "utf-8"));            }        } catch (IOException e) {            e.printStackTrace();        }        String body= null;        try {            body = URLDecoder.decode(sb.toString(),"UTF-8");        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        params=UriComponentsBuilder.newInstance().query(body).build().getQueryParams().toSingleValueMap();    }    boolean signVerified =false;    try {        signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type);    } catch (AlipayApiException e1) {        log.error("由于"+e1.getErrMsg()+"返回给支付宝系统的结果result:fail");        model.addAttribute("result", "fail");        return result;    }

    /**——请在这里编写您的程序(以下代码仅作参考)——**/

    /* 实际验证过程建议商户务必添加以下校验:    1、需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,    2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),    3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)    4、验证app_id是否为该商户本身。    */    log.error("支付宝验证签名:---------------------------------"+signVerified);    if(signVerified) {/**验证成功**/        /**商户订单号**/        /**交易状态**/        log.info("支付宝异步回调验签成功!");        String trade_status = params.get("trade_status");

        if("TRADE_FINISHED".equals(trade_status)){            /**判断该笔订单是否在商户网站中已经做过处理**/            /**如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序**/            /**如果有做过处理,不执行商户的业务程序**/

            /**注意:**/            /**退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知**/            try {                /** 在这里处理支付成功后的操作,比如修改订单状态等等**/                coding...                result = "success";            } catch (Exception e) {                log.error(e.getMessage());                result = "fail";            }        }else if ("TRADE_SUCCESS".equals(trade_status)){            /**判断该笔订单是否在商户网站中已经做过处理**/            /**如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序**/            /**如果有做过处理,不执行商户的业务程序**/

            /**注意:**/            /**付款完成后,支付宝系统发送该交易状态通知**/            try {                /** 在这里处理支付成功后的操作,比如修改订单状态等等**/                coding...                result = "success";            } catch (Exception e) {                log.error(e.getMessage());                result = "fail";            }        }else{            result = "fail";        }    }else {/**验证失败**/        result = "fail";        /**调试用,写文本函数记录程序运行情况是否正常**/        /**String sWord = AlipaySignature.getSignCheckContentV1(params);**/        /**AlipayConfig.logResult(sWord);**/        log.debug("支付宝异步回调验签失败");    }    log.debug("异步回调返回给支付宝系统的结果result:"+result);

    model.addAttribute("result", result);    log.info("支付宝异步回调  -------------end ------------");    return result;}



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有