开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段):创建支付订单流程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/703/detail/12434
创建支付订单流程
第二块支付业务的实现,在这个业务当中要做两件事情,就是在用户支付之前首先创建一个支付订单,这个支付订单最终是要保存到 trade-pay 这张表中,表里有支付编号、订单编号、支付金额和是否已支付1否2是 四个字段。
这是在这个业务中主要要做的事情。
第一步在服务端接收到用户的支付请求后,首先判断当前支付订单关联的支付状态,判断订单是否已支付,如果支付了就可以直接给用户返回,如果没有支付要创建支付订单的对象,这个对象中设置它的状态为待支付,然后把它保存到数据库里边去。
这就是创建支付订单的基本流程,接下来就通过代码去实现这个流程。
首先先把接口放出来,准备工作先做好,创建一个接口叫 ipayservece,这里提供一个方法叫
Public createPayment,此时还需要传输一个参数,要保证 tradepay 表中订单编号和支付金额可以传递过来,支付编号可以后台自行生成,可以使用tradepay 数据模型进行传递,这里面就包含了订单编号和支付金额这两个属性,这是支付订单的接口的定义。
回到服务层,在 servicempl 包里边创建一个 servicempl 对这个接口进行实现,在此做一些配置,把准备工作做好。
代码如下:
@Component
@Service(interfaceClass=IPayServiceclass)
public class PayServiceImpl implements IPayservice{
doverride
public void createPayment(TradePay tradePay){
顺便把路口也创建出来,叫 paymentapplication,再加入注解。
代码如下:
@SpringBootApplication
QEnableDubboConfiguration
public class PayServiceApplication{
再提供一个方法:
代码如下:
public static void main(string[] args) {
SpringApplication.run(PayServiceApplication.class,args);
按照刚才的流程图分析,首先第一步是判断订单的支付状态,第二步是创建支付订单, 但支付订单已经传递过来了,直接用就行了,然后设置订单的状态为未支付,第三步是保存支付订单。
代码如下:
@Component
@Service(interfaceClass=IPayserviceclass
public class PayServiceImpl implements IPayService{
@Override
public void createPayment(TradePaytradePay){
//1.判断订单支付状态
//2.设置订单的状态
为
未支付
//3.保存支付订单
}
这就是基本的一个流程,准备工作已经做好。