编写订单支付api中遇到的问题

首先我是按照已经有的已经有的支付api去编写订单支付api,但是由于两者是有区别的,所以类似去搬用难免会出问题,首先我是套用已经写好的model,然后写相应的serializer,实现序列化之后就开始着手编写视图,在视图层主要实现的功能就是在生成订单的同时实现在数据库当中添加订单支付信息,用于后续的订单支付信息回调。

在写好api后无法post生成订单,一开始是以为卡在构造序列器类那里,因为在构造订单号的时候使用的是一个引用信息,但是进了数据库发现那个信息是不存在的,而且自己尝试赋值了一个常量,是可以使用的,但是于此同时出现了一个问题就是我无法通过api框架提供的post方法去实现生成订单,只能通过填写订单然后刷新生成订单,而且订单还无法同步订单支付信息,然后才意识到问题是出在视图层,视图层中queryset是正常的,因为已经有的订单是能够被遍历的,由于订单支付信息是定义在perform_create()方法当中的,所以问题肯定是出在其中,通过排除法发现问题并不是方法的构造有错误,而是出在model中的一个字段,由于订单支付中有一个外键,但是此时我是默认使用其中的一个值,导致生成订单的同时无法给出符合条件的信息生成订单支付数据,所以那个perform_create()方法一直不能实现,自然也就无法响应了,所以服务器就一直给我报500的错误。

经此一役,发现出现问题的时候还是要仔细去排查,其实我的大部分时间都浪费在了重复的一些操作上,有些已经确认的错误我又重复地去核查,很影响办事效率,从现在问题已经解决的角度来说,我应该先通过无法post生成订单发现问题是出在perform_create()上,因为这个是post同时执行的操作,只有这个方法ok了才会生成订单,然后范围就小多了,因为在这个函数当中所执行的操作只有一个,就是将订单信息用于生成订单支付,而其中需要提交的参数只有几个而已,只要排查一下就可以发现是无法生成订单号,然后把这个问题解决以后仍然无法直接post,所以问题就是出在其余没有生成的参数上了,这时候就可以发现,有一个支付方式字段是没有值的,但是其实这是一个外键,本身就是需要选择的值,如果不给值的话肯定就错的更离谱了,所以依照我需要使用支付方式给一个默认值就可以了。

希望以后碰到问题不要再胡乱去查呀改呀之类的,静下心了,哪里出了问题就解决哪里,让自己的效率得到提高。

原文地址:https://www.cnblogs.com/zzy0306/p/8387023.html