微信JSAPI支付和退款

14

微信JSAPI支付和退款

好!我将详细描述微信JSAPI支付和退款的流程。

一. 调用统一下单API,返回预付单信息

1.1 配置文件准备在开始编码之前,我们需要准备必要的配置文件。我们需要创建一个 `wxpay.conf` 文件来存储微信支付相关的配置信息。

```properties wxpay.confappid = your_appidmch_id = your_mch_idkey = your_api_key```

1.2 引入第三方微信支付SDK我们需要引入第三方微信支付 SDK 来进行支付和退款操作。这里,我们使用的是 `cn.springboot` 组的 `wxpay-sdk` 库。

```xml

cn.springboot

wxpay-sdk

1.0.0

```

1.3 调用统一下单API现在,我们可以开始编码了。我们需要调用微信支付的统一下单 API 来生成预付单信息。

```java// WxPayUtil.javaimport cn.springboot.wxpay.sdk.WxPayConfig;

import cn.springboot.wxpay.sdk.WxPayUtil;

public class WxPayUtil {

public static String unifiedOrder(String body, double totalFee) throws Exception {

// 配置文件准备 WxPayConfig config = new WxPayConfig();

config.setAppid("your_appid");

config.setMchId("your_mch_id");

config.setApikey("your_api_key");

// 统一下单API Map data = new HashMap<>();

data.put("body", body);

data.put("total_fee", String.valueOf(totalFee));

data.put("notify_url", " data.put("trade_type", "JSAPI");

WxPayConfig wxpayConfig = new WxPayConfig();

wxpayConfig.setAppid(config.getAppid());

wxpayConfig.setMchId(config.getMchId());

wxpayConfig.setApikey(config.getApikey());

String prepayId = WxPayUtil.unifiedOrder(wxpayConfig, data);

return prepayId;

}

}

```

1.4 返回预付单信息在上面的代码中,我们使用 `WxPayUtil.unifiedOrder()` 方法来调用微信支付的统一下单 API。这个方法会返回一个预付单 ID。

```java// WxPayUtil.javapublic class WxPayUtil {

// ...

public static String unifiedOrder(WxPayConfig config, Map data) throws Exception {

// ...

return prepayId;

}

}

```

二. 支付

2.1 获取预付单信息在支付之前,我们需要获取预付单信息。

```java// Pay.javapublic class Pay {

public static void main(String[] args) throws Exception {

// 配置文件准备 WxPayConfig config = new WxPayConfig();

config.setAppid("your_appid");

config.setMchId("your_mch_id");

config.setApikey("your_api_key");

// 统一下单API String prepayId = WxPayUtil.unifiedOrder(config, data);

// 支付 PayResult payResult = new PayResult();

payResult.setPrepayId(prepayId);

payResult.setNonceStr(WxPayUtil.generateNoncestr());

payResult.setTimeStamp(System.currentTimeMillis() /1000 + "");

payResult.setPackageValue("prepay_id=" + prepayId);

// ...

}

}

```

2.2 支付现在,我们可以开始支付了。

```java// Pay.javapublic class Pay {

public static void main(String[] args) throws Exception {

// ...

// 支付 String jsapiPayUrl = " Map data = new HashMap<>();

data.put("prepay_id", payResult.getPrepayId());

data.put("nonce_str", payResult.getNonceStr());

data.put("timestamp", payResult.getTimeStamp());

data.put("package_value", payResult.getPackageValue());

// ...

}

}

```

三.退款

3.1 获取退款信息在退款之前,我们需要获取退款信息。

```java// Refund.javapublic class Refund {

public static void main(String[] args) throws Exception {

// 配置文件准备 WxPayConfig config = new WxPayConfig();

config.setAppid("your_appid");

config.setMchId("your_mch_id");

config.setApikey("your_api_key");

// 统一下单API String prepayId = WxPayUtil.unifiedOrder(config, data);

//退款 RefundResult refundResult = new RefundResult();

refundResult.setOutTradeNo(prepayId);

refundResult.setRefundFee(100.0);

refundResult.setNotifyUrl(" // ...

}

}

```

3.2退款现在,我们可以开始退款了。

```java// Refund.javapublic class Refund {

public static void main(String[] args) throws Exception {

// ...

//退款 String refundUrl = " Map data = new HashMap<>();

data.put("out_trade_no", refundResult.getOutTradeNo());

data.put("refund_fee", String.valueOf(refundResult.getRefundFee()));

data.put("notify_url", refundResult.getNotifyUrl());

// ...

}

}

```

以上就是微信JSAPI支付和退款的流程。

支付

版权声明:除非特别标注,否则均为网络文章,侵权请联系站长删除。

上一篇 微信支付分回调处理

下一篇 微信 商家转账到零钱 一