支付宝支付退单接口对接demo

该文章主要讲述支付宝账号、秘钥申请以后,接口对接部分,如要申请账号,请到官网https://www.alipay.com/

 

下面通过两部分来跟支付宝对接,第一部分是申请调用支付宝,前端页面发起请求,后台接口进行处理,生成一个form表单给页面,页面直接调用支付宝;第二部分是支付宝异步通知结果,后台接口直接接收。

请求接口:

public String aliPayRequest(OrderPay orderPay, HttpServletResponse response) {

    //调用支付宝请求

    AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGNTYPE);
    AlipayTradeWapPayRequest alipay_request=new AlipayTradeWapPayRequest();

    // 封装请求支付信息
    alipay_request.setBizContent("{" +
            " \"out_trade_no\":\""+orderPay.getOrder_id()+"\"," +
            " \"total_amount\":\""+orderPay.getActual_amount()+"\"," +
            " \"subject\":\"门票\"," +
            " \"product_code\":\"QUICK_WAP_WAY\"" +
            " }");//填充业务参数

    // 设置异步通知地址
    alipay_request.setNotifyUrl(AlipayConfig.notify_url);
    // 设置同步地址 这个没有
    alipay_request.setReturnUrl(AlipayConfig.return_url);
    log.info("调用支付宝请求:"+ JSON.toJSONString(alipay_request));
    // form表单生产
    String form = "";
    try {
        // 调用SDK生成表单
        form = client.pageExecute(alipay_request).getBody();
        response.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
        response.getWriter().write(form);//直接将完整的表单html输出到页面
        response.getWriter().flush();
        response.getWriter().close();
    }catch(Exception e) {
        log.error(e.getMessage());
        throw new CustomException(e.getMessage());
    }
    return "";
}

 

异步回调接口:

 

 @ResponseBody
    @RequestMapping(value = "/spotOrder/receiveFromAlipay")
    public void  receiveFromAlipay(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        log.info("##################进入SpotOrderController的receiveFromAlipay方法####################");
        String result = "fail";
        BaseResult<OrderPay> baseResult = new BaseResult<OrderPay>();

        try {
            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[]) request
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值