微信支付 - 构建商户订单

// 微信支付成功 -> 支付中心 -> 吃货平台
//                       |-> 回调通知的url
String payReturnUrl = "http://api.z.xuexi.com/dev-api/orders/notifyMerchantOrderPaid";
/**
 * 接受商户订单信息,保存到自己的数据库
 */
@PostMapping("/createMerchantOrder")
public JSONResult createMerchantOrder(@RequestBody MerchantOrdersBO merchantOrdersBO, HttpServletRequest request, HttpServletResponse response) throws Exception {

	String merchantOrderId = merchantOrdersBO.getMerchantOrderId();             	// 订单id
	String merchantUserId = merchantOrdersBO.getMerchantUserId();     		// 用户id
	Integer amount = merchantOrdersBO.getAmount();    // 实际支付订单金额
	Integer payMethod = merchantOrdersBO.getPayMethod();          	// 支付方式
	String returnUrl = merchantOrdersBO.getReturnUrl();           	// 支付成功后的回调地址(学生自定义)

	if (StringUtils.isBlank(merchantOrderId)) {
		return JSONResult.errorMsg("参数[orderId]不能为空");
	}
	if (StringUtils.isBlank(merchantUserId)) {
		return JSONResult.errorMsg("参数[userId]不能为空");
	}
	if (amount == null || amount < 1) {
		return JSONResult.errorMsg("参数[realPayAmount]不能为空并且不能小于1");
	}
	if (payMethod == null) {
		return JSONResult.errorMsg("参数[payMethod]不能为空并且不能小于1");
	}
	if (payMethod != PayMethod.WEIXIN.type && payMethod != PayMethod.ALIPAY.type) {
		return JSONResult.errorMsg("参数[payMethod]目前只支持微信支付或支付宝支付");
	}
	if (StringUtils.isBlank(returnUrl)) {
		return JSONResult.errorMsg("参数[returnUrl]不能为空");
	}

	// 保存传来的商户订单信息
	boolean isSuccess = false;
	try {
		isSuccess = paymentOrderService.createPaymentOrder(merchantOrdersBO);
	} catch (Exception e) {
		e.printStackTrace();
		JSONResult.errorException(e.getMessage());
	}

	if (isSuccess) {
		return JSONResult.ok("商户订单创建成功!");
	} else {
		return JSONResult.errorMsg("商户订单创建失败,请重试...");
	}
}
public class MerchantOrdersBO {

    private String merchantOrderId;         // 商户订单号
    private String merchantUserId;          // 商户方的发起用户的用户主键id
    private Integer amount;                 // 实际支付总金额(包含商户所支付的订单费邮费总额)
    private Integer payMethod;              // 支付方式 1:微信   2:支付宝
    private String returnUrl;               // 支付成功后的回调地址(学生自定义)

    public String getMerchantOrderId() {
        return merchantOrderId;
    }

    public void setMerchantOrderId(String merchantOrderId) {
        this.merchantOrderId = merchantOrderId;
    }

    public String getMerchantUserId() {
        return merchantUserId;
    }

    public void setMerchantUserId(String merchantUserId) {
        this.merchantUserId = merchantUserId;
    }

    public Integer getAmount() {
        return amount;
    }

    public void setAmount(Integer amount) {
        this.amount = amount;
    }

    public Integer getPayMethod() {
        return payMethod;
    }

    public void setPayMethod(Integer payMethod) {
        this.payMethod = payMethod;
    }

    public String getReturnUrl() {
        return returnUrl;
    }

    public void setReturnUrl(String returnUrl) {
        this.returnUrl = returnUrl;
    }
}
@Transactional(propagation=Propagation.REQUIRED)
@Override
public boolean createPaymentOrder(MerchantOrdersBO merchantOrdersBO) {

	String id = sid.nextShort();

	Orders paymentOrder = new Orders();
	BeanUtils.copyProperties(merchantOrdersBO, paymentOrder);

	paymentOrder.setId(id);
	paymentOrder.setPayStatus(PaymentStatus.WAIT_PAY.type);
	paymentOrder.setComeFrom("吃货");
	paymentOrder.setIsDelete(YesOrNo.NO.type);
	paymentOrder.setCreatedTime(new Date());

	int result = ordersMapper.insert(paymentOrder);
	return result == 1 ? true : false;
}
// 1. 创建订单
OrderVO orderVO = orderService.createOrder(submitOrderBO);
public class MerchantOrdersVO {

    private String merchantOrderId;         // 商户订单号
    private String merchantUserId;          // 商户方的发起用户的用户主键id
    private Integer amount;                 // 实际支付总金额(包含商户所支付的订单费邮费总额)
    private Integer payMethod;              // 支付方式 1:微信   2:支付宝
    private String returnUrl;               // 支付成功后的回调地址(学生自定义)

    public String getMerchantOrderId() {
        return merchantOrderId;
    }

    public void setMerchantOrderId(String merchantOrderId) {
        this.merchantOrderId = merchantOrderId;
    }

    public String getMerchantUserId() {
        return merchantUserId;
    }

    public void setMerchantUserId(String merchantUserId) {
        this.merchantUserId = merchantUserId;
    }

    public Integer getAmount() {
        return amount;
    }

    public void setAmount(Integer amount) {
        this.amount = amount;
    }

    public Integer getPayMethod() {
        return payMethod;
    }

    public void setPayMethod(Integer payMethod) {
        this.payMethod = payMethod;
    }

    public String getReturnUrl() {
        return returnUrl;
    }

    public void setReturnUrl(String returnUrl) {
        this.returnUrl = returnUrl;
    }
}
public class OrderVO {

    private String orderId;
    private MerchantOrdersVO merchantOrdersVO;

    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public MerchantOrdersVO getMerchantOrdersVO() {
        return merchantOrdersVO;
    }

    public void setMerchantOrdersVO(MerchantOrdersVO merchantOrdersVO) {
        this.merchantOrdersVO = merchantOrdersVO;
    }
}
// 4. 构建商户订单,用于传给支付中心
MerchantOrdersVO merchantOrdersVO = new MerchantOrdersVO();
merchantOrdersVO.setMerchantOrderId(orderId);
merchantOrdersVO.setMerchantUserId(userId);
merchantOrdersVO.setAmount(realPayAmount + postAmount);
merchantOrdersVO.setPayMethod(payMethod);

// 5. 构建自定义订单vo
OrderVO orderVO = new OrderVO();
orderVO.setOrderId(orderId);
orderVO.setMerchantOrdersVO(merchantOrdersVO);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值