微信扫码支付,关闭订单和撤销订单?
 /**
        * 
        * 关闭订单
        * @param WxPayData inputObj 提交给关闭订单API的参数
        * @param int timeOut 接口超时时间
        * @throws WxPayException
        * @return 成功时返回,其他抛异常
        */
        public static WxPayData CloseOrder(WxPayData inputObj, int timeOut = 6)
        {
            string url = "https://api.mch.weixin.qq.com/pay/closeorder";
            //检测必填参数
            if(!inputObj.IsSet("out_trade_no"))
            {
                throw new WxPayException("关闭订单接口中,out_trade_no必填!");
            }

            inputObj.SetValue("appid",WxPayConfig.APPID);//公众账号ID
            inputObj.SetValue("mch_id",WxPayConfig.MCHID);//商户号
            inputObj.SetValue("nonce_str",GenerateNonceStr());//随机字符串     
            inputObj.SetValue("sign",inputObj.MakeSign());//签名
            string xml = inputObj.ToXml();

            var start = DateTime.Now;//请求开始时间

            string response = HttpService.Post(xml, url, false, timeOut);

            var end = DateTime.Now;
            int timeCost = (int)((end - start).TotalMilliseconds);

            WxPayData result = new WxPayData();
            result.FromXml(response);

            ReportCostTime(url, timeCost, result);//测速上报

            return result;
        }
            /**
        * 
        * 撤销订单API接口
        * @param WxPayData inputObj 提交给撤销订单API接口的参数,out_trade_no和transaction_id必填一个
        * @param int timeOut 接口超时时间
        * @throws WxPayException
        * @return 成功时返回API调用结果,其他抛异常
        */
        public static WxPayData Reverse(WxPayData inputObj, int timeOut = 6)
        {
            string url = "https://api.mch.weixin.qq.com/secapi/pay/reverse";
            //检测必填参数
            if (!inputObj.IsSet("out_trade_no") && !inputObj.IsSet("transaction_id"))
            {
                throw new WxPayException("撤销订单API接口中,参数out_trade_no和transaction_id必须填写一个!");
            }

            inputObj.SetValue("appid", WxPayConfig.APPID);//公众账号ID
            inputObj.SetValue("mch_id", WxPayConfig.MCHID);//商户号
            inputObj.SetValue("nonce_str", GenerateNonceStr());//随机字符串
            inputObj.SetValue("sign", inputObj.MakeSign());//签名
            string xml = inputObj.ToXml();

            var start = DateTime.Now;//请求开始时间

            Log.Debug("WxPayApi", "Reverse request : " + xml);

            string response = HttpService.Post(xml, url, true, timeOut);

            Log.Debug("WxPayApi", "Reverse response : " + response);

            var end = DateTime.Now;
            int timeCost = (int)((end - start).TotalMilliseconds);

            WxPayData result = new WxPayData();
            result.FromXml(response);

            ReportCostTime(url, timeCost, result);//测速上报

            return result;
        }

注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。
我生成订单想立即关闭,怎么做

2个回答

可以直接关闭订单,自解决

jiaoye6789
jiaoye6789 回复syzlzty: 调用关闭订单,撤销订单是只有刷卡支付可以撤销。扫码的话只有关闭,可以直接关闭,没有什么时间限制
3 年多之前 回复
syzlzty
syzlzty 请问您是怎么解决的?是调用撤单接口还是直接调用关闭订单?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
html如何做微信扫码支付?

公司有一个网站项目,需要做微信扫码支付,求大神指点一下怎么做,微信端都配置好了,C#的demo也下好了,由于后端不会,现在无从下手!

微信扫码支付,相同订单改变金额,商户订单号重复

商城计时收费, 根据用户输入信息生成订单,用户扫码支付。 假如用户当即没有支付,过几分钟后,再次输入信息,订单还是原本的订单号,只是金额发生改变, 然后请求统一下单接口,返回商城订单号重复。 我需要关闭当前订单重新生成订单吗? 已支付过或已调用关单、撤销(请见后文的API列表)的订单号不能重新发起支付。 我还看到,微信API里面有个接口。撤销订单API接口:string url = "https://api.mch.weixin.qq.com/secapi/pay/reverse";

java 微信扫码支付一直返回签名错误

最近在做微信的扫码支付,发现如果把本地映射到外网去,微信是可以正常返回支付码,但是上传到网站后,无论怎么测试,都一直返回签名错误 两者的区别在于,我把本地映射的时候,流程都是在自己的环境下执行,但上到a网站后,需要通过b网站来调用微信支付,a网站需要把支付码返回到b网站,可b网站得到的返回结果一直是签名错误,跪求大神解答

