refactor: 调整支付宝支付相关代码并修改会员权益相关功能

master
yang 2025-02-08 09:46:31 +08:00
parent 7e0540104f
commit 79bf09e235
8 changed files with 119 additions and 73 deletions

View File

@ -48,21 +48,7 @@ public class MemberLevelController {
@ApiOperation(value = "获取会员等级及权益列表") @ApiOperation(value = "获取会员等级及权益列表")
public AjaxResult getMemberBenefitList() { public AjaxResult getMemberBenefitList() {
List<MemberBenefitVO> memberBenefitVOList = new ArrayList<>(); return AjaxResult.success(memberBenefitService.getMemberBenefitList());
List<MemberLevel> memberLevelList = memberLevelService.list();
for (MemberLevel memberLevel : memberLevelList) {
MemberBenefitVO memberBenefitVO = new MemberBenefitVO();
memberBenefitVO.setMemberLevel(memberLevel);
// 获取会员等级对应的权益
List<MemberBenefit> memberBenefitList = memberBenefitService.lambdaQuery()
.eq(MemberBenefit::getMemberLevelId, memberLevel.getId())
.list();
memberBenefitVO.setMemberBenefitList(memberBenefitList);
memberBenefitVOList.add(memberBenefitVO);
}
return AjaxResult.success(memberBenefitVOList);
} }
} }

View File

