(java版)微信退款和支付宝退款接口

1、微信退款接口  

相对来说我感觉微信的退款接口还是比较好调用的,直接发送httppost请求即可;

/**
     * 
     * 微信退款
     * @param transaction_id 微信支付订单号
     * @param out_refund_no  商户订单号
     * @param total_fee 总金额
     * @param refund_fee 退款金额
     * @param op_user_id 操作人
     * @return String
     * @exception
     */
    public String wxPayRefundRequest(String transaction_id, String out_refund_no,
            int total_fee, int refund_fee, String op_user_id) {
        CloseableHttpClient httpclient = null;
        CloseableHttpResponse response = null;
        String strResponse = null;
        try {
            httpclient = ClientCustomSSL.getCloseableHttpClient();
            // 构造HTTP请求
            HttpPost httpPost = new HttpPost(Configure.PAY_REFUND_API);
            // PayRefundReqData wxdata = new PayRefundReqData(
            // "1004720096201602263541023415", "16371", 30, 30, "19417");
            PayRefundReqData wxdata = new PayRefundReqData(transaction_id,
                    out_refund_no, total_fee, refund_fee, op_user_id);
            String requestStr = Util.ConvertObj2Xml(wxdata);
            StringEntity se = new StringEntity(requestStr.toString());
            httpPost.setEntity(se);
            // 发送请求
            response = httpclient.execute(httpPost);

            HttpEntity entity = response.getEntity();
            if (entity != null) {
                SAXReader saxReader = new SAXReader();
                Document document = saxReader.read(entity.getContent());
                Element rootElt = document.getRootElement();
                // 结果码
                String returnCode = rootElt.elementText("return_code");
                String resultCode = rootElt.elementText("result_code");
                if ("SUCCESS".equals(returnCode)&&"SUCCESS".equals(resultCode)) {
                    strResponse=returnCode;
                }else {
                    strResponse=rootElt.elementText("err_code_des");
                }
            }
             EntityUtils.consume(entity); 
        } catch (Exception e) {
            Logger.getLogger(getClass()).error("payRefundRequest", e);
        } finally {
            try {
                response.close();
                httpclient.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                Logger.getLogger(getClass()).error("payRefundRequest关闭异常:", e);
            }
        }
        return strResponse;
    }
报错的话请检查加密的sign是否正确,还有就是调用的接口地址是否正确
2、支付宝退款接口  
支付宝直接导入支付宝封装好的jar包直接调用即可,官网下载地址: https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1  

调用方法:

/**
     * 
     *  支付宝退款请求
     * @param out_trade_no 订单支付时传入的商户订单号,不能和 trade_no同时为空。
     * @param trade_no 支付宝交易号,和商户订单号不能同时为空
     * @param refund_amount 需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数
     * @return 
     * String
     * @exception 
     */
    public String alipayRefundRequest(String out_trade_no,String trade_no,double refund_amount){

        // 发送请求
        String strResponse = null;
        try {
            AlipayClient alipayClient = new DefaultAlipayClient
                    (AlipayConfig.alipayurl,AlipayConfig.appid,
                            AlipayConfig.private_key,AlipayConfig.content_type,AlipayConfig.input_charset,AlipayConfig.ali_public_key);
            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
            AlipayRefundInfo alidata= new AlipayRefundInfo();
            alidata.setOut_trade_no(out_trade_no);
            alidata.setRefund_amount(refund_amount);
            alidata.setTrade_no(trade_no);
            request.setBizContent(JsonUtils.convertToString(alidata));
            AlipayTradeRefundResponse response = alipayClient.execute(request);
            strResponse=response.getCode();
            if ("10000".equals(response.getCode())) {
                strResponse="退款成功";
            }else {
                strResponse=response.getSubMsg();
            }
        } catch (Exception e) {
            Logger.getLogger(getClass()).error("alipayRefundRequest", e);
        }
        return strResponse;

    }


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值