微信支付分(三)--完结支付分订单


1、介绍

代码地址: https://github.com/xm646236438/wechat_pay_score/tree/master
SpringBoot
具体的代码以及逻辑可以看 微信支付分(一)–创建支付分订单 以及 GitHub
上一篇博客: 微信支付分(二)–查询支付分订单
上一篇博客: 微信支付分(四)–取消支付分订单

2、代码

public CommonResult refund(String orderNo, int amount) {
        JSONObject parameters = new JSONObject();
        parameters.put("appid", appId);
        parameters.put("service_id", serviceId);
        List<JSONObject> postPaymentsList = new ArrayList<>();
        JSONObject postPayments = new JSONObject();
        postPayments.put("name", "test");
        postPayments.put("amount", amount);
        postPaymentsList.add(postPayments);
        parameters.put("post_payments", postPaymentsList);
        parameters.put("total_amount", amount);
        JSONObject timeRange = new JSONObject();
        timeRange.put("end_time", DateUtil.format(new Date(), "yyyyMMddHHmmss"));
        parameters.put("time_range", timeRange);
        JSONObject jsonObject;
        createOrderUrl = createOrderUrl + "/" + orderNo + "/complete";
        try {
            log.info("请求参数:    " + parameters);
            String data = HttpRequest.post(createOrderUrl)
                    .header(Header.CONTENT_TYPE, "application/json")
                    .header(Header.ACCEPT, "application/json")
                    .header("Authorization", "WECHATPAY2-SHA256-RSA2048" + " "
                            + PayScore.getToken("POST", createOrderUrl, JSONObject.toJSONString(parameters), mchId, serialNo, "pem/apiclient_key.pem"))
                    .body(JSONObject.toJSONString(parameters))
                    .execute().body();
            jsonObject = JSONObject.parseObject(data);
            System.out.println("返回参数:    " + jsonObject);
        } catch (Exception e) {
            throw new SpringExceptionResolver("500", "网络超时!");
        }
        if (!StringUtils.isEmpty(jsonObject.getString("code"))) {
            return CommonResult.fail(500, jsonObject.getString("message"));
        }
        switch (jsonObject.getString("state")) {
            case "CREATED":
                return CommonResult.fail(500, "订单未进行");
            case "DOING":
                // 当用户微信里面没有钱, 且对应绑定的银行卡里面也没有钱, 也就是说扣款失败的时候, 会返回该状态
                // 当用户的微信里面有钱了, 微信会主动扣款, 并通知我们
                return CommonResult.fail(500, "扣款失败");
            case "DONE":
                return CommonResult.success("SUCCESS", jsonObject);
            case "REVOKED":
            return CommonResult.fail(500, "订单已取消");
            case "EXPIRED":
            return CommonResult.fail(500, "订单已失效");
            default:
                return CommonResult.fail(500, "网络异常");
        }
    }

在这里插入图片描述
在这里插入图片描述

3、注意点

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
微信JSApi支付是指在微信公众号或小程序内使用JSAPI调起微信支付功能,实现用户在微信内完成付款的一种方式。以下是常见的问题及解决方法: 1. 支付时提示“商户订单号重复” 解决方法:修改商户订单号,确保每笔订单的商户订单号唯一。 2. 支付时提示“支付金额与订单金额不一致” 解决方法:检查订单金额和实际支付金额是否相同,确保订单金额与实际支付金额一致。 3. 支付时提示“支付失败,请稍后再试” 解决方法:检查支付参数是否正确,确保支付参数的完整性和准确性。 4. 支付时提示“当前用户未授权,请先授权登录” 解决方法:用户需要先授权登录,获取用户信息后才能进行支付操作。 5. 支付时提示“当前用户未关注公众号” 解决方法:用户需要先关注公众号,才能进行支付操作。 6. 支付时提示“商户号与appid不匹配” 解决方法:检查商户号和appid是否对应,确保商户号和appid的匹配性。 7. 支付时提示“订单已关闭” 解决方法:订单可能已经被关闭或者已经完成支付,需要重新下单。 8. 支付时提示“系统繁忙,请稍后再试” 解决方法:服务器可能正在维护或者出现故障,需要等待一段时间后再尝试支付。 以上是微信JSApi支付常见问题及解决方法,如果以上方法无法解决问题,可以联系微信支付客服进行咨询。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值