| | |
| | | public class XcxPayServiceImpl implements IXcxPayService { |
| | | |
| | | @Autowired |
| | | private HappyActivityOrderMapper happyActivityOrderMapper; |
| | | |
| | | @Autowired |
| | | private HappyActivityMapper happyActivityMapper; |
| | | |
| | | @Autowired |
| | | private MallOrderInfoMapper mallOrderInfoMapper; |
| | | @Autowired |
| | | private MallMemberMapper mallMemberMapper; |
| | |
| | | BrandWCPayRequestData payData; |
| | | String productNames = "小程序充值"; |
| | | MallMember mallMember = mallMemberMapper.selectById(apiRechargeWalletDto.getMemberId()); |
| | | String rechargeNo = "CZ_"+MallUtils.getOrderNum(); |
| | | String rechargeNo = apiRechargeWalletDto.getRechargeNo(); |
| | | Long agentApplyId = apiRechargeWalletDto.getAgentApplyId() == null ? 0L : apiRechargeWalletDto.getAgentApplyId(); |
| | | Boolean debug = xcxProperties.getDebug(); |
| | | String attrStr = "{'rechargeNo':"+rechargeNo+",'memberId':"+mallMember.getId()+",'type':"+apiRechargeWalletDto.getType()+"}"; |
| | | String attrStr = "{'rechargeNo':"+rechargeNo |
| | | +",'memberId':"+mallMember.getId() |
| | | +",'agentApplyId':"+agentApplyId |
| | | +",'type':"+apiRechargeWalletDto.getType()+"}"; |
| | | if (debug) { |
| | | payData = weixinServiceUtil.createRechargeWallet("[测试]" + productNames, rechargeNo, |
| | | 1, mallMember.getOpenId(), attrStr); |
| | |
| | | payData = weixinServiceUtil.createRechargeWallet(productNames, rechargeNo, |
| | | unit.multiply(money).intValue(),mallMember.getOpenId(), attrStr); |
| | | } |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | mallMember.getId(), |
| | | money, |
| | | MoneyFlowTypeEnum.RECHARGE.getValue(), |
| | | rechargeNo, |
| | | FlowTypeEnum.BALANCE.getValue(), |
| | | "余额充值",1); |
| | | return payData; |
| | | } |
| | | |
| | |
| | | } |
| | | mallOrderInfo.setWxOrderNo(payData.getPrepay_id()); |
| | | mallOrderInfoMapper.updateById(mallOrderInfo); |
| | | return payData; |
| | | } |
| | | |
| | | @Override |
| | | public BrandWCPayRequestData startPaymentActivity(HappyActivityOrder dto) throws Exception { |
| | | BigDecimal unit = new BigDecimal("100"); |
| | | BigDecimal money = new BigDecimal(dto.getAmount().toString()); |
| | | BrandWCPayRequestData payData; |
| | | HappyActivity happyActivity = happyActivityMapper.selectById(dto.getActivityId()); |
| | | String productNames = getActivityNames(happyActivity.getId(),dto.getNumCnt()); |
| | | MallMember mallMember = mallMemberMapper.selectById(dto.getMemberId()); |
| | | Boolean debug = xcxProperties.getDebug(); |
| | | if (debug) { |
| | | payData = weixinServiceUtil.createActivityOrder("[测试]" + productNames, dto.getOrderNo(), |
| | | 1, mallMember.getOpenId(), String.valueOf(dto.getId())); |
| | | } else { |
| | | payData = weixinServiceUtil.createActivityOrder(productNames, dto.getOrderNo(), |
| | | unit.multiply(money).intValue(),mallMember.getOpenId(), String.valueOf(dto.getId())); |
| | | } |
| | | dto.setWxOrderNo(payData.getPrepay_id()); |
| | | happyActivityOrderMapper.updateById(dto); |
| | | return payData; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | if (type == 3) { |
| | | String inviteId = wxGenerateQrCodeDto.getTypeParam(); |
| | | MallMember member = mallMemberMapper.selectInfoByInviteId(inviteId); |
| | | if(ObjectUtil.isNotNull(member)){ |
| | | String wxCodeImg = member.getInviteImg(); |
| | | if(StrUtil.isNotBlank(wxCodeImg)){ |
| | | return new FebsResponse().success().data(wxCodeImg); |
| | | } |
| | | } |
| | | } |
| | | |
| | | String randomNum = MallUtils.getRandomNum(5); |
| | | String imgName="/user_" + randomNum + "_acode_1.jpg"; |
| | | String codeImgPath = generateAcode(wxGenerateQrCodeDto.getScene(), wxGenerateQrCodeDto.getPage(), imgName, "400px", null); |
| | |
| | | MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(uniqueCode); |
| | | mallTeamLeader.setWxCodeImg(codeImgPath); |
| | | mallTeamLeaderMapper.updateById(mallTeamLeader); |
| | | } |
| | | |
| | | if (type == 3) { |
| | | String inviteId = wxGenerateQrCodeDto.getTypeParam(); |
| | | MallMember member = mallMemberMapper.selectInfoByInviteId(inviteId); |
| | | if(ObjectUtil.isNotNull(member)){ |
| | | member.setInviteImg(codeImgPath); |
| | | mallMemberMapper.updateById(member); |
| | | } |
| | | } |
| | | return new FebsResponse().success().data(codeImgPath); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | //图片上传路径 |
| | | public static final String IMG_UPLOAD_PATH="/mnt/sdc/webresource/groupbuy/wxcode"; |
| | | public static final String IMG_UPLOAD_PATH="/mnt/sdc/webresource/blnka/wxcode"; |
| | | public String generateAcode(String scene,String path,String imgName,String width, Integer type){ |
| | | String urlPrefix="https://hwfile.csxuncong.com/groupbuy/wxcode"; |
| | | String urlPrefix="https://file.blnka.cn/blnka/wxcode"; |
| | | String imgPath=IMG_UPLOAD_PATH+imgName; |
| | | if(!FileUtil.exist(imgPath)){ |
| | | |
| | |
| | | String url = null; |
| | | if (type == null) { |
| | | // 该接口无数量限制,但是 scene 传参最大字符长度为32个字符 |
| | | url = StrFormatter.format("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={}",redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString()); |
| | | url = StrUtil.format("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={}",redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString()); |
| | | obj.set("scene", scene); |
| | | obj.set("page", path); |
| | | } else { |
| | | // 该接口存在数量限制, 总共可生成10w个, 但参数是接在path后面 |
| | | url = StrFormatter.format("https://api.weixin.qq.com/wxa/getwxacode?access_token={}", redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString()); |
| | | url = StrUtil.format("https://api.weixin.qq.com/wxa/getwxacode?access_token={}", redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString()); |
| | | obj.set("page", path + "?" + scene ); |
| | | } |
| | | |
| | |
| | | obj.set("is_hyaline", false); |
| | | try { |
| | | HttpResponse execute = HttpRequest.post(url).body(obj.toString(), "application/json").execute(); |
| | | log.error("微信返回值:{}", execute.body()); |
| | | InputStream inputStream = execute.bodyStream(); |
| | | File file = new File(imgPath); |
| | | FileUtil.writeFromStream(inputStream, file); |
| | |
| | | } |
| | | return productNames; |
| | | } |
| | | |
| | | /** |
| | | * 根据用户ID和订单ID获取所购买商品名称 |
| | | * @return 所含商品名称(多个以","隔开) |
| | | */ |
| | | public String getActivityNames(Long activityId,Integer numCnt) { |
| | | HappyActivity happyActivity = happyActivityMapper.selectById(activityId); |
| | | StringBuffer productNameBuffer = new StringBuffer(); |
| | | Integer maxLength = 25; |
| | | String goodsName = happyActivity.getName(); |
| | | if (goodsName.length() > maxLength) { |
| | | productNameBuffer.append(goodsName.substring(0, maxLength) + "*"+numCnt); |
| | | }else{ |
| | | productNameBuffer.append(goodsName+"*"+numCnt); |
| | | } |
| | | return productNameBuffer.toString(); |
| | | } |
| | | } |