@ -98,15 +98,15 @@ public class AliPayController extends BaseController {
} }
} }
/** // /**
* // * 账户余额查询
*/ // */
@GetMapping("/balance") // @GetMapping("/balance")
@ResponseBody // @ResponseBody
public AjaxResult balance(@Valid @NotNull(message = "用户ID不能为空") Long userId) throws AlipayApiException { // public AjaxResult balance() throws AlipayApiException {
String balance = aliPayService.balance(userId); // String balance = aliPayService.balance();
return AjaxResult.success(balance); // return AjaxResult.success(balance);
} // }
/** /**
@ -140,13 +140,13 @@ public class AliPayController extends BaseController {
* *
*/ */
@Anonymous @Anonymous
@PostMapping("/fetch") @GetMapping("/fetch")
@ResponseBody @ResponseBody
@ApiOperation(value = "提现") @ApiOperation(value = "提现")
public AjaxResult fetch(@Valid public AjaxResult fetch(@Valid
@NotNull(message = "提现金额不能为空") @NotNull(message = "提现金额不能为空")
Double amount) throws Exception { Double amount) throws Exception {
if (amount < 0.01) { if (amount < 0.1) {
return AjaxResult.error("提现金额最小为0.01"); return AjaxResult.error("提现金额最小为0.01");
} }
String outBizNo = UUID.fastUUID().toString(true); String outBizNo = UUID.fastUUID().toString(true);

View File

@ -115,17 +115,39 @@ aliyun:
accessKeySecret: F82IVNx0IGJ3AnP6gSIfcyql1HCXIH accessKeySecret: F82IVNx0IGJ3AnP6gSIfcyql1HCXIH
accessPre: https://ybl2112.oss-cn-beijing.aliyuncs.com/ accessPre: https://ybl2112.oss-cn-beijing.aliyuncs.com/
## 沙箱环境
mall: mall:
mgt: mgt:
aliPayConfig: aliPayConfig:
protocol: https protocol: https
gatewayHost: openapi-sandbox.dl.alipaydev.com gatewayHost: openapi-sandbox.dl.alipaydev.com
signType: RSA2 signType: RSA2
appId: 9021000135682614 # 沙箱应用id
privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCQxmQGcaiKjOhayWi+zNTvpp8B5YT8jFFkjLzrD+W+T2Dwf2GfFR4p95zsCJxYeoLWdghMPA6/GMFrLbuVFpaEjuTm4icqA9N8n5d3W0j7gh+wMjZoqyJclAIeb09ut7rY6mWzilA9kWmZnUG7MOWIU70RVRYrfJectCFw/odM9lG4XIVe13X2h+1ecTQyQzLWmnvKFCfo7dQjE7fIYiWfud1ZGUneNs3u73pNWMB6ThGTTCbs0atcgM3fYOg3q7fTxIu9VcaUCJiJ/kNbL9sVEyOrSyx2f2o6w06zdEaOiQFsuDeS8QPYGMg7pf42wAfqCO6hqxQiQT5vp1hvB0o1AgMBAAECggEAIhaEYLwMSispXo8D2cES9iaOU/z91hUX6Qv2Q4anuqqoEZh8nN91Db6etTjFz1NxURvTklelxTsH97t56n26DRY0MWTYgd0Kw9Iz8MeOpKGb4nnAM97vpUq4QQBGfLRIC2ENdzu+7vA5JBFR88hsky/cWaNmJ/EbJauIIDneE7GigMR2HF7kfzdZzOBN4ZEh/ef5NKeCnEieRJJhWRgrgNXVZ44Tqi67AM7ey9pyUtBe7fgzxXtrWXBN9yKaVxxSXm3KJXFQqA6mcilFVZaxMNlAySc4MPTW8lq0ozOCOCunoeIphNz/OVIxGu3/voXFXlBfOKqOkYMVZxMY6OrvtQKBgQD0nIlXK4VW72VaGpz9kxQkRNzJV/yqaqet1GOSlPM2l0RCRFOVVdnvbQdHGPe6+HxHL1dh5MP8T/aHoP+4UXkkQCc8moS2FZxJvFH2QTSZBcSSdGL7GMpROqs38J+XlJzrhNcB20lrW6D7yMeQa4YEcXwdbD8Er/YaIqODBWYYewKBgQCXg+16RLDArciwwhf0TBWZPor2iYFDdwU5UPu7CKOhU1MLfQhG85gGpXHjB6G8cMUi/ezxh/FEl+sWOZegpkPwL5/BQS9tNYWIaC4kipPF/a5Up4DMYUHVAuuPwNqqXpvgU+rGjCns0wtPRnjrkghLkc3oTSID7o7pzUwIk2whDwKBgAys3+EIfExY82OL5X6uVGjcuKQmTw11oWK8krxRw5iclgjpCXu/ix+BAtOIU634mlgF9/02oYE9k4TLrvSaJDDgsifNyfq1e/fGLmkYT+VuCxWbulVQn4s+AwlPCrYMGWWK6KlL9638fYcOjGjLaZJpXwkXRtyzUYlhKh/r87JpAoGBAIavRp2mi/xrPvgpQQPv0k9L8llfOCHRnjoqC+thrZsNp8eRmJcBmMVnskofEZ2iHQuS71pw/n58EQTLo0ayJbhPjVJL8K3CovXzrfjbmqqoa5xi3bJQTiXdF6rMw1QpD6Uk05E1LVuQ6v/IZFr7kBYlAQWb8z3NhQq+bPU+nyLvAoGAGpBbSM8gPzdWQqkHoos0icu3cj0GhN3MU7+1Eb/rsXyh/lk5wtZTEnHjwhdUOUtwVNjvrv7CzA7unhOoaM6YcE/Zpd4zt8pjqH1Mhds7UHf4Xg+A+J4G6meYnhSwfBpOub02ncsqfBlXE0qhFv6AvcMewWndyLb8EYaUUXTYkG0= appId: 9021000143684202
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApHkjwHnoUnZuqbas+ZputyWIfU2WKBFKd+wFwlCZytpQhVA16CGAMCGpgjxUPpqbmOtPy74y0wxmDHB9IaYOVsVmi2SAl1IqfxwUSIllbdvbjBvZFAIQlPa8U/zHJPgdGNHDt/Bwqp5uB0OkcGLB9PYyAXBEKiu6zdTsiZloUrPwgnBRJ0iNHYiWo/oOYD9KfopLA+D1nQjqq8m3ShZe46ecMo6ZCHtQI/HtgL/EGga5KY2zOUi0Wwviu8w79RjjzfdsDkzu5VnBdaSru4awDyiF9nAF+uPgA4ZOdLKkpoEANwuIorDW8tT69Gwh+mYx9sDJMxJf7XOekdPbymomiwIDAQAB # 沙箱应用私钥
notifyUrl: https://253d7236.r27.cpolar.top/web/pay/notify privateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyhwMKnP7oBQ9qKhxke9AXN7ZNcniMnJFcWWFPfs3W6QqKBGFGFYQFyqfmnf2gM4nYtEbvit0CcmSrdniR3aZVb6s0A/KWqD5ejf+zjdnn5XH4GYsm/DXZoBqdAMWQUaQcVB1lC9az1rn13n9UHBJ+s+UAWtFjXMDd78dsE7enU3RjBffyvl/A+r6c0jnSHDNttSXyamxGX8ng8hK5XdCAusOfYpWnLY90sjlyz98snIfVPqAfD3KTP88gRF1KfWZniwMCR/OjCp6jm5d5dvOj8xyk7R1LfZ0CH/fXOcvpCe9JISS9DyzEzW5XpsnO5p8Mo8wFL6TKVBng+Ss0Tr0NAgMBAAECggEAPnaCl+oKPf/XPtvxBy9SxWzWug49I2V8boVPSNMjDfiHmXai2jSY9rXLPSM2JCEkL9ATqag6X6rKkjtnQBH/KpFho1dmP1QqTkb8mkQdY8ehsp6tUzyXUsdzyE8G0NHfy5Gan0ofGtkcQ2xPvIv95JromtErxcokKQLGEYhsj3xL+KVsUh5YedX/6sAiJ1KS5Zs82eh6bbCvUzuSPc4hjyfLSux5AnGBPnwEzWWJiA5z9zK17i8Cb7FnEeRmNvJw7VsXaCMFquZ6+bzlKdSuUqzqNhHMX8AivePTjj7pPHFW3FTh64E20yzl7CIwkScToXT3H7oaHRA1xGySmGNBuQKBgQDXFcg0b8L0A/Zril+4IwfckH1gpUbqlplzfozM/a/0rojQEdS+X7g4ypdPc47cwoLJx08/84L8ZPj49CImoGNdj5K9B2fY/E10SIJJqN5lb9NI4KINvGGM58NDSAl+GjT5mljkPI8jzQ1ACcy9DGV/KVScGHUWUpeLOK22AEcfWwKBgQDUfPFBHc2Bkuv3bRoNT+fnChMw5CI65wD74vR5GKyurh50DB3RZXwhRsAFd9NowINm9B2KAR0IrB+vh3EwfJaWDauh3ykZZtrAphSa11dJXvtathHTuQmXalZv5brh5mHie87yoxMn7vqDi0bwkNlb/b1wwokwc0oc3NSoNsFptwKBgCJhjPs00kkHSSCvodVhZCRRxHjqcoeVQzo/BGrQMow+SghYkVVNH7mUSNOeeTu4rAdtILHsTwfhbBr/i2X5RWjzRlWJFYSN8COiY5E6uTIlyfRgVAc2EbHgakoa/cl2jvlHPuZc99SVNoUCDAQ8Mw08ohXBoxXKZgcPLFVnffb5AoGBAJW5cDmk6WCrCRAwVVIaAtsek0U5CxGcImpakk8d3te7IwQ8YWph6yR7eOSheVrvg+ewjXvnqvCocC877brvnyAeg9isqYYXnn5uyEgPApdVkSFq94bLdIG30S5JnvR8ZG61NK5t0BqsXuL/6b2rIy2Zzrm8qfR02D0cMdBRvNljAoGBAMJG7/TqodrYPYyOZ4/IbbhAitBHWpHYJHSENnuxbQGAQuCt52Jp3eULR2r7uk3dUDuE8mB2QAEStuV/orfdxxRxJIYbEynJFGCa9O5LTevbM4MoNRfLCPPmFK5PJivlJcdrCyQKEmGSLLrVdb3H/Wzu0/4K/ZhwyrtBz4MRkuwD
# 沙箱支付宝公钥
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgfv3CE8I87I5HHcMtK1RrPQZzLqYlXxRa96lIYkEyFsxdMcMSwnNJJf/mceZhMQnXQDkuEYTZPO/DJbmiZkBWbRZNfIJur5Af/wKZEmHahtEWlrdJdJ6fh7j11eeqbXBfo55H1dxPEQA/obfe85WrqoE0fa06XElgq5/RwsSKjZpnorbO8mMnDaRwxIOoRVHQlHgfkMtTHfP+Zw8Kv0tyJdWLxVDgtg0OoO8VnrDNGBwsxJDOvLjZBbp9NX3wiWQpfh4OBkN1KKfIA9yfBhS6N0bnWfr428Boz/qNhycdrG/MYGQDiG8hVt177fKvTVXRf/kdSIz3izN1GnzOUkadQIDAQAB
notifyUrl: https://253d7236.r27.cpolar.top/ali/pay/notify
# 沙箱支付宝网关
gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
## 线上环境
#mall:
# mgt:
# aliPayConfig:
# protocol: https
# gatewayHost: openapi-sandbox.dl.alipaydev.com
# signType: RSA2
# # 线上应用id
# appId: 2021005114616085
# # 线上应用私钥
# privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCMsTikcbGWE/E9bzaVCUvtqlrzzOo26zYl1mOVRPjJTMRi7VJrOGRpanvG9d0tCh7D5HEBO6hkd5UxEXT0/HOBRgHx7GnvUIGyAstyL8galRWpsDrRD6NVEVMB6l7mntJzfF1GKsHME2ITPp8zv7IXGGHajlA7NWO4DK6dbVL9VwdcZI1HC5nvAVm4gRsfg3uFa2i6aG+M4iKK4F94HEifFhAbi3PNDt+AF7GeE+/IWY1raNupWhoEDRLL54p9UqVhjF+cKvKfspthfo5cAsk07vxB5QGBSOOM7/Sd4gP/9tXbhJmCjQT0EWShgyHHW95qaCBDRFfEu4fyehikBaFrAgMBAAECggEAVy+3/0gpmexv0fdqZr9lGzo3tN/mwPPQEXCjM6yTVAPLq9aP/bvrldwUKn7QeonL+O9HDFGRD/l/LfI4fV04owLkT6yHFXPZe5v5waBUrAx5aTe5qza6rAvZWdWIy/feSQznrITwpevZGj3zYJlJ3sAQW+VXWOnECxlo2EwYYr+xm6TPacjx3aP/tp/7wp8cDit3gJpoMPG8sSBoDNBgF4vHAkF9GOf4JpHXQyVvRM7hv/jfH2h0K0tae/FxCBwXnjHEiV0EJyRYhq+NRETU2Srd+gaJejz/fpIZgbU5C5hFYKzqhHDilIvvZJxsSsUQWDI/htxCBZW4IgwJyYOhUQKBgQDCKSg47AX9NJjZgJlEG9fbHNCEIwl3hQAWXGHup+S9V9UVx90KmkfQubUrdr4ToszsHsDINIALd9z6HgJvhLBbPQ7nvts+go6THZU38SPqxHdoyqD6g+qDVDYzZHFPWInNw1X3/AKERkOPl5Ifvn/sjy++X4I824Vgu137CfffSQKBgQC5gIZ7e7pe6DJr98oSpARjBjsbyI6WB5S1CBsHVLL78IN4CqwTkgpaOsO8c4OOlo5FkSU3gPtxOpshKWq2Xy1IBDh3cpj70GMs8DINzA/lYR6/Y366Spavkk5IBHsVJ2bflTVPtIWUXjbL+jcyaXgZIZTUbZb4wPwgOFAM5oyXEwKBgDxwtW2qw16D7gTfDFbwV+yEdsB7a6oCA/nx/iZdq03ptpJWKg/v4OUvuh7yks7oAeSK2jY4aZeoU2ikyNtQMdnlEuu/NN6ro5hWQCou7aBaUlWTpjL1t530K/8piEBL7nHYGb3dfCcS/FsJstog4g+QrysS7iblqwpmqSXJf5jJAoGBAKmzxdPj3h0DCVWyq1+gQw8gXSTOtnrUVpvC3Y84UkGfx3YjNUb2HJhtGDIn7xub6m4EGesMCXuNpOuSizhqG++9RLcp1IDSJFixKOlsXMJ4tftbF01v/SiDjS/fQYaZtEgopUvUlzujcTfsIWDyEdfT2+b2lt3dFwqW2czjgYyXAoGASBOqGf21NSwB+RO/gPWuA/EeL8jI9SBc3V6VFvpkp8EH5+yzwXumTD9TTwOvaXpxMgjraRkCmNDwZmMpCU3ZHg9Pj+37bbIXJOBt8f1COTWf2uPp0GqVqSeWDOrJ/MQ6Mqmou/ifXvkhgExmo5ustu4v5WNE0WsYiGeVBMRejDE=
# # 线上支付宝公钥
# publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApcX0/YWkzEYO4Lki2ViFzezoIYq1AgOjc4lES59hmrJLJGWenCk/88M4SqKRj/6xPpsiMqe+GAzKRqZoCJvV1Cp5sqRaR/e+QyAqW8wDZbEKvnCK3lKB9W/8lntwzB1zGRDD9Tk1v5hcdXbCJ/hrg8REwlTSespeVD1+nnlKZbj14zvgmYM1SupYzmDw3SWArkf/OQDo6dnJGQkBOv92dDA2pzatUVkdKccctd35MEM7N88gjlHKcUJ1d95H3vij/zy4luV4ylHnxho7ZkZK4vh0v40Oqw/DUdpkbju4dcuBUXGrup+8/7A7ZSdqkf2XDvPW9PxGotQ4YvmCDt6izwIDAQAB
# notifyUrl: https://253d7236.r27.cpolar.top/ali/pay/notify
# # 线上支付宝网关
# gatewayUrl: https://openapi.alipay.com/gateway.do

View File

@ -2,6 +2,8 @@ package com.mcwl.memberCenter.domain.vo;
import com.mcwl.memberCenter.domain.MemberBenefit; import com.mcwl.memberCenter.domain.MemberBenefit;
import com.mcwl.memberCenter.domain.MemberLevel; import com.mcwl.memberCenter.domain.MemberLevel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
@ -14,7 +16,7 @@ import java.util.List;
public class MemberBenefitVO { public class MemberBenefitVO {
// 会员等级 // 会员等级
private MemberLevel memberLevel; private String memberLevelName;
// 会员权益 // 会员权益
private List<MemberBenefit> memberBenefitList = new ArrayList<>(); private List<MemberBenefit> memberBenefitList = new ArrayList<>();

View File

@ -2,9 +2,12 @@ package com.mcwl.memberCenter.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.memberCenter.domain.MemberBenefit; import com.mcwl.memberCenter.domain.MemberBenefit;
import com.mcwl.memberCenter.domain.vo.MemberBenefitVO;
import java.util.List;
public interface MemberBenefitService extends IService<MemberBenefit> { public interface MemberBenefitService extends IService<MemberBenefit> {
List<MemberBenefitVO> getMemberBenefitList();
} }

View File

@ -1,14 +1,51 @@
package com.mcwl.memberCenter.service.impl; package com.mcwl.memberCenter.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.memberCenter.domain.MemberBenefit; import com.mcwl.memberCenter.domain.MemberBenefit;
import com.mcwl.memberCenter.domain.MemberLevel;
import com.mcwl.memberCenter.domain.vo.MemberBenefitVO;
import com.mcwl.memberCenter.mapper.MemberBenefitMapper; import com.mcwl.memberCenter.mapper.MemberBenefitMapper;
import com.mcwl.memberCenter.service.MemberBenefitService; import com.mcwl.memberCenter.service.MemberBenefitService;
import com.mcwl.memberCenter.service.MemberLevelService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class MemberBenefitServiceImpl extends ServiceImpl<MemberBenefitMapper, MemberBenefit> implements MemberBenefitService { public class MemberBenefitServiceImpl extends ServiceImpl<MemberBenefitMapper, MemberBenefit> implements MemberBenefitService {
private final MemberLevelService memberLevelService;
@Override
public List<MemberBenefitVO> getMemberBenefitList() {
List<MemberBenefitVO> memberBenefitVOList = initList();
List<MemberLevel> memberLevelList = memberLevelService.list();
for (MemberLevel memberLevel : memberLevelList) {
MemberBenefitVO memberBenefitVO = new MemberBenefitVO();
memberBenefitVO.setMemberLevelName(memberLevel.getMemberName());
// 获取会员等级对应的权益
List<MemberBenefit> memberBenefitList = baseMapper.selectList(new LambdaQueryWrapper<MemberBenefit>()
.eq(MemberBenefit::getMemberLevelId, memberLevel.getId()));
memberBenefitVO.setMemberBenefitList(memberBenefitList);
memberBenefitVOList.add(memberBenefitVO);
}
return memberBenefitVOList;
}
private List<MemberBenefitVO> initList() {
List<MemberBenefitVO> memberBenefitVOList = new ArrayList<>();
MemberBenefitVO memberBenefitVO = new MemberBenefitVO();
memberBenefitVO.setMemberLevelName("会员权益");
memberBenefitVO.setMemberBenefitList(baseMapper.selectList(null));
memberBenefitVOList.add(memberBenefitVO);
return memberBenefitVOList;
}
} }

View File

@ -13,5 +13,5 @@ public interface AliPayService {
AjaxResult fetch(String outBizNo, String amount) throws AlipayApiException; AjaxResult fetch(String outBizNo, String amount) throws AlipayApiException;
String balance(Long userId) throws AlipayApiException; String balance() throws AlipayApiException;
} }

View File

@ -19,14 +19,12 @@ import com.alipay.api.request.AlipayFundTransUniTransferRequest;
import com.alipay.api.request.AlipaySystemOauthTokenRequest; import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.response.AlipayFundAccountQueryResponse; import com.alipay.api.response.AlipayFundAccountQueryResponse;
import com.alipay.api.response.AlipayFundTransUniTransferResponse; import com.alipay.api.response.AlipayFundTransUniTransferResponse;
import com.alipay.easysdk.base.oauth.models.AlipaySystemOauthTokenResponse;
import com.alipay.easysdk.factory.Factory; import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config; import com.alipay.easysdk.kernel.Config;
import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse; import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse;
import com.mcwl.common.core.domain.AjaxResult; import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.domain.entity.SysUser; import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.common.core.redis.RedisCache; import com.mcwl.common.core.redis.RedisCache;
import com.mcwl.common.exception.BusinessException;
import com.mcwl.common.exception.ServiceException; import com.mcwl.common.exception.ServiceException;
import com.mcwl.common.utils.SecurityUtils; import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.common.utils.ShareCodeUtils; import com.mcwl.common.utils.ShareCodeUtils;
@ -255,50 +253,42 @@ public class AliPayServiceImpl implements AliPayService {
// 收款方信息 // 收款方信息
Participant payeeInfo = new Participant(); Participant payeeInfo = new Participant();
payeeInfo.setIdentity(sysUserPayAccount.getOpenId());
// 沙箱环境
payeeInfo.setIdentity("2088722057445020");
payeeInfo.setIdentityType("ALIPAY_USER_ID"); payeeInfo.setIdentityType("ALIPAY_USER_ID");
// 线上环境
// payeeInfo.setIdentity(sysUserPayAccount.getOpenId());
// payeeInfo.setIdentityType("ALIPAY_OPEN_ID");
model.setPayeeInfo(payeeInfo); model.setPayeeInfo(payeeInfo);
request.setBizModel(model); request.setBizModel(model);
AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
// 证书用certificateExecute(request)密钥用execute(request)
AlipayFundTransUniTransferResponse response = alipayClient.execute(request);
System.out.println(response.getBody()); System.out.println(response.getBody());
if (response.isSuccess()) {
// 记录日志和修改用户钱包
this.addLogAndUpdateUserWallet(sysUser, amount);
return AjaxResult.success("转账成功");
}
if (response.getSubCode().equals("PAYER_BALANCE_NOT_ENOUGH")) { if (response.getSubCode().equals("PAYER_BALANCE_NOT_ENOUGH")) {
// 账户余额不足,发送邮件通知 // 账户余额不足,发送邮件通知
ArrayList<String> tos = CollUtil.newArrayList("2119157836@qq.com"); ArrayList<String> tos = CollUtil.newArrayList("2119157836@qq.com");
String content = String.format("账户余额不足:用户%s提现%s", sysUser.getUserName(), amount); String content = String.format("账户余额不足:用户%s提现%s", sysUser.getUserName(), amount);
MailUtil.send(tos, "上海辰风互娱", content, false); MailUtil.send(tos, "上海辰风互娱", content, false);
return AjaxResult.error("系统繁忙,请稍后重试"); throw new ServiceException("系统繁忙,请稍后重试");
} }
throw new ServiceException("转账失败:" + response.getSubMsg());
if (response.isSuccess()) {
System.out.println("调用成功");
BigDecimal wallet = new BigDecimal(sysUser.getWallet().toString());
BigDecimal amountBigDecimal = new BigDecimal(amount);
sysUser.setWallet(wallet.subtract(amountBigDecimal).doubleValue());
sysUserService.updateUser(sysUser);
// 添加记录
SysUserPayAccountLog sysUserPayAccountLog = new SysUserPayAccountLog();
sysUserPayAccountLog.setUserId(userId);
sysUserPayAccountLog.setAmount(Double.valueOf(amount));
sysUserPayAccountLog.setAccount("支付宝");
sysUserPayAccountLogService.save(sysUserPayAccountLog);
// response.getBody()
return AjaxResult.success("转账成功");
} else {
System.out.println("调用失败");
// sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
System.out.println(diagnosisUrl);
return AjaxResult.error("转账失败:" + response.getMsg());
}
} }
@Override @Override
public String balance(Long userId) throws AlipayApiException { public String balance() throws AlipayApiException {
// 初始化SDK // 初始化SDK
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig()); AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
@ -306,17 +296,8 @@ public class AliPayServiceImpl implements AliPayService {
AlipayFundAccountQueryRequest request = new AlipayFundAccountQueryRequest(); AlipayFundAccountQueryRequest request = new AlipayFundAccountQueryRequest();
AlipayFundAccountQueryModel model = new AlipayFundAccountQueryModel(); AlipayFundAccountQueryModel model = new AlipayFundAccountQueryModel();
SysUserPayAccount sysUserPayAccount = sysUserPayAccountService // 应用userId
.lambdaQuery() model.setAlipayUserId("2088721057420516");
.eq(SysUserPayAccount::getUserId, userId)
.eq(SysUserPayAccount::getType, 0)
.one();
if (Objects.isNull(sysUserPayAccount)) {
return "fail";
}
// 设置支付宝openId
model.setAlipayOpenId("2021005114616085");
// 设置查询的账号类型 // 设置查询的账号类型
model.setAccountType("ACCTRANS_ACCOUNT"); model.setAccountType("ACCTRANS_ACCOUNT");
@ -377,6 +358,21 @@ public class AliPayServiceImpl implements AliPayService {
} }
private void addLogAndUpdateUserWallet(SysUser sysUser, String amount) {
BigDecimal wallet = new BigDecimal(sysUser.getWallet().toString());
BigDecimal amountBigDecimal = new BigDecimal(amount);
sysUser.setWallet(wallet.subtract(amountBigDecimal).doubleValue());
sysUserService.updateUser(sysUser);
// 添加记录
SysUserPayAccountLog sysUserPayAccountLog = new SysUserPayAccountLog();
sysUserPayAccountLog.setUserId(sysUser.getUserId());
sysUserPayAccountLog.setAmount(Double.valueOf(amount));
sysUserPayAccountLog.setAccount("支付宝");
sysUserPayAccountLogService.save(sysUserPayAccountLog);
}
private AlipayConfig getAlipayConfig() { private AlipayConfig getAlipayConfig() {
String privateKey = aliConfig.getPrivateKey(); String privateKey = aliConfig.getPrivateKey();
String alipayPublicKey = aliConfig.getPublicKey(); String alipayPublicKey = aliConfig.getPublicKey();