整合微信、支付宝支付

微信官网

一.电商平台

流程

电商平台=>客户选择好商品=>提交订单=>电商平台保存订单信息到数据库=>电商平台发送订单相关信息到支付平台=>
支付平台获取订单信息=>支付平台保存订单信息=>支付平台根据订单信息判断是微信还是支付宝支付=>如果是微信=>
支付平台发送请求微信,一键下单=>支付平台等待回应=>支付平台接受到支付链接=>
支付平台将支付链接发送到电商平台前端=>前端生成支付二维码

1.1 客户端提交订单信息

    /**
     * 客户端提交订单信息
     *
     * @return
     */
    @PostMapping("/sendRequestToZFZX")
    public AjaxResult sendRequestToZFZX(@Validated @RequestBody ClientOrder clientOrder) {
        clientOrder.setId(IdUtils.simpleUUID());
        //1.保存订单信息
        clientOrderService.addOrderInfo(clientOrder);
        //2.发送订单信息到支付中心
        MerchantOrdersVO merchantOrdersVO = new MerchantOrdersVO();
        merchantOrdersVO.setMerchantOrderId(clientOrder.getId());
        merchantOrdersVO.setMerchantUserId(100);
        merchantOrdersVO.setAmount(1);//1分钱
        merchantOrdersVO.setPayMethod(PayWay.WEIXIN.key);//微信支付
        merchantOrdersVO.setReturnUrl(payReturnUrl);

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.add("userName", "admin");
        headers.add("password", "admin123");

        HttpEntity<MerchantOrdersVO> entity =
                new HttpEntity<>(merchantOrdersVO, headers);

        ResponseEntity<AjaxResult> responseEntity =
                restTemplate.postForEntity(paymentUrl,
                        entity,
                        AjaxResult.class);
        AjaxResult ajaxResult = responseEntity.getBody();
        if (!ajaxResult.get("code").toString().equals("200")) {
            logger.error("发送错误:{}", ajaxResult.get("msg"));
            return AjaxResult.error("支付中心订单创建失败,请联系管理员!");
        }
        return AjaxResult.success();
    }

二.支付中心

三.其他

3.1 ClientOrderServiceImpl实现类

package com.ruoyi.pay.service.impl;

import com.ruoyi.common.core.domain.entity.ClientOrder;
import com.ruoyi.pay.mapper.ClientOrderMapper;
import com.ruoyi.pay.service.ClientOrderService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

/**
 * 微信支付相关业务实现
 */
@Service
public class ClientOrderServiceImpl implements ClientOrderService {

    @Resource
    private ClientOrderMapper clientOrderMapper;

    /**
     * 保存订单信息
     */
    @Override
    @Transactional
    public void addOrderInfo(ClientOrder clientOrder) {
        clientOrderMapper.addOrderInfo(clientOrder);
    }

    /**
     * 更新订单状态
     * @param OrderId 订单Id
     * @param type 状态
     */
    @Override
    public void updateOrderStatus(String OrderId, Integer type) {
        clientOrderMapper.updateOrderStatus(OrderId,type);
    }
}

3.2 ClientOrder 客户端订单信息

package com.ruoyi.common.core.domain.entity;

import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.utils.uuid.IdUtils;

/**
 * 客户端订单信息
 */
public class ClientOrder extends BaseEntity {

    /**
     * 订单ID
     */
    private String id;
    /**
     * 用户Id
     */
    private int userId;
    /**
     * 订单支付状态
     * 10未支付,20已支付,30支付失败 ,40已退款
     */
    private String status;
    /**
     * 订单状态
     * 10待付款,20已付款待发货,30已发货待收货,40交易成功,50交易关闭
     */
    private Integer type;
    /**
     * 支付方式,10wx,20zfb
     */
    private String way;
    /**
     * 订单总价格,单位:分
     */
    private Integer price;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }


    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public String getWay() {
        return way;
    }

    public void setWay(String way) {
        this.way = way;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }
}

3.3 MerchantOrdersVO 订单信息

package com.ruoyi.common.core.domain.vo;

public class MerchantOrdersVO {

    private String merchantOrderId;         // 商户订单号
    private int 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 int getMerchantUserId() {
        return merchantUserId;
    }

    public void setMerchantUserId(int 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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与海boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值