小程序相关

pull/1/head
sjm 2 years ago
parent b7f45fded7
commit 4a6f137c07

@ -12,6 +12,7 @@ import com.cyl.manager.aws.mapper.SystemStatisticsMapper;
import com.cyl.manager.aws.service.SystemStatisticsService;
import com.cyl.manager.ums.service.MemberCartService;
import com.cyl.wechat.WechatAuthService;
import com.cyl.wechat.WechatPayData;
import com.cyl.wechat.WechatPayService;
import com.ruoyi.RuoYiApplication;
import com.ruoyi.common.config.properties.SmsProperties;
@ -103,7 +104,7 @@ public class ServiceTest {
// String code = "0611P2Ga1D8QCF0CVuJa1qNUJa11P2GL";
// WechatUserAuth userToken = wechatAuthService.getUserToken(code);
String openId="oUA8I6lDdwSfz-EwR4284dU3KOYw";
String res = wechatPayService.jsapiPay(UUID.randomUUID().toString().substring(0,30), "测试支付", 1, openId, 22L);
String res = wechatPayService.jsapiPay(UUID.randomUUID().toString().substring(0,30), "测试支付", 1, openId, 22L, WechatPayData.appId);
System.out.println(res);
}

@ -9,7 +9,6 @@ import org.springframework.context.annotation.DependsOn;
@Configuration
@DependsOn("WechatPayData")
@ConditionalOnProperty(prefix = "wechat", name = "enabled", havingValue = "true")
public class WechatConfig {
@Bean

@ -11,4 +11,6 @@ public class H5SmsLoginRequest extends H5LoginRequest {
private String uuid;
/** 微信授权信息 */
private WechatUserAuth authInfo;
/** 小程序openid **/
private String mpOpenId;
}

@ -15,4 +15,7 @@ public class OrderPayRequest {
@ApiModelProperty(value = "用户id", hidden = true)
private Long memberId;
@ApiModelProperty(value = "微信支付方式 1公众号 2小程序")
private Integer wechatType = 1;
}

@ -192,6 +192,9 @@ public class H5MemberService {
memberWechat.setExpiresIn(request.getAuthInfo().getExpires_in());
memberWechat.setRefreshToken(request.getAuthInfo().getRefresh_token());
}
if (StringUtils.isNotEmpty(request.getMpOpenId())){
memberWechat.setRoutineOpenid(request.getMpOpenId());
}
memberWechat.setCreateTime(optDate);
memberWechat.setCreateBy(member.getId());
rows = memberWechatMapper.insert(memberWechat);
@ -201,6 +204,27 @@ public class H5MemberService {
}else {
//校验会员状态
validateMemberStatus(member);
//判断小程序openid是否插入
if (StringUtils.isNotEmpty(request.getMpOpenId()) || request.getAuthInfo() != null){
QueryWrapper<MemberWechat> queryWrapper = new QueryWrapper();
queryWrapper.eq("member_id",member.getId());
MemberWechat memberWechat = memberWechatMapper.selectOne(queryWrapper);
Boolean update = false;
if (StringUtils.isNotEmpty(request.getMpOpenId()) && StringUtils.isEmpty(memberWechat.getRoutineOpenid())) {
memberWechat.setRoutineOpenid(request.getMpOpenId());
update = true;
}
if (request.getAuthInfo() != null && StringUtils.isEmpty(memberWechat.getOpenid())) {
memberWechat.setOpenid(request.getAuthInfo().getOpenid());
memberWechat.setAccessToken(request.getAuthInfo().getAccess_token());
memberWechat.setExpiresIn(request.getAuthInfo().getExpires_in());
memberWechat.setRefreshToken(request.getAuthInfo().getRefresh_token());
update = true;
}
if (update){
memberWechatMapper.updateById(memberWechat);
}
}
}
return getLoginResponse(member.getId());

@ -49,7 +49,7 @@ import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
@ -96,7 +96,6 @@ public class H5OrderService {
private OrderOperateHistoryService orderOperateHistoryService;
@Autowired
@Lazy
private WechatPayService wechatPayService;
@Autowired
@ -496,17 +495,23 @@ public class H5OrderService {
}
//请开启微信支付 wechat.enabled=true
//调用wx的jsapi拿prepayId返回签名等信息
String openId = memberWechat.getOpenid();
String appId = WechatPayData.appId;
if (2 == req.getWechatType()) {
openId = memberWechat.getRoutineOpenid();
appId = WechatPayData.miniProgramAppId;
}
String prepayId = wechatPayService.jsapiPay(
String.valueOf(req.getPayId()),
orderDesc,
Integer.valueOf(orderList.stream().map(Order::getPayAmount).
reduce(BigDecimal.ZERO, BigDecimal::add).multiply(new BigDecimal(100)).stripTrailingZeros().toPlainString()),
memberWechat.getOpenid(),
req.getMemberId()
openId,
req.getMemberId(),
appId
);
OrderPayResponse response = new OrderPayResponse();
response.setPayType(2);
String appId = WechatPayData.appId;
String nonceStr = WechatPayUtil.generateNonceStr();
long timeStamp = WechatPayUtil.getCurrentTimestamp();
prepayId = "prepay_id=" + prepayId;

@ -7,12 +7,12 @@ import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest;
import com.wechat.pay.java.service.payments.jsapi.model.PrepayResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
@Service
@Slf4j
@ConditionalOnProperty(prefix = "wechat", name = "enabled", havingValue = "true")
public class WechatPayService {
@Autowired
@ -26,9 +26,9 @@ public class WechatPayService {
* @param openId openid
* @return prepay_id
*/
public String jsapiPay(String orderNo,String desc,Integer totalAmount,String openId, Long memberId){
public String jsapiPay(String orderNo,String desc,Integer totalAmount,String openId, Long memberId,String appId){
PrepayRequest prepayRequest = new PrepayRequest();
prepayRequest.setAppid(WechatPayData.appId);
prepayRequest.setAppid(appId);
prepayRequest.setMchid(WechatPayData.merchantId);
prepayRequest.setDescription(desc);
prepayRequest.setOutTradeNo(orderNo);

Loading…
Cancel
Save