|
@@ -87,8 +87,7 @@ public class DefaultWechatHandler implements WechatHandler {
|
|
/**
|
|
/**
|
|
* 获取小程序schemeCode接口地址
|
|
* 获取小程序schemeCode接口地址
|
|
*/
|
|
*/
|
|
- private static final String GENERATE_SCHEME_URL =
|
|
|
|
- "https://api.weixin.qq.com/wxa/generatescheme?access_token=%s";
|
|
|
|
|
|
+ private static final String GENERATE_SCHEME_URL = "https://api.weixin.qq.com/wxa/generatescheme?access_token=%s";
|
|
|
|
|
|
private final RestTemplate restTemplate;
|
|
private final RestTemplate restTemplate;
|
|
private final RedisTemplate<String, Object> redisTemplate;
|
|
private final RedisTemplate<String, Object> redisTemplate;
|
|
@@ -131,14 +130,14 @@ public class DefaultWechatHandler implements WechatHandler {
|
|
/**
|
|
/**
|
|
* 获取支付配置
|
|
* 获取支付配置
|
|
*
|
|
*
|
|
- * @param mode 支付方式
|
|
|
|
|
|
+ * @param type 支付类型
|
|
* @return 支付配置
|
|
* @return 支付配置
|
|
*/
|
|
*/
|
|
- private WechatProperties.Payment getPayment(PayMode mode) {
|
|
|
|
|
|
+ private WechatProperties.Payment getPayment(String type) {
|
|
List<WechatProperties.Payment> payments = this.properties.getPayments();
|
|
List<WechatProperties.Payment> payments = this.properties.getPayments();
|
|
WechatProperties.Payment payment = CollectionUtils.isEmpty(payments) ? null :
|
|
WechatProperties.Payment payment = CollectionUtils.isEmpty(payments) ? null :
|
|
- payments.stream().filter(config -> config.getMode() == mode).findAny().orElse(null);
|
|
|
|
- return Objects.requireNonNull(payment, "Not support pay mode: " + mode);
|
|
|
|
|
|
+ payments.stream().filter(config -> Objects.equals(config.getType(), type)).findAny().orElse(null);
|
|
|
|
+ return Objects.requireNonNull(payment, "Not support payment type: " + type);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -152,7 +151,7 @@ public class DefaultWechatHandler implements WechatHandler {
|
|
String mchid = Objects.requireNonNull(payment.getMchid(), "Wechat mchid unspecified");
|
|
String mchid = Objects.requireNonNull(payment.getMchid(), "Wechat mchid unspecified");
|
|
String callback = Objects.requireNonNull(payment.getCallback(), "Wechat callback unspecified");
|
|
String callback = Objects.requireNonNull(payment.getCallback(), "Wechat callback unspecified");
|
|
Map<String, String> parameters = Maps.newHashMap();
|
|
Map<String, String> parameters = Maps.newHashMap();
|
|
- parameters.put("appid", this.getAppid(payment));
|
|
|
|
|
|
+ parameters.put("appid", payment.getAppid());
|
|
parameters.put("mch_id", mchid);
|
|
parameters.put("mch_id", mchid);
|
|
parameters.put("body", request.getComment());
|
|
parameters.put("body", request.getComment());
|
|
parameters.put("out_trade_no", request.getOrder());
|
|
parameters.put("out_trade_no", request.getOrder());
|
|
@@ -168,19 +167,6 @@ public class DefaultWechatHandler implements WechatHandler {
|
|
return parameters;
|
|
return parameters;
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 根据支付交易类型获取Appid
|
|
|
|
- *
|
|
|
|
- * @param payment 支付配置
|
|
|
|
- * @return Appid
|
|
|
|
- */
|
|
|
|
- private String getAppid(WechatProperties.Payment payment) {
|
|
|
|
- if (payment.getMode() == PayMode.APP || payment.getMode() == PayMode.NATIVE) {
|
|
|
|
- return Objects.requireNonNull(payment.getPayid(), "Wechat payid unspecified");
|
|
|
|
- }
|
|
|
|
- return Objects.requireNonNull(this.properties.getAppid(), "Wechat appid unspecified");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* 参数签名
|
|
* 参数签名
|
|
*
|
|
*
|
|
@@ -362,20 +348,20 @@ public class DefaultWechatHandler implements WechatHandler {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public String sign(@NonNull PayMode mode, @NonNull Map<String, String> parameters) {
|
|
|
|
- return this.sign(this.getPayment(mode), parameters);
|
|
|
|
|
|
+ public String sign(@NonNull String type, @NonNull Map<String, String> parameters) {
|
|
|
|
+ return this.sign(this.getPayment(type), parameters);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public WechatUnifiedOrder unifiedorder(@NonNull PayMode mode, @NonNull WechatPayRequest request) {
|
|
|
|
|
|
+ public WechatUnifiedOrder unifiedorder(@NonNull String type, @NonNull WechatPayRequest request) {
|
|
// 获取支付配置
|
|
// 获取支付配置
|
|
- WechatProperties.Payment payment = this.getPayment(mode);
|
|
|
|
|
|
+ WechatProperties.Payment payment = this.getPayment(type);
|
|
|
|
|
|
// 构建请求参数
|
|
// 构建请求参数
|
|
Map<String, String> parameters = this.generatePaymentParameters(payment, request);
|
|
Map<String, String> parameters = this.generatePaymentParameters(payment, request);
|
|
|
|
|
|
// 如果是小程序支付则需要指定openid
|
|
// 如果是小程序支付则需要指定openid
|
|
- if (mode == PayMode.JSAPI) {
|
|
|
|
|
|
+ if (payment.getMode() == PayMode.JSAPI) {
|
|
parameters.put("openid", Objects.requireNonNull(request.getOpenid(), "openid unspecified"));
|
|
parameters.put("openid", Objects.requireNonNull(request.getOpenid(), "openid unspecified"));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -412,8 +398,8 @@ public class DefaultWechatHandler implements WechatHandler {
|
|
}
|
|
}
|
|
|
|
|
|
// 构建微信统一下单信息
|
|
// 构建微信统一下单信息
|
|
- return WechatUnifiedOrder.builder().mode(mode).appid(result.get("appid")).mchid(result.get("mch_id"))
|
|
|
|
- .nonce(result.get("nonce_str")).prepayid(result.get("prepay_id"))
|
|
|
|
|
|
+ return WechatUnifiedOrder.builder().mode(payment.getMode()).appid(result.get("appid"))
|
|
|
|
+ .mchid(result.get("mch_id")).nonce(result.get("nonce_str")).prepayid(result.get("prepay_id"))
|
|
.qrcode(result.get("code_url")).build();
|
|
.qrcode(result.get("code_url")).build();
|
|
}
|
|
}
|
|
}
|
|
}
|