微信支付--预支付(统一下单)
预支付(统一下单)接口
预支付(统一下单)接口是微信支付的一个重要组成部分,它允许商户在用户同意后,向微信发送一个预支付订单,这样可以让用户在确认支付前,可以先查看订单的详细信息。这个过程通常被称为“统一下单”。
请求参数
为了使用预支付(统一下单)接口,我们需要将以下参数放入一个`Map`中:
```javaprotected Map
// ...
Map
// 公众号ID params.put("appid", "your_appid");
// 商户ID params.put("mch_id", "your_mch_id");
// 随机字符串 params.put("nonce_str", UUID.randomUUID().toString());
// 预支付订单标题 params.put("body", "预支付订单标题");
//金额(单位:分)
params.put("total_fee",100);
// 用户ID params.put("spbill_create_ip", request.getRemoteAddr());
// 回调地址 params.put("notify_url", " // 预支付订单号 params.put("trade_type", "JSAPI");
// 公众号的openid params.put("openid", "your_openid");
return params;
}
```
参数说明
* `appid`:公众号ID,必须填写。
* `mch_id`:商户ID,必须填写。
* `nonce_str`:随机字符串,长度为32位,不可重复。
* `body`:预支付订单标题,必须填写。
* `total_fee`:金额(单位:分),必须填写。
* `spbill_create_ip`:用户IP地址,必须填写。
* `notify_url`:回调地址,必须填写。
* `trade_type`:交易类型,固定值为“JSAPI”。
* `openid`:公众号的openid,必须填写。
响应参数
预支付(统一下单)接口会返回以下参数:
```java{
"appid": "your_appid",
"mch_id": "your_mch_id",
"nonce_str": "your_nonce_str",
"prepay_id": "your_prepay_id",
"package": "Sign=WXPay"
}
```
参数说明
* `appid`:公众号ID。
* `mch_id`:商户ID。
* `nonce_str`:随机字符串。
* `prepay_id`:预支付订单号,必须填写。
* `package`:签名信息。
注意事项
1. 预支付(统一下单)接口需要在用户同意后才可以使用。
2. 预支付订单标题和金额必须填写。
3. 回调地址必须填写。
4. 公众号的openid必须填写。
5. 随机字符串长度为32位,不可重复。
示例代码
以下是Java语言中的示例代码:
```javaimport javax.servlet. javax.servlet. class WeChatPay {
public static void main(String[] args) {
// ...
HttpServletRequest request = null; // 获取HttpServletRequest对象 HttpServletResponse response = null; // 获取HttpServletResponse对象 Map
String appId = (String) params.get("appid");
String mchId = (String) params.get("mch_id");
String nonceStr = (String) params.get("nonce_str");
String prepayId = (String) params.get("prepay_id");
String packageValue = (String) params.get("package");
// ...
}
protected Map
// 公众号ID String appId = "your_appid";
// 商户ID String mchId = "your_mch_id";
// 随机字符串 String nonceStr = UUID.randomUUID().toString();
// 预支付订单标题 String body = "预支付订单标题";
//金额(单位:分)
int totalFee =100;
// 用户ID String spbillCreateIp = request.getRemoteAddr();
// 回调地址 String notifyUrl = " // 预支付订单号 String tradeType = "JSAPI";
// 公众号的openid String openid = "your_openid";
Map
params.put("appid", appId);
params.put("mch_id", mchId);
params.put("nonce_str", nonceStr);
params.put("body", body);
params.put("total_fee", totalFee);
params.put("spbill_create_ip", spbillCreateIp);
params.put("notify_url", notifyUrl);
params.put("trade_type", tradeType);
params.put("openid", openid);
return params;
}
}
```
注意事项
以上示例代码仅供参考,需要根据实际情况进行修改和完善。
预支付(统一下单)接口是一个重要的组成部分,它允许商户在用户同意后向微信发送一个预支付订单,这样可以让用户在确认支付前,可以先查看订单的详细信息。这个过程通常被称为“统一下单”。