php微信扫码支付模式二支付成功异步回调未执行

使用的微信扫码支付模式二做的支付,支付之后使用支付查询接口查到已经支付成功,异步回调地址配置了,而且是外网能够访问(我用公司网络访问可以,但是使用手机的数据流量访问该地址就不行),不清楚到底是什么原因,急用,跪求!

支付宝扫码支付和微信扫码支付,最终生成一个二维码?

假如已经能单独实现支付宝扫码支付和微信扫码支付,怎么通过程序才能将两者二维码合一? 在网上搜索,微信小程序可以将二者合一,但是需要先有两张二维码图片。对于写程序来说这是不方便的。所以想问问各位有没有办法在代码层面实现以上功能。

手机app原生 做支付宝、微信 扫码支付怎样实现?

医院用的app,需要支付宝和微信扫码支付 根据费用手机生成二维码,患者扫码进行支付。 用哪个场景的接口? 医院需要提供什么资料? 详细点,原来没有接触过

微信扫码支付多进程调用问题

1、现在有一个DLL扩展包,里面封装完整的微信扫码支付流程。通过扫码枪传入付款码,然后返回是否支付成功。单机测试没有问题。 2、我做一个服务软件,当扫码枪连接服务软件的时候通过新开一个进程来调用dll,完成微信支付。 现在的疑问是,一个服务器软件会有200个扫码枪同时连接,极端情况下会同时发起支付请求,这样会不会出现订单状态混乱的情况?同时发起支付的时候,不考虑其他因素(不考虑用户输入密码,账户余额不足等情况)。200个支付请求同时完成,有多大的延迟?

微信扫码支付(模式2)怎么判断用户是否付款

我现在二维码已经出来了,也可以正常付款,现在主要需要用户付款之后,想要个状态,然后修改自己数据库里的订单状态。 请问怎么获取支付状态呢?我用的是模式二 ![图片说明](https://img-ask.csdn.net/upload/201608/05/1470369317_510246.png) 这是demo官方,请问应该使用哪个作为扫码2的通知呢? 不需要通知商家,只要让我知道用户支付成功了就好,该怎么做呢? 没相信百度,来这里找大神,谢谢你们

微信扫码支付成功后未执行异步回调方法

微信扫码支付成功后未执行异步回调方法,电脑页面也没有任何变化,是什么原因呢

微信扫码零钱支付 微信中为什么查不到交易记录

做微信扫码支付开发 支付成功后 我用的零钱支付的 结果发现微信中没有交易记录?求解。。

微信扫码支付后回调URL,但是接受参数为null

各位大神,请问谁遇到过这种问题,微信扫码支付后回调URL,但是接受参数为空类似这样:http://127.0.0.1/pay/updateOrder?id=1变成了这样 http://127.0.0.1/pay/updateOrder?null,请问如何可以拿到id的值啊?

thinkphp3.2整合微信扫码支付模式二不执行回调

最近在用tp框架开发了一个微信支付的功能,现在的情况是能进行支付,但是并不执行我写的那个回调地址,哪位可以帮忙看看是怎么回事? ![图片说明](https://img-ask.csdn.net/upload/201711/28/1511836067_524470.jpg) 上面这个是我执行的回调路径 ![图片说明](https://img-ask.csdn.net/upload/201711/28/1511836096_24415.jpg) 这个是我在微信设置的回调 ![图片说明](https://img-ask.csdn.net/upload/201711/28/1511836173_65339.jpg) 这个是我做的pay.php,当访问到这里的时候会跳转到Wxpay控制器的notify方法。如果单独访问这个php,是可以在控制台输出success的,但是如果微信扫码完成以后,就不会输出,是不是就是没执行,还有 ![图片说明](https://img-ask.csdn.net/upload/201711/28/1511836315_957120.jpg) 这个是微信回调notify函数,我将返回的数据存入到了test.txt中,发现什么都没有,如果单独访问pay.php,test.txt中会有11,这更加说明了回调根本就没有执行,求解!

微信扫码支付模式二一直出现下图问题,求大神帮忙

![图片说明](https://img-ask.csdn.net/upload/201812/11/1544518911_647111.png) ![图片说明](https://img-ask.csdn.net/upload/201812/11/1544518983_408452.png)

微信扫码支付成功后的回调

微信支付成功的时候,我的程序想调用notify_url来通知,但是想在后面带一些参数验证,因为自己的程序也会验证,如果不带参数就会一直回调,最后报错,但是微信的notify_url又不允许带参数,大神们,怎么解决这个问题。

asp.net 微信扫码支付 回调处理的问题

我使用开发模式二,先调用统一下单接口生成订单,然后在回调地址里面处理更新订单状态以及商品库存的逻辑,最后通知微信支付完成。 下载了官方的demo,发现回调方法里面的代码是这样的。 ``` public override void ProcessNotify() { WxPayData notifyData = GetNotifyData(); //检查openid和product_id是否返回 if (!notifyData.IsSet("openid") || !notifyData.IsSet("product_id")) { WxPayData res = new WxPayData(); res.SetValue("return_code", "FAIL"); res.SetValue("return_msg", "回调数据异常"); Log.Info(this.GetType().ToString(), "The data WeChat post is error : " + res.ToXml()); page.Response.Write(res.ToXml()); page.Response.End(); } //调统一下单接口,获得下单结果 string openid = notifyData.GetValue("openid").ToString(); string product_id = notifyData.GetValue("product_id").ToString(); WxPayData unifiedOrderResult = new WxPayData(); try { unifiedOrderResult = UnifiedOrder(openid, product_id); } catch (Exception ex)//若在调统一下单接口时抛异常,立即返回结果给微信支付后台 { WxPayData res = new WxPayData(); res.SetValue("return_code", "FAIL"); res.SetValue("return_msg", "统一下单失败"); Log.Error(this.GetType().ToString(), "UnifiedOrder failure : " + res.ToXml()); page.Response.Write(res.ToXml()); page.Response.End(); } //若下单失败,则立即返回结果给微信支付后台 if (!unifiedOrderResult.IsSet("appid") || !unifiedOrderResult.IsSet("mch_id") || !unifiedOrderResult.IsSet("prepay_id")) { WxPayData res = new WxPayData(); res.SetValue("return_code", "FAIL"); res.SetValue("return_msg", "统一下单失败"); Log.Error(this.GetType().ToString(), "UnifiedOrder failure : " + res.ToXml()); page.Response.Write(res.ToXml()); page.Response.End(); } //统一下单成功,则返回成功结果给微信支付后台 WxPayData data = new WxPayData(); data.SetValue("return_code", "SUCCESS"); data.SetValue("return_msg", "OK"); data.SetValue("appid", WxPayConfig.APPID); data.SetValue("mch_id", WxPayConfig.MCHID); data.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); data.SetValue("prepay_id", unifiedOrderResult.GetValue("prepay_id")); data.SetValue("result_code", "SUCCESS"); data.SetValue("err_code_des", "OK"); data.SetValue("sign", data.MakeSign()); Log.Info(this.GetType().ToString(), "UnifiedOrder success , send data to WeChat : " + data.ToXml()); page.Response.Write(data.ToXml()); page.Response.End(); } private WxPayData UnifiedOrder(string openId, string productId) { //统一下单 WxPayData req = new WxPayData(); req.SetValue("body", "test"); req.SetValue("attach", "test"); req.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); req.SetValue("total_fee", 1); req.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); req.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); req.SetValue("goods_tag", "test"); req.SetValue("trade_type", "NATIVE"); req.SetValue("openid", openId); req.SetValue("product_id", productId); WxPayData result = WxPayApi.UnifiedOrder(req); return result; } ``` 文档中第十步是这样写的 ** (10)微信支付系统通过发送异步消息通知商户后台系统支付结果。商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。** 为何没有看到对订单状态更新的逻辑代码呢?为什么又调用了一次统一下单API呢? 百思不得其解,求大神指导,谢谢!

ecshop 加微信扫码支付

ecshop加微信扫码支付,支付成功后怎么回调修改订单状态。现在是可以扫码并支付成功,但是扫完码后不跳转,订单状态也不更改,现在就想改订单状态应该怎么操作?

微信扫码支付成功后如何跳转?异步请求的查询订单接口要怎么写?

<script> var t1; var sum=0; $(document).ready(function () { t1=setInterval("ajaxstatus()", 3000); }); function ajaxstatus() { sum++; if(sum>600){ window.clearInterval(t1);return false;} if(sum>180){ m=sum % 10; if(m!=0){return false;} } if ($("#out_trade_no").val() != 0) { $.ajax({ url: "http://www.wojuhome.cn/app/_core/Extend/Vendor/wxpay/example/orderquery2.php", type: "GET", dataType:"json", data: { out_trade_no:$("#out_trade_no").val() }, beforeSend: function () { }, success: function (data) { if (data=="SUCCESS") { window.location.href = "http://www.wojuhome.cn/app/_core/Extend/Vendor/wxpay/example/index.php"; //页面跳转 } }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("请求订单状态出错"); } }); } } </script>

JSAPI,微信扫码支付,移动端直接支付可以成功,PC端扫码提示:$key0$,哪位大神遇到过相同的情况?给个思路,谢谢。

使用jsapi,一个公众号下挂了两个商户号,这两个商户号的支付秘钥(key)设置为相同的。目前出现的问题是,有一个商户号所有支付功能正常,另一个商户号移动端支付正常,pc端扫码支付提示:$key0$,有想过是证书问题,有没有遇到过相同情况的或者有经验的给一些出现该问题的原因,我好逐个试验排查,谢谢。![图片说明](https://img-ask.csdn.net/upload/202003/28/1585408521_657781.png)![图片说明](https://img-ask.csdn.net/upload/202003/28/1585408544_254356.png)

Java如何获取微信扫码支付返回的数据

Java小白一个,微信后台已经调用了回调接口,但我不知道怎样获取它回调时给我的那些参数

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Python可以这样学(第四季:数据分析与科学计算可视化)

Python可以这样学(第四季:数据分析与科学计算可视化)

组成原理课程设计(实现机器数的真值还原等功能)

实现机器数的真值还原(定点小数)、定点小数的单符号位补码加减运算、定点小数的补码乘法运算和浮点数的加减运算。

javaWeb图书馆管理系统源码mysql版本

系统介绍 图书馆管理系统主要的目的是实现图书馆的信息化管理。图书馆的主要业务就是新书的借阅和归还,因此系统最核心的功能便是实现图书的借阅和归还。此外,还需要提供图书的信息查询、读者图书借阅情况的查询等

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

Java8零基础入门视频教程

Java8零基础入门视频教程

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

TTP229触摸代码以及触摸返回值处理

自己总结的ttp229触摸代码,触摸代码以及触摸按键处理

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Ubuntu18.04安装教程

Ubuntu18.04.1安装一、准备工作1.下载Ubuntu18.04.1 LTS2.制作U盘启动盘3.准备 Ubuntu18.04.1 的硬盘空间二、安装Ubuntu18.04.1三、安装后的一些工作1.安装输入法2.更换软件源四、双系统如何卸载Ubuntu18.04.1新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列...

快速排序---(面试碰到过好几次)

原理:    快速排序,说白了就是给基准数据找其正确索引位置的过程.    如下图所示,假设最开始的基准数据为数组第一个元素23,则首先用一个临时变量去存储基准数据,即tmp=23;然后分别从数组的两端扫描数组,设两个指示标志:low指向起始位置,high指向末尾.    首先从后半部分开始,如果扫描到的值大于基准数据就让high减1,如果发现有元素比该基准数据的值小(如上图中18&amp;lt...

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

HTML期末大作业

这是我自己做的HTML期末大作业,花了很多时间,稍加修改就可以作为自己的作业了,而且也可以作为学习参考

Python数据挖掘简易入门

Python数据挖掘简易入门

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

C++语言基础视频教程

C++语言基础视频教程

UnityLicence

UnityLicence

软件测试2小时入门

软件测试2小时入门

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

Python数据分析师-实战系列

系列课程主要包括Python数据分析必备工具包,数据分析案例实战,核心算法实战与企业级数据分析与建模解决方案实战,建议大家按照系列课程阶段顺序进行学习。所有数据集均为企业收集的真实数据集,整体风格以实战为导向,通俗讲解Python数据分析核心技巧与实战解决方案。

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

超详细MySQL安装及基本使用教程

一、下载MySQL 首先,去数据库的官网http://www.mysql.com下载MySQL。 点击进入后的首页如下:  然后点击downloads,community,选择MySQL Community Server。如下图:  滑到下面,找到Recommended Download,然后点击go to download page。如下图:  点击download进入下载页面选择No...

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

web网页制作期末大作业

分享思维,改变世界. web网页制作,期末大作业. 所用技术:html css javascript 分享所学所得

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

相关热词 c# cad插入影像 c#设计思想 c#正则表达式 转换 c#form复制 c#写web c# 柱形图 c# wcf 服务库 c#应用程序管理器 c#数组如何赋值给数组 c#序列化应用目的博客园
立即提问