diff --git a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java index f505bb5fd..f6b9a2a52 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java @@ -1,10 +1,12 @@ package com.jsowell.service; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.TypeReference; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.model.Payment; import com.jsowell.adapay.common.CreateAdaPaymentParam; @@ -437,6 +439,12 @@ public class MemberService { return orderService.weixinPayV3(dto); } + /** + * 使用汇付支付充值余额 + * @param dto + * @return + * @throws Exception + */ public Map rechargeBalanceWithAdapay(WeixinPayDTO dto) throws Exception { // 封装对象 CreateAdaPaymentParam createAdaPaymentParam = new CreateAdaPaymentParam(); @@ -444,12 +452,16 @@ public class MemberService { createAdaPaymentParam.setPay_amt(AdapayUtil.formatAmount(dto.getAmount())); createAdaPaymentParam.setApp_id("app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa"); // todo 后面移动到配置文件中 createAdaPaymentParam.setPay_channel("wx_lite"); // todo 如果以后有支付宝等别的渠道,这里需要做修改,判断是什么渠道的请求 - createAdaPaymentParam.setGoods_title("充电费用1"); - createAdaPaymentParam.setGoods_desc("充电费用2"); - createAdaPaymentParam.setDescription("充电费用3"); + createAdaPaymentParam.setGoods_title("余额"); + createAdaPaymentParam.setGoods_desc("会员充值余额"); + // createAdaPaymentParam.setDescription("充电费用3"); createAdaPaymentParam.setExpend(JSONObject.toJSONString( ImmutableMap.of("open_id", dto.getOpenId()))); //异步通知地址,url为http/https路径,服务器POST回调,URL 上请勿附带参数 createAdaPaymentParam.setNotify_url("https://api.jsowellcloud.com/uniapp/pay/adapayCallback"); + Map map = Maps.newHashMap(); + map.put("type", ScenarioEnum.BALANCE.getValue()); + map.put("memberId", dto.getMemberId()); + createAdaPaymentParam.setDescription(JSON.toJSONString(map)); try { log.info("创建汇付支付参数:{}", JSONObject.toJSONString(createAdaPaymentParam)); Map response = Payment.create(BeanMap.create(createAdaPaymentParam)); diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 8a65c5754..3185336e3 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -1,5 +1,6 @@ package com.jsowell.service; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -1248,8 +1249,54 @@ public class OrderService { AdapayCallbackRecord adapayCallbackRecord = mapper.readValue(data, AdapayCallbackRecord.class); adapayCallbackRecordService.saveAdapayCallbackRecord(adapayCallbackRecord); - // 修改订单为已支付 + JSONObject descJson = JSON.parseObject(adapayCallbackRecord.getDescription()); + String type = descJson.getString("type"); + String memberId = descJson.getString("memberId"); + String orderCode = descJson.getString("orderCode"); + BigDecimal amount = adapayCallbackRecord.getPayAmt(); + if (StringUtils.equals(type, ScenarioEnum.ORDER.getValue())) { // 1-订单支付 + // 支付订单成功 + // orderCode = (String) map.get("orderCode"); + PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder() + .orderCode(orderCode) + .payAmount(amount) + .payMode(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue()) + .build(); + // 订单支付成功 支付回调 + payOrderSuccessCallback(callbackDTO); + // 记录订单支付流水 + OrderPayRecord orderPayRecord = OrderPayRecord.builder() + .orderCode(orderCode) + .payMode(OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue()) + .payAmount(amount) + .createBy(null) + .build(); + orderPayRecordService.batchInsert(Lists.newArrayList(orderPayRecord)); + } else if (StringUtils.equals(type, ScenarioEnum.BALANCE.getValue())) { // 2-充值余额 + // 充值余额成功 + // memberId = (String) map.get("memberId"); + UpdateMemberBalanceDTO dto = new UpdateMemberBalanceDTO(); + dto.setMemberId(memberId); + dto.setType(MemberWalletEnum.TYPE_IN.getValue()); + dto.setSubType(MemberWalletEnum.SUBTYPE_TOP_UP.getValue()); + dto.setUpdatePrincipalBalance(amount); + memberBasicInfoService.updateMemberBalance(dto); + } + + // 微信支付订单 记录会员交易流水 + MemberTransactionRecord record = MemberTransactionRecord.builder() + .orderCode(orderCode) + .scenarioType(type) + .memberId(memberId) + .actionType(ActionTypeEnum.FORWARD.getValue()) + .payMode(PayModeEnum.PAYMENT_OF_WECHATPAY.getValue()) + .paymentInstitutions(PaymentInstitutionsEnum.ADAPAY.getValue()) + .amount(amount) // 单位元 + .outTradeNo(adapayCallbackRecord.getPartyOrderId()) + .transactionId(adapayCallbackRecord.getOutTransId()) + .build(); + memberTransactionRecordService.insertSelective(record); } }