ASP.NET MVC 支付宝sdk 查询订单状态 填坑攻略
1.alipay.trade.query(统一收单线下交易查询)
前情提要: 请把扫码支付分解为两步理解
扫码成功 : 客户的支付宝软件会发送支付宝(注这里不再经过我们开发的服务器)第一次请求创建订单,
支付成功 :客户的支付宝软件会发送到支付宝(注这里不再经过我们开发的服务器)请求改变之前创建订单的 状态 和 部分值
这个接口有个大坑
如下图
客户扫码前是得不到 trade_no的 , 客户未扫码就调用
alipay.trade.query 得到的结果会是 交易不存在. 如下
{"alipay_trade_query_response":{"code":"40004","msg":"Business Failed","sub_code":"ACQ.TRADE_NOT_EXIST","sub_msg":"交易不存在","buyer_pay_amount":"0.00","invoice_amount":"0.00","out_trade_no":"20150320010101031","point_amount":"0.00","receipt_amount":"0.00"
},
"sign":"MdKcd3mz6cpl+Z/u0ypmWQoeiFfJg1Z0DdXsUlsxumVzwxkkhBKgC/x6wIyUle1gm6Z6Pe+lpzzGzfenw4+tuv3xCi0MK53wt6lEiCKOKYPjpQRjcjEYuSTh+ZvUDvd+zRCZzkXMhsccM96WA+mA5LvyVAxJh92cRCaJhKuxYFklsY5wF1k93+Nhco9YQeEO5QMRwtg3Nw618m8c6zKacmM8YuRtmpGdZMlF9dwfOnnNu4v+DSwk4xwwLlL+LU+6wY63rX3GaIZhVCIIFz15MhxUaTgqNv1GDkg5z2oScFMuMIYWiPVQnlh7Ag69OdRv5lsCg8qkh42UKOWR1CeFzw=="
}
客户扫码但是未支付的情况下调用
alipay.trade.query 会返回 "msg" :"Success" 但是值得注意的是receipt_amount 即 实际收到的钱 为 0 ,
trade_status 为 等待买家支付
如下:
{"alipay_trade_query_response":{"code":"10000",
"msg":"Success",
"buyer_logon_id":"gai***@sandbox.com",
"buyer_pay_amount":"0.00",
"buyer_user_id":"2088102176080898",
"buyer_user_type":"PRIVATE",
"invoice_amount":"0.00",
"out_trade_no":"20150320010101033",
"point_amount":"0.00",
"receipt_amount":"0.00", //实际收到的金额
"total_amount":"88.88",
"trade_no":"2018051221001004890200422558",
"trade_status":"WAIT_BUYER_PAY"},
"sign":"JS19aBJTktrJ3LGhccVh26XgN56/MTEbL+9wM/R5MiyOEZW+v9l/TtDv9X/FN8IMVJom0XQN/ZKKVHHjwG0LUbUuB85iRPpoewHUTCihLeMt6Wg7aFYF+amtrbPPS3RtCt6MXNzroTmxvQyzZToQG0Pe2dI2ZnpfAGFL8HPb4I/9UBN9tCls81HahKTSnaL1XcP7Vnwoz9RrRgIB3yu92kpRADYiw/6SzM1qJiQbDJMvTjPezZ5H0jMzOrmQNKN+8yHW1bqnGhx07cnEd4ZY8MrOSLTc88pvegBn3FPg3U7HcvmoLtK80VTM95S8JpdoqOoz07P4KYgPmWwGG854qw=="}
如果当前只是到了获取都二维码 --->等待用户扫码 的这一步
我们只有 out_trade_no 所以我传参时只传了一个 out_trtade_no 代码如下:
//验证当前订单的状态[NoPermissionRequiredAttribute]public ActionResult GetOrderStatus(string out_trade_no, string trade_no=""){const string URL = "https://openapi.alipaydev.com/gateway.do"; //沙箱环境与正式环境不同 这里要用沙箱的 支付宝地址// APPID即创建应用后生成const string APPID = "2016091500513966";//开发者应用私钥,由开发者自己生成 开发者私钥到底是什么玩意 原来开发者私钥就是商户应用私钥const string APP_PRIVATE_KEY = "MIIEowIBAAKCAQEArVWg55eFMf7rFLVpFAxGgMQfxGWd7swqxNkOu1Y/0Wt14HZik4+U0kycQuYtOFBbwael8vlr/Q+BaqtpwwI+g+yJVma+uLYkmVaWHqswh1XocX3gOfLWxFp1DwPcNesFpbZ9wndxrZL9+wWMtbiB4TV3jBAcFbAzOgLvH4+IveS88H6jjTTpHeogxJpZ0EU37Nucpsae2yiJJyACmgZDlY3qEABkFpiaD2Kc+EvGDPXyEKSufv8f+GxUTKgE25c0NhP9hSJPND1+reygiJy4sFIEuZ5960LRd/1kJgUIuW+JgA50AXI/SXEzHqBJO0ZvT9hZjSIbOtvGjbQp+d9azwIDAQABAoIBAHQjJn9l13nLKqmibzhejTKjtgE6cNpac+GW6bb9sB7aGI3/5EaocneBm0V7whq0RPZ5JMiq8/8Hz5ewKFnf/BEagF6i0vEiIV2YVVdRLl/PYMICLCXHnrzLOxmHZZm+0fbZUmPk8gbxsTjq2/+6E1PZJjNza83gVEJvStbjriRErp5LwMYCO3Qz3KDaPHFUaP5IRR6b+qJeLbrArFNv3zKV9b3TRe1loSIqrUfgSfW7Qh8rEjTub0BxjFqkOeVUrCPlrNz4NqTjOmPBf1tJ+xLFXsYlom4mGoaXKx9UIQgirLkh++HM+fHHrsICg3CA1tKBjf6OYXqLsvsXCd7T0okCgYEA4Yrrhzgmp9OWt1HS5HkAAlErYQoal6JrmfWd5cZOMwgp5YqmfXoV/QgwC0mbXun01JshgnOsmKy2GiOeUlsCRLhGJCm0piI/o9pSwiUyhe65AFLltyQJXmAVWsCeXjyEDDXSheZ1dL6akjVcs4dKSA+E3+lYs+m3mHBy7cXD8esCgYEAxL3bFNAe3iYqnt0/Ncv1SM7cxYJTZMjtEOiVp3sMvcgQCPPzl5CONkIuNKT5F4o8BCMQU0AzzDHxyxAuaspT4EcXQvCm5UIi5BioYnq0IEVVxuRa+AT6bHLxdyd0wsAzEhbrncUGe2ncQ1SKLuKy7UygCA3DBn++v0aqPrGX3a0CgYBPKtAZmqAW8LJKjrIT+FUEezFa0o0bBKv4Urql2MHCL+9k3xIpoRzuwFz82U1sN3r01a8hdzDyNk2FR1NfXQqizHvyXaFHX2YvQYcjFqNxV6YgcvinHEMdmWRlgo8UTPGcx5ep4IcB/5WKFKkBa0+rk6b0YZf9LuB+5Zmx1GU/GQKBgQCufahp7DAEXRtd7OJcBznTykx6DB2EfMPtRCs+8F6bj23RUvQPz9ChhM7QOCUIYLzb+nFHNOD70KwfqolQg4QinUqfPyr2mFKztL7bIPLS0EvEa9HWuSuVtdg9Esx20do5yARO2GjoWjpVqQwpizygRF6G5hW7lN8LbFQf6IjFvQKBgBdlb1h1rfJcPjkFGyIgr7B36eCrKdlRvNVsnMiqXi+3z5kbYXyePEiIfRYolg7UZI2tAAuHFZmxWwSFccREwKvs1rXSqWs0LqvaR7UizGxDq6AUdtz60jfsnkq6RAqwlA2m5ZW0Kf0QivElWxV1pM71ddU7evUNZTOgwL6qX1oG";//参数返回格式,只支持jsonconst string FORMAT = "json";//请求和签名使用的字符编码格式,支持GBK和UTF-8const string CHARSET = "UTF-8";//支付宝公钥,由支付宝生成 到蚂蚁金服复制const string ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApdBe/PUjBBEwYM4/H9clg0yrD1f8KoFusXqgiL4OegnizB2M4lGq7kCkXgwTIxJcOnaLTq2PsE/f0DFNq9GW3xxuLeioh0pjUqG4KV7bFhNy2Wipeja6A+IX1wbhH1AcHYfoGBVjfqEPvqvNWJPCE2ClAZLkNv2pwbC1cKXG48jKX9iVcCmJBl/qgMAcYfgdm37zjcdcgsd/EfHGT8HtiYb08UR+olsxG6Pi7nfc+yLaqGNJyhu6L6lgnQBUxD+fjrFFwPrF6fE0MMm7dljWRO8HiZTTjt8ia4rs8Be05dkd3IDRCoWTcNAd9+tTxV62gcw6rMM92zXMWlzWePk4NQIDAQAB";DefaultAopClient client = new DefaultAopClient(URL, APPID, APP_PRIVATE_KEY, FORMAT, "1.0", "RSA2", ALIPAY_PUBLIC_KEY, CHARSET, false);AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();StringBuilder content = new StringBuilder();//支付宝订单号和 商户订单号可以 任填其一 也可以两个都填, 填两个的情况优先用 trade_no content.Append("{");content.AppendFormat("\"out_trade_no\":\"{0}\",", out_trade_no.Trim());/* content.AppendFormat("\"trade_no\":\"{0}\"", trade_no.Trim());*/ //这一步是不可能得到trade_no的content.Append("}");request.BizContent = content.ToString();AlipayTradeQueryResponse response = client.Execute(request);return Json(response.Body);}
如上代码 我注释了 trade_no 这导致了 返回的结果一直是参数错误
我到处找错误 ,最后发现相当重要:
trade_no 即便是空你也得写上 不能省略
我们再来看一下 取消注释的结果:
这就成功了.
ASP.NET MVC 支付宝sdk 查询订单状态 填坑攻略相关推荐
- android 快捷支付sdk,Android 集成支付宝SDK实现快捷支付--填坑
刚给app集成了支付宝的android客户端快捷支付SDK,集成很简单,但是由于是涉及钱的问题,大家都会持谨慎态度,所以有很多小坑,粗心的话集成之路会很坎坷,对于集成步骤,我不想写了,没有必要,就看官 ...
- 史上最完美的Android沉浸式状态导航栏攻略
前言 最近我在小破站开发一款新App,叫高能链.我是一个完美主义者,所以不管对架构还是UI,我都是比较抠细节的,在状态栏和导航栏沉浸式这一块,我还是踩了挺多坑,费了挺多精力的.这次我将我踩坑,适配各机 ...
- 关于支付宝提现收费,这些误区和攻略你应该知道
关于支付宝提现收费,这些误区和攻略你应该知道(转) 文/杨舒芳 支付宝今天宣布,10月12日起,提现累计超过2万的部分,要收取0.1%的服务费. 这是继今年3月份微信支付宣布提现收费后,支付宝方面的首 ...
- 支付宝sdk 支付订单查询失败
最近遇到了一些问题,厂商给我们反馈了一个问题,就是支付宝支付成功之后,旋转屏幕,订单查询失败.后来我怀疑是支付宝的问题,想都不用想是支付宝的问题. 但是自己根本你无法复现,因为我发现支付宝支付完成之后 ...
- ASP.NET MVC 支付宝当面付(沙箱环境)-即扫二维码支付1(填坑)
1,环境 我用的是 vs2017 创建一个 mvc项目 新建一个文件夹将 SDK 文件放进去 sdk地址 :https://support.open.alipay.com/docs/doc.h ...
- java编程根据订单编号查询订单状态_Java微信订单查询
Java 通过统一下单 API 进行订单支付后,除等待微信通过 notify_url 进行回调通知外,还可以主动查询订单状态 更多精彩 前置条件 可参考 Java 微信扫码支付 如果实现微信支付 官网 ...
- ASP.NET MVC保持表单数据状态的方法:input辅助器+模型绑定
ASP.NET使用ViewState保持网页的状态,服务器端控件也默认使用该对象保持状态.该技术的主要弊端是服务器需要发送大量的状态数据给客户端.ASP.NET MVC没有采用服务器端控件技术,也就不 ...
- 2021支付宝集五福最新最全攻略:万能福沾沾福敬业福
五福背后的 Web 3D 引擎 Oasis Engine 正式开源 五福还是一如既往,独乐乐不如众乐乐 分享一波攻略顺便晒晒我的会不会被打 骚套路 1. 敬业福套路 可以5个小朋友建个小群,分享套卡互 ...
- java接入顺丰快递api(有可运行demo)(包括下单、路由查询、路由推送、查询订单状态、取消订单)
故事发生的背景: 公司快递业务这一块之前接入的是快递100,由于快递100的推送的实时性没有达到公司的要求,而且公司全都用的顺丰快递,所以直接接入了顺丰快递的api.demo文章最后下载(新增了jso ...
最新文章
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(四)
- python查看函数参数快捷键_Python基础知识—快捷键
- java getrealpath_JavaEE路径陷阱之getRealPath
- leetcode - Interleaving String
- 【报告分享】bilibili 2020品牌营销手册.pdf(附下载链接)
- Python提示错误 module 'request' has no attribute 'urlretrieve'
- power bi 创建空表_使用Power BI创建足球热图
- SVN 冲突文件详解
- 标准Android按钮具有不同的颜色
- 《Android 3D 游戏案例开发大全》——6.6节游戏界面相关类
- 1000+常用Python库
- 看得见的数据结构Android版之二分搜索树篇
- 计算机表格怎么用函数计算,WPS2012表格如何用公式与函数进行计算
- 【JZOJ】给水(water)
- 向量化回测系列1——单只股票的回测
- Python编写无界面版打字练习程序
- Element UI 官网
- Verilog:【4】脉冲发生器(pulse_gen.sv)
- java IO流(复习,上课笔记)
- hive数据备份方案