编写订单支付api中遇到的问题
首先我是按照已经有的已经有的支付api去编写订单支付api,但是由于两者是有区别的,所以类似去搬用难免会出问题,首先我是套用已经写好的model,然后写相应的serializer,实现序列化之后就开始着手编写视图,在视图层主要实现的功能就是在生成订单的同时实现在数据库当中添加订单支付信息,用于后续的订单支付信息回调。
在写好api后无法post生成订单,一开始是以为卡在构造序列器类那里,因为在构造订单号的时候使用的是一个引用信息,但是进了数据库发现那个信息是不存在的,而且自己尝试赋值了一个常量,是可以使用的,但是于此同时出现了一个问题就是我无法通过api框架提供的post方法去实现生成订单,只能通过填写订单然后刷新生成订单,而且订单还无法同步订单支付信息,然后才意识到问题是出在视图层,视图层中queryset是正常的,因为已经有的订单是能够被遍历的,由于订单支付信息是定义在perform_create()方法当中的,所以问题肯定是出在其中,通过排除法发现问题并不是方法的构造有错误,而是出在model中的一个字段,由于订单支付中有一个外键,但是此时我是默认使用其中的一个值,导致生成订单的同时无法给出符合条件的信息生成订单支付数据,所以那个perform_create()方法一直不能实现,自然也就无法响应了,所以服务器就一直给我报500的错误。
经此一役,发现出现问题的时候还是要仔细去排查,其实我的大部分时间都浪费在了重复的一些操作上,有些已经确认的错误我又重复地去核查,很影响办事效率,从现在问题已经解决的角度来说,我应该先通过无法post生成订单发现问题是出在perform_create()上,因为这个是post同时执行的操作,只有这个方法ok了才会生成订单,然后范围就小多了,因为在这个函数当中所执行的操作只有一个,就是将订单信息用于生成订单支付,而其中需要提交的参数只有几个而已,只要排查一下就可以发现是无法生成订单号,然后把这个问题解决以后仍然无法直接post,所以问题就是出在其余没有生成的参数上了,这时候就可以发现,有一个支付方式字段是没有值的,但是其实这是一个外键,本身就是需要选择的值,如果不给值的话肯定就错的更离谱了,所以依照我需要使用支付方式给一个默认值就可以了。
希望以后碰到问题不要再胡乱去查呀改呀之类的,静下心了,哪里出了问题就解决哪里,让自己的效率得到提高。
编写订单支付api中遇到的问题的更多相关文章
- 企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET
先看效果 1.本文演示的是微信[企业号]的H5页面微信支付 2.本项目基于开源微信框架WeiXinMPSDK开发:https://github.com/JeffreySu/WeiXinMPSDK 感谢 ...
- 支付宝支付-常用支付API详解(查询、退款、提现等)
所有的接口支持沙盒环境的测试 1.前言 前面几篇文件详细介绍了 支付宝提现.扫码支付.条码支付.Wap支付.App支付 支付宝支付-提现到个人支付宝 支付宝支付-扫码支付 支付宝支付-刷卡支付(条码支 ...
- 支付宝支付-常用支付API详解(查询、退款、提现等)-转
所有的接口支持沙盒环境的测试 1.前言 前面几篇文件详细介绍了 支付宝提现.扫码支付.条码支付.Wap支付.App支付 支付宝支付-提现到个人支付宝 支付宝支付-扫码支付 支付宝支付-刷卡支付(条码支 ...
- JAVAWEB进行PC支付宝支付、查询订单支付状态
官方文档:https://opendocs.alipay.com/open/270/105899 本地开发环境支付回调调试方法可以参考:https://www.cnblogs.com/pxblog/p ...
- Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化
9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...
- 在ASP.NET Web API中使用OData
http://www.alixixi.com/program/a/2015063094986.shtml 一.什么是ODataOData是一个开放的数据协议(Open Data Protocol)在A ...
- WEB API 中HTTP的get、post、put,delete 请求方式
一.WEB API 中HTTP 请求方式的四个主要方法 (GET, PUT, POST, DELETE), 按照下列方式映射为 CURD 操作: 1.POST 用于新建资源,服务端在指定的URI 上创 ...
- 【ASP.NET Web API教程】4.3 ASP.NET Web API中的异常处理
原文:[ASP.NET Web API教程]4.3 ASP.NET Web API中的异常处理 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内 ...
- ASP.NET Web API中使用OData
在ASP.NET Web API中使用OData 一.什么是ODataOData是一个开放的数据协议(Open Data Protocol)在ASP.NET Web API中,对于CRUD(creat ...
随机推荐
- 【winform】主窗体多线程给子窗体传值
1.主窗体多线程给子窗体传值 解决方案:主要使用委托,因为会出现跨线程错误 主窗体 public FormMain() { InitializeComponent(); //background th ...
- 微信小程序 自定义tabbar实例
在小程序的开发文档中,对tabbar是这样说明的: 如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 t ...
- 【Git】The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
背景,在服务器用www用户身份 执行拉取命令报错 sudo -u www git pull 原因分析: 在新生成密钥之后,在.ssh文件夹中少了known_hosts文件 解决办法: Are you ...
- ResponseBody和文件上传
SpringMVC默认使用MappingJacksonHttpMessageConverter对json数据进行转换 <dependency> <groupId>com.fas ...
- 阿里云盾AliYunDun服务IO超高
停止阿里云盾AliYunDun服务解决大量写磁盘问题-小内存ECS服务器 阿里云数据库在没备案,涉及大量IO操作时会自动启动阿里云盾这个服务,会导致服务器变得很卡,一直持续百分之99,一顿重启没有什么 ...
- Docker中安装mysql
1.docker 中下载 mysql docker pull mysql 2.启动 docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PA ...
- 阿里云使用Docker部署工单系统(redmine)
环境:阿里云服务器 Redmine安装部署 Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据 ...
- Saltstack限制某些shell命令执行
在cmdmod模块中cmd.run.cmd.run_all.cmd.run_stdout等都可以执行shell命令,要静止某些shell命令,可以修改_run()这个函数来彻底的静止调用这个命令. c ...
- linux中安装python3.7
linux中安装python3.7 1. 安装依赖包 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite- ...
- 为Ubuntu笔记本电脑创建WiFi热点共享上网
from: linux公社 http://www.linuxidc.com/Linux/2014-02/97139.htm 该文由土木坛子转译而来,说是转译,其实看截图就可以方便的设置,没有任何命 ...