|
|
@@ -524,9 +524,9 @@ public class MembershipService implements MembershipServiceInterface {
|
|
|
* 创建会员订单并按 member_pay_virtual_enabled 开关决定支付方式。
|
|
|
*
|
|
|
* @param sessionKey 当前用户 sessionKey(虚拟支付签名用;普通支付时忽略)
|
|
|
- * @param openid 普通支付时需要(JSAPI payer.openid);虚拟支付时可为 null
|
|
|
- * @return 统一响应 map,含 payType("virtual"/"wechat"/"none")及对应字段;
|
|
|
- * 虚拟支付道具未配置时返回 null(调用方转 46001)
|
|
|
+ * @param openid 普通支付时需要(JSAPI payer.openid);虚拟支付时可为 null
|
|
|
+ * @return 统一响应 map,含 payType("virtual"/"wechat"/"none")及对应字段;
|
|
|
+ * 虚拟道具未配置时降级为普通支付
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Map<String, Object> createOrderWithPayType(Long userId, Long familyId, String levelCode,
|
|
|
@@ -677,18 +677,19 @@ public class MembershipService implements MembershipServiceInterface {
|
|
|
|
|
|
if (virtualEnabled) {
|
|
|
VirtualPayParamsDTO dto = virtualPayService.generateMembershipPayParams(mainOrder.getOrderNo(), sessionKey);
|
|
|
- if (dto == null) {
|
|
|
- return null; // 道具未配置,调用方转 46001
|
|
|
+ if (dto != null) {
|
|
|
+ resp.put("payType", "virtual");
|
|
|
+ resp.put("orderInfo", dto.getOrderInfo());
|
|
|
+ resp.put("extInfo", dto.getExtInfo());
|
|
|
+ resp.put("sign", dto.getSign());
|
|
|
+ resp.put("signature", dto.getSignature());
|
|
|
+ resp.put("env", dto.getEnv());
|
|
|
+ resp.put("signType", dto.getSignType());
|
|
|
+ resp.put("currentPeriod", dto.getCurrentPeriod());
|
|
|
+ return resp;
|
|
|
}
|
|
|
- resp.put("payType", "virtual");
|
|
|
- resp.put("orderInfo", dto.getOrderInfo());
|
|
|
- resp.put("extInfo", dto.getExtInfo());
|
|
|
- resp.put("sign", dto.getSign());
|
|
|
- resp.put("signature", dto.getSignature());
|
|
|
- resp.put("env", dto.getEnv());
|
|
|
- resp.put("signType", dto.getSignType());
|
|
|
- resp.put("currentPeriod", dto.getCurrentPeriod());
|
|
|
- return resp;
|
|
|
+ // 虚拟道具未配置或停用,降级为普通微信支付
|
|
|
+ log.warn("会员虚拟道具未配置或停用,降级普通支付: levelCode={}", levelCode);
|
|
|
}
|
|
|
|
|
|
// 普通微信支付(v3 JSAPI)
|