Commit 6055e6c1 authored by libin's avatar libin

提现

parent 88c275cb
...@@ -11,7 +11,7 @@ import java.util.Set; ...@@ -11,7 +11,7 @@ import java.util.Set;
*/ */
public class BaseException extends RuntimeException { public class BaseException extends RuntimeException {
private int status = 200; private int status = 200;
private String subCode;
public int getStatus() { public int getStatus() {
return status; return status;
} }
...@@ -20,6 +20,14 @@ public class BaseException extends RuntimeException { ...@@ -20,6 +20,14 @@ public class BaseException extends RuntimeException {
this.status = status; this.status = status;
} }
public String getSubCode() {
return subCode;
}
public void setSubCode(String subCode) {
this.subCode = subCode;
}
public BaseException() { public BaseException() {
} }
...@@ -28,6 +36,11 @@ public class BaseException extends RuntimeException { ...@@ -28,6 +36,11 @@ public class BaseException extends RuntimeException {
this.status = status; this.status = status;
} }
public BaseException(String message,String subCode){
super(message);
this.subCode = subCode;
}
public BaseException(String message) { public BaseException(String message) {
super(message); super(message);
} }
......
package com.github.wxiaoqi.security.admin.dto; package com.github.wxiaoqi.security.admin.dto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -12,6 +14,8 @@ import java.math.BigDecimal; ...@@ -12,6 +14,8 @@ import java.math.BigDecimal;
* @data 2019/7/17 20:40 * @data 2019/7/17 20:40
*/ */
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
public class WalletCathListDTO { public class WalletCathListDTO {
private Long id; private Long id;
...@@ -41,9 +45,12 @@ public class WalletCathListDTO { ...@@ -41,9 +45,12 @@ public class WalletCathListDTO {
@ApiModelProperty(value = "审核日期") @ApiModelProperty(value = "审核日期")
private Long finishTime; private Long finishTime;
@ApiModelProperty("单号") @ApiModelProperty("第三方单号")
private String cono; private String cono;
@ApiModelProperty("提现单号")
private String orderNo;
@ApiModelProperty(value = "用户账号") @ApiModelProperty(value = "用户账号")
private String accountNumber; private String accountNumber;
} }
...@@ -52,8 +52,11 @@ public class WalletDetailListDTO { ...@@ -52,8 +52,11 @@ public class WalletDetailListDTO {
private String activityName; private String activityName;
@ApiModelProperty(value = "单号") @ApiModelProperty(value = "第三方单号")
private Integer cono; private Integer cono;
@ApiModelProperty(value = "提现单号")
private String withDrawOrderNo;
@ApiModelProperty(value = "操作时间", hidden = true ) @ApiModelProperty(value = "操作时间", hidden = true )
private Long crtTime; private Long crtTime;
......
...@@ -47,11 +47,9 @@ public class MyWalletCath implements Serializable { ...@@ -47,11 +47,9 @@ public class MyWalletCath implements Serializable {
@ApiModelProperty(value = "用户账号") @ApiModelProperty(value = "用户账号")
private String accountNumber; private String accountNumber;
/**
* 第三方订单号:如微信,支付宝,银行卡等
*/
@Column(name = "cono") @Column(name = "cono")
@ApiModelProperty(value = "第三方订单号:如微信,支付宝,银行卡等") @ApiModelProperty(value = "提现单号")
private String cono; private String cono;
...@@ -122,5 +120,7 @@ public class MyWalletCath implements Serializable { ...@@ -122,5 +120,7 @@ public class MyWalletCath implements Serializable {
@ApiModelProperty(value = "操作者ID") @ApiModelProperty(value = "操作者ID")
private String updUser; private String updUser;
@Column(name = "order_no")
@ApiModelProperty(value = "第三方订单号:如微信,支付宝,银行卡等")
private String orderNo;
} }
...@@ -81,7 +81,7 @@ public class MyWalletDetail implements Serializable { ...@@ -81,7 +81,7 @@ public class MyWalletDetail implements Serializable {
@Column(name = "activity_name") @Column(name = "activity_name")
private String activityName; private String activityName;
/** /**
* 单号 * 单号
*/ */
@Column(name = "cono") @Column(name = "cono")
...@@ -109,4 +109,8 @@ public class MyWalletDetail implements Serializable { ...@@ -109,4 +109,8 @@ public class MyWalletDetail implements Serializable {
@ApiModelProperty(value = "操作时间", hidden = true ) @ApiModelProperty(value = "操作时间", hidden = true )
private Long crtTime; private Long crtTime;
@ApiModelProperty(value = "提现")
@Column(name = "with_draw_order_no")
private String withDrawOrderNo;
} }
package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/10 17:52
*/
@Data
@Builder(toBuilder = true)
@AllArgsConstructor
@NoArgsConstructor
public class PayAccountVo {
@ApiModelProperty(value = "微信用户名 | 支付宝帐号")
private String accountDesc;
@ApiModelProperty("微信用户名 | 支付宝账号")
private String account;
@ApiModelProperty(value = "帐户类型 0:微信 1:支付宝 2:银行卡")
private Integer accountType;
}
package com.github.wxiaoqi.security.admin.vo; package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -12,6 +14,8 @@ import java.math.BigDecimal; ...@@ -12,6 +14,8 @@ import java.math.BigDecimal;
* @data 2019/7/17 20:22 * @data 2019/7/17 20:22
*/ */
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
public class WalletCathAdminVo { public class WalletCathAdminVo {
private Long id; private Long id;
...@@ -37,10 +41,13 @@ public class WalletCathAdminVo { ...@@ -37,10 +41,13 @@ public class WalletCathAdminVo {
@ApiModelProperty(value = "审核日期") @ApiModelProperty(value = "审核日期")
private Long finishTime; private Long finishTime;
@ApiModelProperty("单号") @ApiModelProperty("提现单号")
private String cono; private String withDrawOrderNo;
@ApiModelProperty(value = "用户账号") @ApiModelProperty(value = "用户账号")
private String accountNumber; private String accountNumber;
@ApiModelProperty(value = "用户账号描述")
private String accountNumberDesc;
} }
...@@ -3,6 +3,8 @@ package com.github.wxiaoqi.security.admin.vo; ...@@ -3,6 +3,8 @@ package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
/** /**
* @author libin * @author libin
* @version 1.0 * @version 1.0
...@@ -30,9 +32,24 @@ public class WalletCathDetailVo { ...@@ -30,9 +32,24 @@ public class WalletCathDetailVo {
@ApiModelProperty(value = "审核日期") @ApiModelProperty(value = "审核日期")
private Long finishTime; private Long finishTime;
@ApiModelProperty(value = "帐号") @ApiModelProperty(value = "帐号:支付宝帐号|微信名")
private String accountNumber; private String accountNumber;
@ApiModelProperty("审核失败原因") @ApiModelProperty("审核失败原因")
private String reason; private String reason;
@ApiModelProperty(value = "提现类别,第三方提现类别(0-微信,1-支付宝,2-银行卡)")
private Integer cathType;
@ApiModelProperty(value = "提现单号")
private String orderNo;
@ApiModelProperty(value = "手续费")
private BigDecimal commission;
@ApiModelProperty(value = "提现金额")
private BigDecimal amount;
@ApiModelProperty(value = "到账金额")
private BigDecimal realAmount;
} }
...@@ -46,6 +46,9 @@ public class WalletDetailAdminVo { ...@@ -46,6 +46,9 @@ public class WalletDetailAdminVo {
@ApiModelProperty(value = "单号") @ApiModelProperty(value = "单号")
private Integer cono; private Integer cono;
@ApiModelProperty(value = "提现单号")
private String withDrawOrderNo;
@ApiModelProperty(value = "操作时间", hidden = true ) @ApiModelProperty(value = "操作时间", hidden = true )
private Long crtTime; private Long crtTime;
......
...@@ -184,7 +184,9 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A ...@@ -184,7 +184,9 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
BigDecimal amount = new BigDecimal("0.00"); BigDecimal amount = new BigDecimal("0.00");
Integer userId = 0; Integer userId = 0;
Integer orderType = 0; Integer orderType = 0;
String orderNo = "";
if (list.size() > 0) { if (list.size() > 0) {
orderNo = list.get(0).getOrderNo();
for (AppUserSellingWater sellingWater : list) { for (AppUserSellingWater sellingWater : list) {
Integer id = sellingWater.getId(); Integer id = sellingWater.getId();
orderType = sellingWater.getOrderType(); orderType = sellingWater.getOrderType();
...@@ -204,6 +206,7 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A ...@@ -204,6 +206,7 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
detail.setUserId(userId); detail.setUserId(userId);
detail.setAmount(amount); detail.setAmount(amount);
detail.setCono(orderId); detail.setCono(orderId);
detail.setWithDrawOrderNo(orderNo);
detail.setSource(1); detail.setSource(1);
myWaterBiz.updMyWater(detail); myWaterBiz.updMyWater(detail);
if (orderType == 1 || orderType == 2) { if (orderType == 1 || orderType == 2) {
...@@ -229,7 +232,9 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A ...@@ -229,7 +232,9 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
BigDecimal unbooked = new BigDecimal("0.00"); BigDecimal unbooked = new BigDecimal("0.00");
Integer userId = 0; Integer userId = 0;
Integer orderType = 0; Integer orderType = 0;
String orderNo = "";
if (list.size() > 0) { if (list.size() > 0) {
orderNo = list.get(0).getOrderNo();
for (AppUserSellingWater sellingWater : list) { for (AppUserSellingWater sellingWater : list) {
Integer id = sellingWater.getId(); Integer id = sellingWater.getId();
orderType = sellingWater.getOrderType(); orderType = sellingWater.getOrderType();
...@@ -251,6 +256,7 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A ...@@ -251,6 +256,7 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
detail.setUserId(userId); detail.setUserId(userId);
detail.setAmount(amount); detail.setAmount(amount);
detail.setCono(orderId); detail.setCono(orderId);
detail.setWithDrawOrderNo(orderNo);
detail.setSource(1); detail.setSource(1);
myWaterBiz.updMyWater(detail); myWaterBiz.updMyWater(detail);
} }
...@@ -370,7 +376,7 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A ...@@ -370,7 +376,7 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
sellingWalletVo.setUsername(username); sellingWalletVo.setUsername(username);
if (userIdAndAppUserDetailMap != null) { if (userIdAndAppUserDetailMap != null) {
AppUserDetail appUserDetail = userIdAndAppUserDetailMap.get(sellingWalletVo.getSourceId()); AppUserDetail appUserDetail = userIdAndAppUserDetailMap.get(sellingWalletVo.getSourceId());
sellingWalletVo.setNickName(appUserDetail == null ? "" : appUserDetail.getNickname()); sellingWalletVo.setNickName(appUserDetail == null ? "" : appUserDetail.getRealname());
sellingWalletVo.setHeadUrl(appUserDetail == null ? "" : appUserDetail.getHeadimgurl()); sellingWalletVo.setHeadUrl(appUserDetail == null ? "" : appUserDetail.getHeadimgurl());
} }
//取消单 //取消单
......
...@@ -88,23 +88,31 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> { ...@@ -88,23 +88,31 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> {
public PageDataVO<WalletCathAdminVo> listWalletCathWithPage(WalletCathFindDTO walletCathFindDTO) { public PageDataVO<WalletCathAdminVo> listWalletCathWithPage(WalletCathFindDTO walletCathFindDTO) {
PageDataVO<WalletCathAdminVo> walletCathAdminVoPage = new PageDataVO<>(); PageDataVO<WalletCathAdminVo> walletCathAdminVoPage = new PageDataVO<>();
PageDataVO<WalletCathListDTO> walletCathListDTOPage = PageDataVO.pageInfo(walletCathFindDTO.getPage(), PageDataVO<WalletCathListDTO> walletCathListDTOPage = PageDataVO.pageInfo(walletCathFindDTO.getPage(),
walletCathFindDTO.getLimit(), walletCathFindDTO.getLimit(),
() -> mapper.selectByUserNameOrPhoneOrWithDrawSate(walletCathFindDTO.getUsername(), walletCathFindDTO.getPhone(), walletCathFindDTO.getState())); () -> mapper.selectByUserNameOrPhoneOrWithDrawSate(walletCathFindDTO.getUsername(), walletCathFindDTO.getPhone(), walletCathFindDTO.getState()));
List<WalletCathListDTO> walletCathListDTOList = walletCathListDTOPage.getData(); List<WalletCathListDTO> walletCathListDTOList = walletCathListDTOPage.getData();
if (CollectionUtils.isEmpty(walletCathListDTOList)){ if (CollectionUtils.isEmpty(walletCathListDTOList)) {
return walletCathAdminVoPage; return walletCathAdminVoPage;
} }
List<WalletCathAdminVo> walletCathAdminVos = new ArrayList<>(); List<WalletCathAdminVo> walletCathAdminVos = new ArrayList<>();
WalletCathAdminVo walletCathAdminVo ; WalletCathAdminVo walletCathAdminVo;
for (WalletCathListDTO walletCathListDTO : walletCathListDTOList) { for (WalletCathListDTO walletCathListDTO : walletCathListDTOList) {
walletCathAdminVo = new WalletCathAdminVo(); walletCathAdminVo = new WalletCathAdminVo();
BeanUtils.copyProperties(walletCathListDTO,walletCathAdminVo); BeanUtils.copyProperties(walletCathListDTO, walletCathAdminVo);
walletCathAdminVo.setUsername(StringUtils.isEmpty(walletCathListDTO.getRealname())?walletCathListDTO.getNickname():walletCathListDTO.getRealname()); walletCathAdminVo.setUsername(StringUtils.isEmpty(walletCathListDTO.getRealname()) ? walletCathListDTO.getNickname() : walletCathListDTO.getRealname());
walletCathAdminVo.setPhone(walletCathListDTO.getUsername()); walletCathAdminVo.setPhone(walletCathListDTO.getUsername());
//微信
if (walletCathListDTO.getCathType()==0){
walletCathAdminVo.setAccountNumberDesc(String.format("%s%s%s","提现到微信(",walletCathListDTO.getAccountNumber(),")"));
}
//支付宝
if (walletCathListDTO.getCathType()==1){
walletCathAdminVo.setAccountNumberDesc(String.format("%s%s%s","提现到支付宝(",walletCathListDTO.getAccountNumber(),")"));
}
walletCathAdminVos.add(walletCathAdminVo); walletCathAdminVos.add(walletCathAdminVo);
} }
walletCathAdminVos.sort(Comparator.comparing(WalletCathAdminVo::getCrtTime).reversed()); walletCathAdminVos.sort(Comparator.comparing(WalletCathAdminVo::getCrtTime).reversed());
...@@ -123,14 +131,14 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> { ...@@ -123,14 +131,14 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> {
return userIdAndPersonalConsumptionMap; return userIdAndPersonalConsumptionMap;
} }
public WalletCathSumDto sumCathAmount(Integer userId,Integer type){ public WalletCathSumDto sumCathAmount(Integer userId, Integer type) {
return mapper.sumCathAmount(userId,type); return mapper.sumCathAmount(userId, type);
} }
public void deleteByUserIds(Collection<Integer> userIds) { public void deleteByUserIds(Collection<Integer> userIds) {
Example example = new Example(MyWalletCath.class); Example example = new Example(MyWalletCath.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
criteria.andIn("userId",userIds); criteria.andIn("userId", userIds);
mapper.deleteByExample(example); mapper.deleteByExample(example);
} }
} }
...@@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.admin.biz.AppUserAlipayBiz; ...@@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.admin.biz.AppUserAlipayBiz;
import com.github.wxiaoqi.security.admin.biz.MyWalletBiz; import com.github.wxiaoqi.security.admin.biz.MyWalletBiz;
import com.github.wxiaoqi.security.admin.vo.AppletWalletVo; import com.github.wxiaoqi.security.admin.vo.AppletWalletVo;
import com.github.wxiaoqi.security.admin.vo.ApplyCathVo; import com.github.wxiaoqi.security.admin.vo.ApplyCathVo;
import com.github.wxiaoqi.security.admin.vo.PayAccountVo;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil; import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo; import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
...@@ -14,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -14,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* @author libin * @author libin
...@@ -125,4 +127,15 @@ public class MyWalletController { ...@@ -125,4 +127,15 @@ public class MyWalletController {
} }
} }
@ApiOperation("获取支付账号(微信|支付宝|银行卡)")
@GetMapping("/pay_account_list")
public ObjectRestResponse listPayAccount(HttpServletRequest request){
try {
Integer userId = Integer.parseInt(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId());
List<PayAccountVo> payAccountVos = myWalletBiz.listPayAccountByUserId(userId);
return ObjectRestResponse.succ(payAccountVos);
}catch (Exception ex){
throw new BaseException(ex);
}
}
} }
...@@ -37,11 +37,10 @@ public class WalletCathAdminController { ...@@ -37,11 +37,10 @@ public class WalletCathAdminController {
@ApiOperation("提现审核") @ApiOperation("提现审核")
public ObjectRestResponse verifyCath( public ObjectRestResponse verifyCath(
@RequestParam(value = "cathId",defaultValue = "0") Integer cathId, @RequestParam(value = "cathId",defaultValue = "0") Integer cathId,
@RequestParam(value = "cono",defaultValue = "") String cono,
@RequestParam(value = "reason",defaultValue = "") String reason, @RequestParam(value = "reason",defaultValue = "") String reason,
@RequestParam(value = "status",defaultValue = "1") Integer status){ @RequestParam(value = "status",defaultValue = "1") Integer status){
try { try {
return myWalletBiz.verifyCath(cathId,cono,reason,status); return myWalletBiz.verifyCath(cathId,reason,status);
}catch (Exception e) { }catch (Exception e) {
throw new BaseException(e); throw new BaseException(e);
} }
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
wc.crt_time AS `crtTime`, wc.crt_time AS `crtTime`,
wc.finish_time AS `finishTime`, wc.finish_time AS `finishTime`,
wc.cono, wc.cono,
wc.order_no AS `orderNo`,
wc.account_number AS `accountNumber` wc.account_number AS `accountNumber`
FROM FROM
(SELECT * FROM `my_wallet_cath` <if test="state != null"> (SELECT * FROM `my_wallet_cath` <if test="state != null">
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
wd.source, wd.source,
wd.amount, wd.amount,
wd.cono, wd.cono,
wd.with_draw_order_no AS `withDrawOrderNo`,
wd.itype, wd.itype,
wd.activity_id AS `activityId`, wd.activity_id AS `activityId`,
wd.activity_name AS `activityName`, wd.activity_name AS `activityName`,
......
...@@ -5,10 +5,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; ...@@ -5,10 +5,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.universal.dto.SmsTemplateDTO; import com.xxfc.platform.universal.dto.SmsTemplateDTO;
import com.xxfc.platform.universal.entity.Dictionary; import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.entity.IdInformation; import com.xxfc.platform.universal.entity.IdInformation;
import com.xxfc.platform.universal.vo.OrderPayVo; import com.xxfc.platform.universal.vo.*;
import com.xxfc.platform.universal.vo.OrderRefundVo;
import com.xxfc.platform.universal.vo.TrafficViolations;
import com.xxfc.platform.universal.vo.ViolationVO;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -83,4 +80,7 @@ public interface ThirdFeign { ...@@ -83,4 +80,7 @@ public interface ThirdFeign {
public ObjectRestResponse<List<ViolationVO>> getRentViolation(@RequestParam(value = "rentViolationDTO") Map<String, Object> rentViolationDTO); public ObjectRestResponse<List<ViolationVO>> getRentViolation(@RequestParam(value = "rentViolationDTO") Map<String, Object> rentViolationDTO);
/*************************************支付***************************************/
@PostMapping("/pay/app/unauth/transfer_account")
String transferAccount(@RequestBody FundPayVo fundPayVo) throws Exception;
} }
package com.xxfc.platform.universal.vo; package com.xxfc.platform.universal.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
@Data @Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class FundPayVo { public class FundPayVo {
//转账单号 //转账单号
...@@ -19,4 +25,12 @@ public class FundPayVo { ...@@ -19,4 +25,12 @@ public class FundPayVo {
//转账备注 //转账备注
private String remark; private String remark;
//转账类型
private Integer type;
private String creatIp;
private String checkName;
} }
...@@ -55,7 +55,7 @@ public class WXSuppToUserPay { ...@@ -55,7 +55,7 @@ public class WXSuppToUserPay {
private String key; private String key;
public static void main(String[] args) throws Exception, IOException { public static void main(String[] args) throws Exception, IOException {
Map<String, String> map = WXSuppToUserPay.WeiXinTiXian("oRhMfwKwjNq2Ce-TxlqfoAqsYfww", "NO_CHECK", 500+"", "活动提现", "192.168.8.109"); Map<String, String> map = WXSuppToUserPay.WeiXinTiXian("oRhMfwKwjNq2Ce-TxlqfoAqsYfww",OrderUtil.GetOrderNumber("TX"),"NO_CHECK", 500+"", "活动提现", "192.168.8.109");
if("SUCCESS".equals(map.get("return_code"))) if("SUCCESS".equals(map.get("return_code")))
{ {
if(!StringUtils.isBlank(map.get("payment_no")) && !StringUtils.isBlank(map.get("partner_trade_no")) ) if(!StringUtils.isBlank(map.get("payment_no")) && !StringUtils.isBlank(map.get("partner_trade_no")) )
...@@ -108,14 +108,14 @@ public class WXSuppToUserPay { ...@@ -108,14 +108,14 @@ public class WXSuppToUserPay {
// System.out.println(map.get("payment_time")); // System.out.println(map.get("payment_time"));
} }
public static Map<String,String> WeiXinTiXian(String openid,String check_name,String amount,String desc,String spbill_create_ip) throws Exception public static Map<String,String> WeiXinTiXian(String openid,String partnerTradeNo,String check_name,String amount,String desc,String spbill_create_ip) throws Exception
{ {
WXSuppToUserPay prePay = new WXSuppToUserPay(); WXSuppToUserPay prePay = new WXSuppToUserPay();
prePay.setMch_appid(SystemConfig.WINXIN_AppID); prePay.setMch_appid(SystemConfig.WINXIN_AppID);
prePay.setMchid(SystemConfig.WINXIN_PARTNER); prePay.setMchid(SystemConfig.WINXIN_PARTNER);
prePay.setNonce_str( OrderUtil.CreateNoncestr()); prePay.setNonce_str( OrderUtil.CreateNoncestr());
prePay.setPartner_trade_no(OrderUtil.GetOrderNumber("TX")); prePay.setPartner_trade_no(partnerTradeNo);
prePay.setOpenid(openid); prePay.setOpenid(openid);
prePay.setCheck_name(check_name); prePay.setCheck_name(check_name);
prePay.setAmount(amount); prePay.setAmount(amount);
...@@ -130,7 +130,7 @@ public class WXSuppToUserPay { ...@@ -130,7 +130,7 @@ public class WXSuppToUserPay {
CloseableHttpClient httpclient = null; CloseableHttpClient httpclient = null;
try { try {
KeyStore keyStore = KeyStore.getInstance("PKCS12"); KeyStore keyStore = KeyStore.getInstance("PKCS12");
//FileInputStream instream = new FileInputStream(new File("E:/apiclient_cert.p12")); // FileInputStream instream = new FileInputStream(new File("E:/cert/apiclient_cert.p12"));
String path = Thread.currentThread().getContextClassLoader().getResource("/").getPath(); String path = Thread.currentThread().getContextClassLoader().getResource("/").getPath();
FileInputStream instream = new FileInputStream(new File(path+"/apiclient_cert.p12")); FileInputStream instream = new FileInputStream(new File(path+"/apiclient_cert.p12"));
try { try {
......
package com.xxfc.platform.universal.weixin.constant;
import lombok.AllArgsConstructor;
/**
* @author libin
* @version 1.0
* @description 以下错误 如需继续打款,要使用原来的订单号
* @data 2019/10/12 9:40
*/
@AllArgsConstructor
public enum AliNeedPayErrorEnum {
SYSTEM_ERROR("系统繁忙","系统繁忙");
private String desc;
private String reason;
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
}
package com.xxfc.platform.universal.weixin.constant;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/12 10:22
*/
public enum PaySubErrorCodeEnum {
/**
* 普通付款异常
*/
PAY_ERROR("EPAY_10000"),
/**
* 需要继续付款错误码
*/
PAY_NEED_ERROR("EPAY_10001");
private String subCode;
PaySubErrorCodeEnum(String subCode) {
this.subCode = subCode;
}
public String getSubCode() {
return subCode;
}
public void setSubCode(String subCode) {
this.subCode = subCode;
}
}
package com.xxfc.platform.universal.weixin.constant;
import lombok.AllArgsConstructor;
/**
* @author libin
* @version 1.0
* @description 以下错误 如需继续打款,要使用原来的商户订单号
* @data 2019/10/12 9:11
*/
@AllArgsConstructor
public enum WxNeedPayErrorEnum {
NOTENOUGH("余额不足","付款帐号余额不足或资金未到账"),
SYSTEMERROR("系统繁忙,请稍后再试","微信内部接口调用发生错误"),
NAME_MISMATCH("姓名校验出错","付款人身份校验不通过"),
SIGN_ERROR("签名错误","校验签名错误"),
FREQ_LIMIT("超过频率限制,请稍后再试","接口请求频率超时接口限制"),
MONEY_LIMIT("已经达到今日付款总额上限/已达到付款给此用户额度上限","请关注接口的付款限额条件"),
CA_ERROR("商户API证书校验出错","请求没带商户API证书或者带上了错误的商户API证书"),
V2_ACCOUNT_SIMPLE_BAN("无法给非实名用户付款","用户微信支付账户未知名,无法付款"),
PARAM_IS_NOT_UTF8("请求参数中包含非utf8编码字符","接口规范要求所有请求参数都必须为utf8编码"),
SENDNUM_LIMIT("该用户今日付款次数超过限制","该用户今日付款次数超过限制");
private String desc;
private String reason;
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
}
package com.xxfc.platform.universal.weixin.constant;
/**
* @author libin
* @version 1.0
* @description 微信请求响应字段
* @data 2019/10/12 9:57
*/
public class WxResponseProperties {
public static final String ERROR_CODE = "err_code";
public static final String RETURN_CODE = "return_code";
public static final String RESULT_CODE = "result_code";
public static final String ERR_CODE_DES = "err_code_des";
public static final String PARTNER_TRADE_NO = "partner_trade_no";
}
...@@ -5,6 +5,7 @@ import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken; ...@@ -5,6 +5,7 @@ import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.universal.biz.OrderPayBiz; import com.xxfc.platform.universal.biz.OrderPayBiz;
import com.xxfc.platform.universal.entity.OrderPay; import com.xxfc.platform.universal.entity.OrderPay;
import com.xxfc.platform.universal.vo.FundPayVo;
import com.xxfc.platform.universal.vo.OrderPayVo; import com.xxfc.platform.universal.vo.OrderPayVo;
import com.xxfc.platform.universal.weixin.util.XMLUtil; import com.xxfc.platform.universal.weixin.util.XMLUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -102,4 +103,11 @@ public class OrderPayController extends BaseController<OrderPayBiz,OrderPay> { ...@@ -102,4 +103,11 @@ public class OrderPayController extends BaseController<OrderPayBiz,OrderPay> {
} }
@PostMapping("/app/unauth/transfer_account")
@IgnoreUserToken
public String transferAccount(@RequestBody FundPayVo fundPayVo) throws Exception {
return baseBiz.fundTrans(fundPayVo);
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment