微信支付怎么退款为什么会退款

9月12日微信支付退款规则升级剖析及微信账单说明-移动支付网
9月12日微信支付退款规则升级剖析及微信账单说明
来源:移动支付网&&&&作者:&&&& 14:13
  一、微信支付退款规则升级剖析
  微信公告:
  近日,微信支付平台上挂出了公告,通知自9月12日期,退款规则将升级。
  涉及的升级有三点,其中有第二点:
  (2)退款发起时,若账户资金不足,无法退款的,系统将拒绝受理;
  这个是什么意思?对我们有什么影响?
  退款的受理模式
  从微信支付新版接口发布以来,微信支付的退款业务,一直使用的是受理模式。这个受理模式的含义为,退款请求是先受理,再进行实际退款,分为两步。也就是说当商户的当前交易流水不足以退款的时候,退款请求依然可以成功受理,然后在交易流水足够的时候才发生实际退款。
  这个设计的优点有:
  1、收银员可以直接使用退款接口,不需要关心业务流水和重试规则。
  2、退款接口可以快速返回退款承诺。
  但是随着业务发展,缺点也很明显:
  1、因为不知道什么时候会实际退款,对账单里何时出现这个退款请求很难判断,精细对账需要更多操作。
  2、退款后流水永远不够的退款单日益增加,但是重试必须无限期重试,微信支付侧的资源不断消耗。
  3、极限异常情况需要微信支付客服人工参与处理。
  所以9月12日这个公告也是预期之中的改变。从9月12日,流水不足不再重试,就相当于是非受理模式:一旦请求退款成功,立刻发生退款。
  这样的话优点有:
  1、立刻退款,对账清晰。
  2、剥离业务逻辑和接口功能,使退款接口能力更单纯。
  缺点则变成了:
  1、收银员直接使用退款接口会有新困难:遇到流水不足的错误收银员无法处理,即使后来流水充足了收银员也不知道。
  微信支付的新工具
  针对这个变化,微信支付也提供了一些新的工具来解决流水不足的问题。
  新资金流
  首先是新资金流,新资金流是目前正在逐步开放的一个功能,商户可以由原资金流升级到新资金流。详见
  新资金流里,可以自由设置结算时保留多少钱,用于其后的退款功能。减少退款时流水不足发生的可能性。
  旧资金流
  针对尚未收到新资金流升级通知的商户,退款接口也会增加一个新的参数,用于从可用余额里退款。可用余额即商户平台上需要充值的一个账户余额。详见
  之前商户平台上就已经可以操作进行可用余额退款:
  商户侧的应对
  面对这个变更,商户的开发可以这样做:
  关注文档变更,处理新错误码 新增的交易流水不足将会有新的错误码。
  自行开发受理模式,自动重试退款请求 也就是把收银员的退款请求先记录下来,在服务器端判断退款逻辑。
  培训收银员,遇到错误的时候的处理方法,例如通知主管进行充值退款
  其他注意事项
  此次退款接口变更,并不影响撤销订单接口。撤销订单的退款遇到流水不足依然是会自动重试。
  二、微信支付账单说明
  针对微信支付的对账单格式,这里进行一下详细的说明。
  对账单表头和交易订单的关系
  交易时间
  对应查询订单接口time_end
  公众账号ID
  商户号
  mch_id
  子商户号
  sub_mch_id
  设备号
  对应下单接口device_info
  微信订单号
  对应查询订单接口transaction_id
  商户订单号
  out_trade_no
  用户标识
  openid, 相对于appid的用户唯一标识
  交易类型
  对应下单接口trade_type
  交易类型见
  交易状态
  SUCCESS: 对应收入
  REFUND: 对应支出-退款
  REVOKED: 对应支出-撤销
  这里有几点注意:
  1、账单的交易状态,和订单的交易状态没有关系,发生过退款的订单,在这里依然有一条success
  2、交易状态不会变更
  3、只有发生过支付(进账)的订单,在撤销后才会发生支出并出现在对账单里。
  付款银行
  bank_type
  货币种类
  fee_type
  总金额
  total_fee
  企业红包金额
  coupon_fee
  微信退款单号
  对应查询退款接口refund_id
  商户退款单号
  对应退款/查询退款的out_refund_no
  退款金额
  对应单笔退款时的refund_fee
  企业红包退款金额
  对应coupon_refund_fee
  退款类型
  refund_channel
  退款状态
  PROCESSING: 已经从账面扣款
  SUCCESS: 已经从账面扣款,并且出对账单时这个退款已经到账
  商品名称
  商户数据包
  attach
  手续费
  精确到小数点后2位,四舍五入。末尾填充3个0。
  商户号对应的费率,同一个商户号一致。
  文件格式
  使用接口下载的时候,是utf8编码
  在商户平台下载的时候,根据选择的office版本不同,编码不同
  文件名格式
  接口下载的是字符串,无文件名
本文为作者授权发布,不代表移动支付网立场,转载请注明作者及来源,未按照规范转载者,移动支付网保留追究相应责任的权利。
月点击排行接口链接:https://api.mch./secapi/pay/refund
是否需要证书
请求需要双向证书。
公众账号ID
String(32)
微信分配的公众账号ID
String(32)
微信支付分配的商户号
device_info
String(32)
终端设备号
随机字符串
String(32)
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
随机字符串,不长于32位。推荐
String(32)
C380BEC2BFD727A4BF3AD6
签名,详见
微信订单号
transaction_id
String(28)
微信订单号
商户订单号
out_trade_no
String(32)
商户系统内部的订单号,
transaction_id、out_trade_no二选一,如果同时存在优先级:transaction_id&&out_trade_no
商户退款单号
out_refund_no
String(32)
商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔
订单总金额,单位为分,只能为整数,详见
refund_fee
退款总金额,订单总金额,单位为分,只能为整数,详见
refund_fee_type
货币类型,符合ISO&4217标准的三位字母代码,默认人民币:CNY,其他值列表详见
op_user_id
String(32)
操作员帐号,&默认为商户号
返回状态码
return_code
String(16)
SUCCESS/FAIL
return_msg
String(128)
返回信息,如非空,为错误原因
参数格式校验错误
以下字段在return_code为SUCCESS的时候有返回
result_code
String(16)
SUCCESS/FAIL
SUCCESS退款申请接收成功,结果通过退款查询接口查询
FAIL&提交业务失败
String(32)
SYSTEMERROR
列表详见第6节
错误代码描述
err_code_des
String(128)
结果信息描述
公众账号ID
String(32)
微信分配的公众账号ID
String(32)
微信支付分配的商户号
device_info
String(32)
微信支付分配的终端设备号,与下单一致
随机字符串
String(32)
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
随机字符串,不长于32位
String(32)
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
签名,详见
微信订单号
transaction_id
String(28)
微信订单号
商户订单号
out_trade_no
String(32)
商户系统内部的订单号
商户退款单号
out_refund_no
String(32)
商户退款单号
微信退款单号
String(28)
微信退款单号
refund_channel
String(16)
ORIGINAL&原路退款
BALANCE&退回到余额
refund_fee
退款总金额,单位为分,可以做部分退款
订单总金额
订单总金额,单位为分,只能为整数,详见
订单金额货币种类
订单金额货币类型,符合ISO&4217标准的三位字母代码,默认人民币:CNY,其他值列表详见
现金支付金额
现金支付金额,单位为分,只能为整数,详见
现金退款金额
cash_refund_fee
现金退款金额,单位为分,只能为整数,详见
代金券或立减优惠退款金额
coupon_refund_fee
代金券或立减优惠退款金额=订单金额-现金退款金额,注意:立减优惠金额不会退回
代金券或立减优惠使用数量
coupon_refund_count
代金券或立减优惠使用数量
代金券或立减优惠ID
coupon_refund_id
String(20)
代金券或立减优惠ID
后台代码:
/// &summary&
/// 退款申请接口
/// &/summary&
/// &returns&&/returns&
public JsonResult Refund(TRADE_Model trade)
string nonceStr = Senparc.Weixin.MP.TenPayLibV3.TenPayV3Util.GetNoncestr();
Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
//设置package订单参数
packageReqHandler.SetParameter("appid", AppId);
//公众账号ID
packageReqHandler.SetParameter("mch_id", MchId);
packageReqHandler.SetParameter("out_trade_no", trade.TRADE_NO);
//填入商家订单号
packageReqHandler.SetParameter("out_refund_no", "");
//填入退款订单号
packageReqHandler.SetParameter("total_fee", "");
//填入总金额
packageReqHandler.SetParameter("refund_fee", "");
//填入退款金额
packageReqHandler.SetParameter("op_user_id", MchId);
//操作员Id,默认就是商户号
packageReqHandler.SetParameter("nonce_str", nonceStr);
//随机字符串
string sign = packageReqHandler.CreateMd5Sign("key", Key);
packageReqHandler.SetParameter("sign", sign);
//退款需要post的数据
string data = packageReqHandler.ParseXML();
//退款接口地址
string url = "https://api.mch./secapi/pay/refund";
//本地或者服务器的证书位置(证书在微信支付申请成功发来的通知邮件中)
string cert = @"D:\apiclient_cert.p12";
//私钥(在安装证书时设置)
string password = "";
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
//调用证书
X509Certificate2 cer = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
#region 发起post请求
HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
webrequest.ClientCertificates.Add(cer);
webrequest.Method = "post";
byte[] postdatabyte = Encoding.UTF8.GetBytes(data);
webrequest.ContentLength = postdatabyte.L
stream = webrequest.GetRequestStream();
stream.Write(postdatabyte, 0, postdatabyte.Length);
stream.Close();
HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse();
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
string responseContent = streamReader.ReadToEnd();
#endregion
var res = System.Xml.Linq.XDocument.Parse(responseContent);
string return_code = res.Element("xml").Element("return_code").V
Hashtable hashtable = new Hashtable();
hashtable.Add("return_code", return_code);
return Json(hashtable);
& & & & & private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)& & & & & {& & & & & & & if (errors == SslPolicyErrors.None)& & & & & & & & & && & & & & & && & & & & }
阅读(...) 评论()一、下载证书并导入到系统
二、代码退款
public const string APPID = &wxf6dd794bcexxxx&;
public const string MCHID = &xxxx&;
public const string KEY = &xxxxx849ba56abbe56e05xxxxx&;
public const string APPSECRET = &---&;
//=======【证书路径设置】=====================================
/* 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要)
public const string SSLCERT_PATH = &/WxPayAPI/cert/apiclient_cert.p12&;
public const string SSLCERT_PASSWORD = &131xxxx&;
public ActionResult DoRefund()
string result = Refund.Run(&&,&trade_no&, &1&, &1&);
return Content(result);
* 申请退款完整业务流程逻辑
* @param transaction_id 微信订单号(优先使用)
* @param out_trade_no 商户订单号
* @param total_fee 订单总金额
* @param refund_fee 退款金额
* @return 退款结果(xml格式)
public static string Run(string transaction_id, string out_trade_no, string total_fee, string refund_fee)
(&Refund is processing...&);
WxPayData data = new WxPayData();
if (!string.IsNullOrEmpty(transaction_id))//微信订单号存在的条件下,则已微信订单号为准
data.SetValue(&transaction_id&, transaction_id);
else//微信订单号不存在,才根据商户订单号去退款
data.SetValue(&out_trade_no&, out_trade_no);
data.SetValue(&total_fee&, int.Parse(total_fee));//订单总金额
data.SetValue(&refund_fee&, int.Parse(refund_fee));//退款金额
data.SetValue(&out_refund_no&, out_trade_no);//随机生成商户退款单号
data.SetValue(&op_user_id&, WxPayConfig.MCHID);//操作员,默认为商户号
WxPayData result = WxPayApi.Refund(data);//提交退款申请给API,接收返回数据
(&Refund process complete, result : & + result.ToXml());
return result.ToPrintStr();
* 申请退款
* @param WxPayData inputObj 提交给申请退款API的参数
* @param int timeOut 超时时间
* @throws WxPayException
* @return 成功时返回接口调用结果,其他抛异常
public static WxPayData Refund(WxPayData inputObj, int timeOut = 6)
string url = &https://api.mch./secapi/pay/refund&;
//检测必填参数
if (!inputObj.IsSet(&out_trade_no&) && !inputObj.IsSet(&transaction_id&))
throw new WxPayException(&退款申请接口中,out_trade_no、transaction_id至少填一个!&);
else if (!inputObj.IsSet(&out_refund_no&))
throw new WxPayException(&退款申请接口中,缺少必填参数out_refund_no!&);
else if (!inputObj.IsSet(&total_fee&))
throw new WxPayException(&退款申请接口中,缺少必填参数total_fee!&);
else if (!inputObj.IsSet(&refund_fee&))
throw new WxPayException(&退款申请接口中,缺少必填参数refund_fee!&);
else if (!inputObj.IsSet(&op_user_id&))
throw new WxPayException(&退款申请接口中,缺少必填参数op_user_id!&);
inputObj.SetValue(&appid&, WxPayConfig.APPID);//公众账号ID
inputObj.SetValue(&mch_id&, WxPayConfig.MCHID);//商户号
inputObj.SetValue(&nonce_str&, Guid.NewGuid().ToString().Replace(&-&, &&));//随机字符串
inputObj.SetValue(&sign&, inputObj.MakeSign());//签名
string xml = inputObj.ToXml();
var start = DateTime.N
Log.Debug(&WxPayApi&, &Refund request : & + xml);
string response = HttpService.Post(xml, url, true, timeOut);//调用HTTP通信接口提交数据到API
Log.Debug(&WxPayApi&, &Refund response : & + response);
var end = DateTime.N
int timeCost = (int)((end - start).TotalMilliseconds);//获得接口耗时
//将xml格式的结果转换为对象以返回
WxPayData result = new WxPayData();
result.FromXml(response);
ReportCostTime(url, timeCost, result);//测速上报
本文已收录于以下专栏:
相关文章推荐
本文介绍微信api退款及退款查询。
相比支付宝的接口,微信的接口与实现都很简单其实,官方文档都有很详细的讲解。
官方文档地址:https://pay./wiki/doc/api/jsapi.php?chapte...
最近在做个微信公众号的项目,项目一期功能较为简单,跨境充值系统,齐核心为微信和运营商的接口,业务并不复杂,时间很紧,设计完成之后就要开发,
测试加开发时间才8天。下面总结下调用微信申请退款接口,即模...
经过两周的研究,终于又把微信支付也搞定了。作为一个技术人员就应该有总结思考的习惯。这里将自己做微信踩过的一些坑,以及自己的思考记录下来,希望能帮助各位和我一样做微信支付的小伙伴。...
1、微信支付开发文档
https://pay./wiki/doc/api/jsapi.php?chapter=7_1
http://download.csdn.n...
微信退款需要配置的数据有:
随机字符串 $nonce_str
商户订单号
$out_trade_no
商户退单号
$out_refund_no...
微信开发(3)微信支付一、
微信后台设置1.添加测试授权目录和测试白名单:在微信后台,设置测试授权目录,如/example/,测试白名单中添加你的微信...
首先要到账户中心配置下载证书,然后安装证书
https://pay./index.php/core/cert/api_cert#
账户中心-->下载证书-->导入D盘根目录下...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)交易退款方法介绍
请您登录账户!
让我们为您提供更多贴心服务
交易退款方法介绍
发起退款介绍1、可以通过查询交易订单发起退款申请或者按订单号申请退款。1)查询交易订单发起退款:2)按订单号申请退款,输入微信支付订单号或商户订单号任意一个即可申请:2、选择退款资金扣款反方式,确认信息无误后,填写退款金额及原因后可点击“提交申请”。
3、若未结算资金&退款金额则会提示退款失败,可选择使用可用余额退款或等待交易资金充足后再次申请退款。退款方式介绍
1、未结算资金退款:当未结算资金大于或等于退款资金时,可直接使用未结算资金退款。
2、可用余额退款:&在退款申请中查询到该笔订单,退款资金扣款方式直接选择可用余额即可。
1)提交申请之后,需保证可用余额充足,系统会自动从可用余额中扣除退款金额;
2)因可用余额退款导致可用余额扣减的记录,可以在“资金流水”中查询;可用余额退款不会出现在对账单中,需要单独对账。
3、转入代发退款:
当退款因为用户银行卡错误或状态不正常,而导致无法退款时,微信支付会优先转退用户微信零钱。当用户微信零钱账户也注销,其退款状态会变更为“退款异常”。出现这种情况,商户可以选择退到用户的其他银行卡或退款到商户的结算银行账户。1)进入【交易中心】-&【交易管理】-&【退款查询】中,查找退款状态为”退款异常“的退款单;
2)&当退款时用户账户异常或者退款异常时,操作区会出现“其他方式退款”,
3)点击“其他方式退款”后,商户有2种选择:a、退到用户的其他银行卡。只需要选择对应的银行(15家直联银行:招行、交通、农行、建行、工商、中行、平安、浦发、中信、光大、民生、兴业、广发、邮储、宁波),输入卡号和用户姓名,这里免去了商户输入省、市和支行信息。
b、退款到商户的结算银行账户。系统会自动拉出商户的结算银行账户信息,商户确认后,退款资金将会退回商户的结算银行账户,商户可以自行线下退款。
退款后查询:
银行卡退款展示用户开户银行、卡类型、收款银行卡号。如下图:
小Q是腾讯客服专家,同时也是本帮助页面的作者。请在下方提供反馈,以帮助她优化内容。
以上信息是否解决了您的问题?
感谢您提供反馈
感谢您的反馈,我们将持续优化!
请选择未解决的原因
描述不清晰
对产品功能不满意
内容不正确
操作后未能解决问题
关注微信公众号
向腾讯客服提问
财付通、手Q钱包专线
微信支付、理财通专线当前位置: >
为什么微信支付转账 24 小时内对方未接受就会自动退还?出于什么
[摘要]:为什么,微信,支付,转账,小时,对方,接受,就会,自动,退还,为什么微信支付转账 24 小时内对方未接受就会自动退还?出于什么是由[草丁网]小编整理投资理财的相关文章。草丁网为您精选了网友的解决办法,仅供参考 ----------------------------------------------------- 网友回答: 草丁网为您精选了网友的解决办法,仅供参考 ----------,为什么微信支付转账 24 小时内对方未接受就会自动退还?出于什么。
草丁网为您精选了网友的解决办法,仅供参考-----------------------------------------------------网友回答:
草丁网为您精选了网友的解决办法,仅供参考-----------------------------------------------------网友回答:
微信转帐为何还需要对方确认?
草丁网为您精选了网友的解决办法,仅供参考-----------------------------------------------------网友回答:
我猜最大的可能是微信账号总量跟活跃率存在很大的差距,防止你转的账户是非活跃账户,导致对方无法及时及时收到,产生一系列后续服务。
草丁网为您精选了网友的解决办法,仅供参考-----------------------------------------------------网友回答:
1、游戏规则闭环即使不设24小时也会有48小时72小时的限定,假设发10个红包,领取到剩2个,如果不设置自动收回,忘了手动收回两年以后才想起,是投诉腾讯还是投诉腾讯呢?2、资金平帐任何,哪怕只是积分、折扣券、代金券,在财务上都要做平帐的,发了10元红包被抢掉实际上等同于发起向多个账户付款的程序,假设只有8块被抢掉了那么对应的是预付10元,实付8元,剩下2元退回才能平帐。
草丁网为您精选了网友的解决办法,仅供参考-----------------------------------------------------网友回答:
防止对方收到钱了还假装没收到。
草丁网为您精选了网友的解决办法,仅供参考-----------------------------------------------------网友回答:
用户资金安全
草丁网为您精选了网友的解决办法,仅供参考-----------------------------------------------------网友回答:
除了大家的回答补充考虑到双方意愿接收人有选择是否接受的权利
草丁网为您精选了网友的解决办法,仅供参考-----------------------------------------------------网友回答:
我妈有次给我打费,打到我另外一个号上了,那个号我忘了密码,上不去,过了24小时就自动退还了。我想大概是出于这种情景。
草丁网为您精选了网友的解决办法,仅供参考-----------------------------------------------------网友回答:
微信支付密码忘了,转账不收,退回了在让她用支付宝打过来,出于这种考虑
你可能喜欢的
草丁图说...
栏目导航 …

我要回帖

更多关于 微信支付 退款 手续费 的文章

 

随机推荐