微信退款接口文档为什么退款那么久

微信支付退款问题?交易退款常见问题?
&&&&&&&&核心提示:交易退款常见问题买家是否可直接发起退款?不支持。如需退款,必须由商家登录商户平台进行退款操作才可完成。退款时间是多久?退到...
交易退款常见问题
买家是否可直接发起退款?
不支持。如需退款,必须由商家登录商户平台进行退款操作才可完成。
退款时间是多久?退到哪里?
退款进入“审核通过,待处理”状态后,如无异常,退款会于2-5个工作日后原路退回到用户支付帐户(零钱余额即时到账)。
退款是否收取手续费?
1)未结算资金退款:退款通过轧差的方式从未结算交易款扣除后再计算商户应缴手续费。所以,退款部分并不会收取手续费。
例如:1号交易资金是1000元,产生200元的退款,那么2号结算时只收取800元对应的费率,用于退款的200元部分此处不再计算费率。
2)可用余额退款:退款总金额是指本次退款的退款金额。其中,由两部分组成:可用余额扣减金额及手续费返还金额。
例如:交易金额为1000元,若商户的费率为3‰,那么手续费为3元。退款时商户需要出资997元,返还3元;
使用可用余额退款必须充值吗?
申请退款时,仅同意使用可用余额退款,并不强制充值,可用余额退款的流程发起后,系统若发现可用余额不满足退款,退款单状态会流转到“可用余额资金不足”。如需要充值,可点击可用余额右侧的【余额不够?充值】按钮进入充值;或直接点击商户平台【账户中心】-&【资金管理】-&【充值】,根据指引充值即可。
为什么退款一直不成功?
1)退款状态为“交易资金不足”:
由于未结算资金小于退款资金,无法完成退款。此时,可改用可用额退款,或等候资金足够后系统自动完成。
2)退款状态为“退款异常”:
当用户使用银行卡支付时,微信支付首先原路退款到银行卡,当银行卡状态不正常或银行卡错误时,微信支付会优先转退用户微信零钱,仅当用户微信零钱也注销,才会转入“退款异常”状态。此时可选择‘“其它方式退款”,手动录入用户的银行信息完成退款。
3)退款状态为“待审核”:
说明商户配置了退款审核流程,联系审核人登录商户平台审核通过。审核人登录商户平台,点击【账户中心】-&【交易管理】-&【交易退款】-&【退款审核】,通过审核即可。
订单退款状态如何查询?
登录商户平台,点击【账户中心】-&【交易管理】-&【退款查询 】,查询条件:交易订单号 时间+状态类型查询;
状态说明:
表示设置了退款审核,需具备审核权限操作员审核退款通过(可设置操作员审核通过才可提交退款。若未设置,默认系统自动通过)
可撤销退款
审核通过待处理
表示退款已经审核通过待提交系统打款中
交易资金不足
表示交易未结算账户资金不足退款,请选择可用余额退款
可用余额不足
表示选择了可用余额退款,但是可用余额不足,请充值可用余额
系统退款中
表示退款资金已经打款中状态,请耐心等待2到5个工作日到账
表示收款银行账户存在异常,请选择其他方式退款
表示该笔订单操作过撤销,已经关闭无法再激活
表示资金已经成功到账,到账时间请见退款完成时间
退款到零钱还是银行如何查询?
登录商户平台,点击【账户中心】-&【交易管理】-&【退款查询】-&【查看】,查询条件:交易订单号 时间+状态类型查询;
说明:如下图退还零钱发生额则退款至零钱包,退还银行卡发生额则退款至银行卡。不会存在同时退款银行卡和零钱,请客户查询收支明细即可。如下图所示:
撤销退款如何操作?
登录商户平台,点击【账户中心】-&【交易管理】-&【退款查询】-&【撤销退款】,查询条件:交易订单号 时间+状态类型查询
支持撤销状态:待审核、审核通过待处理、交易资金不足、可用余额不足;
说明:退款一经撤销后该笔退款单即取消不会发生扣费,且撤销的订单无法再激活继续退款。如下图所示:
用户银行卡注销如何退款?
登录商户平台,点击【账户中心】-&【交易管理】-&【退款查询 】,查询条件:交易订单号 时间+状态类型查询;
说明:用户银行卡注销将会提示退款异常状态,请点击“其他方式退款”填写用户新卡信息提交退款。如下图所示:
交易金额不足如何完成退款?
登录商户平台,点击【账户中心】-&【交易管理】-&【退款查询 】,查询条件:交易订单号 时间+状态类型查询;
说明:当未结算交易金额不足退款时,可以选择可用余额退款。如下图所示:
可用余额如何充值?
登录商户平台,点击【账户中心】-&【账户中心】-&【资金管理】-&【充值】,
支持充值方式:财付通余额支付、个人网银支付、企业网银支付;
说明:充值的可用余额,可以操作营销工具、退款、提现。如下图所示:
退款成功,买家表示未收到资金如何处理?
登录商户平台,点击【账户中心】-&【交易管理】-&【退款查询 】,查询条件:交易订单号 时间+状态类型查询;
说明:订单退款会按照支付方式原路退回(零钱/银行卡),请确认查询收支明细的账户是支付账户。可以让用户先在收支明细内查询到支出记录再对应查收退款记录,查收退款记录时请查询退款完成前后2内,确保查询无误。
a、退款到微信零钱账户的请根据退款完成时间段查询微信零钱收支明细。操作方法:登录微信,点击【我】-&【钱包】-&【零钱】-&【零钱明细】,超过20天的历史记录请查询微信,点击【我】-&【钱包】-&右上角【交易记录】;
b、退款到银行卡账户的请据退款完成时间段查询银行收支明细退款到账时间:退款完成时间左右两天!
退款超时如何处理?
登录商户平台,点击【账户中心】-&【交易管理】-&【退款查询 】,查询条件:交易订单号 时间+状态类型查询
;说明:零钱支付交易退款为实时到账,银行卡支付退款为2到5个工作日。计算时间从“审核通过待系统处理”状态起计算超过5个工作日则视为超时,请联系商户客服核实。
比比推微信导航(www.weixindhw.com),集微信导航、微信第三方接口网站、微信运营为一体的微信管理平台!...
&&[北京市]
★★★★★一般推荐,鼎立推荐
  以往的杭港地铁1号线和整个江陵路地铁站,来来往往都是行色匆匆的行人,但这两天却格外引人驻足。  有乘客在搭地铁的空隙...
活动,是运营最基本的日常,做公众号也不例外。那你平时都做了哪些活动呢?这里推荐12种公众号最常用的活动形式,号主相信,肯定...
在松松博客投稿的第一个案例(烟油),是我们实打实做出来的。我也一直有关注近百条评论,大部分网友还是很认可,也有几位有一些...
听说,微信群人数可以超过500人了?是真的吗?微信群一直以来上线500人,超过500就得需要重新建群了,对于经营微信群的人说就有点...
现在有车的人很多,如果是下班高峰期,很多的地方很容易出现堵车的情况,而有的人会了能快一步通过,往往会选择违章。于是,处理...
分享与收藏:&
本文关键字:
为您推荐更多相关文章
联系人:嘉客(女士)&&
会员: [当前离线]微信退款接口_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
微信退款接口
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢咨询热线:400-676-8333
手机找法网
您的当前位置:
微信退款已经超过三天了,为什么一直显示有退款三日后再操作呢?
微信退款已经超过三天了,为什么一直显示有退款三日后再操作呢?
广东 - 中山
消费者权益
其他类似咨询
您好,这样子对店铺的好评率就会降低哦。对你日后,的销售会有影响呢,可以让卖家选择别的退货的原因呢。谢谢!
可向消协投诉或起诉解决。
建议与驾校协商解决
根据与商场签订的合同处理退款
报警或起诉
你好,你们自己可以协商的
建议携带书面房屋买卖合同来所面谈。
咨询客服中心
更多类似咨询(7)
精选问答推荐
免费在线咨询
年累计为超过
用户提供了在线咨询服务
版主/行家律师招募
最新法律咨询
来自清远用户的咨询
来自广州用户的咨询
来自揭阳用户的咨询
来自郑州用户的咨询
来自保定用户的咨询
来自鞍山用户的咨询
来自保定用户的咨询
来自宁波用户的咨询
来自云浮用户的咨询
来自贺州用户的咨询
来自贺州用户的咨询
来自莱芜用户的咨询
来自萍乡用户的咨询
来自成都用户的咨询
来自广州用户的咨询
来自三明用户的咨询
来自北京北京用户的咨询
来自潜江用户的咨询
来自长沙用户的咨询
来自北京北京用户的咨询
来自百色用户的咨询
来自石河子用户的咨询
来自汉中用户的咨询
来自阳泉用户的咨询
来自济南用户的咨询
来自石嘴山用户的咨询
来自天津天津用户的咨询
来自漳州用户的咨询
来自怒江用户的咨询
来自阜阳用户的咨询
来自重庆重庆用户的咨询微信退款是需要证书的&
以在windows为例,解压之后的文件
双击.p12结尾的文件,导入证书,会要求输入密码,密码就是商户ID,注意一定要是在自己的商户平台上下载的证书,不然会提示密码错误。
封装了一个RefundVo对象,字段设定根据官方文档
public class RefundVo {
private String mchId;
private String deviceI
private String nonceS
private String signT
private String transactionId;
private String outTradeNo;
private String outRefundNo;
private int totalF
private int refundF
private String refundFeeT
private String opUserId;
private String refundA
//省略get set方法
设置各个参数
String key = "xxxxxxx";
RefundVo vo = new RefundVo();
vo.setOutTradeNo("0333");//商户订单号(微信订单号二选一即可)
vo.setAppid("appid");
vo.setMchId("mchid");
vo.setOutRefundNo("0333");//某付款的定单号
vo.setTotalFee(1);//订单金额
vo.setRefundFee(1);退款金额
vo.setOpUserId("");//默认商户号
String certificatePath = "E:/工作/cert/apiclient_cert.p12";//证书的绝对路径
refund(key ,vo,certificatePath );
封装退款的结果
public class RefundResult {
private String returnC
private String returnM
private String resultC
private String errC
private String errCodeD
private String mchId;
private String deviceI
private String nonceS
private String transactionId;
private String outTradeNo;
private String outRefundNo;
private String refundId;
* ORIGINAL—原路退款
* BALANCE—退回到余额
private String refundC
* 申请退款金额
private int refundF
* 退款金额
private int settlementRefundF
private int totalF
private int settlementTotalF
private String feeT
private int cashF
private int cashRefundF
//省略set get方法
退款的方法
public RefundResult refund(String key,RefundVo vo,String certificatePath){
RefundResult refundResult = new RefundResult();
vo.setNonceStr(RandomUtil.wechatRandomString());//设置随机字符串
vo.setSign(new RefundBuilder().build(vo));//设置签名
check(vo);//检查参数
//将参数放入Map中
Map&String,String& params=new RefundBuilder().getParams(vo);
//转成Xml形式的String
String xml=XmlParseUtils.assembleXml(params);
&appid&wx0ec43b&/appid&
&mch_id&&/mch_id&
&nonce_str&6cefdb308e1e2e8aabd48cf79e546a02&/nonce_str&
&op_user_id&&/op_user_id&
&out_refund_no&&/out_refund_no&
&out_trade_no&&/out_trade_no&
&refund_fee&1&/refund_fee&
&total_fee&1&/total_fee&
&transaction_id&&/transaction_id&
&sign&FE56DD4AA85C0EECA82C&/sign&
//调用微信接口
result = HttpClientUtils.executeBySslPost(refundURL,xml,vo.getCertificatePath(),vo.getRefundVo().getMchId());//发送http请求
//接收xml解析的结果
Map&String, String& map = new HashMap&String,String&();
//返回结果为xml形式,转成map然后封装成refundResult即可
map = XmlParseUtils.parseXml(result);
refundResult = new RefundResultBuilder().build(map);
private void check(RefundVo vo){
if (VerifyUtils.isEmpty(vo.getAppid())) {
throw new PayException("申请退款参数为空——appid");
if (VerifyUtils.isEmpty(vo.getMchId())) {
throw new PayException("申请退款参数为空——mch_id");
if (VerifyUtils.isEmpty(vo.getNonceStr())) {
throw new PayException("申请退款参数为空——nonce_str");
if (VerifyUtils.isEmpty(vo.getSign())) {
throw new PayException("申请退款参数为空——sign");
if (VerifyUtils.isEmpty(vo.getTransactionId()) && VerifyUtils.isEmpty(vo.getOutTradeNo())) {
throw new PayException("申请退款参数为空——transaction_id或者out_trade_no");
if (VerifyUtils.isEmpty(vo.getOutRefundNo())) {
throw new PayException("申请退款参数为空——out_refund_no");
if (VerifyUtils.isEmpty(vo.getTotalFee())) {
throw new PayException("申请退款参数为空——total_fee");
if (VerifyUtils.isEmpty(vo.getRefundFee())) {
throw new PayException("申请退款参数为空——refund_fee");
if (VerifyUtils.isEmpty(vo.getOpUserId())) {
throw new PayException("申请退款参数为空——op_user_id");
public class RefundBuilder extends SignBuilder {
public Map&String, String& getParams(Refund vo) {
Map&String,String& params = new HashMap&String, String&();
if(VerifyUtils.isNotEmpty(vo.getAppid())){
params.put("appid",vo.getAppid());
if (VerifyUtils.isNotEmpty(vo.getMchId())) {
params.put("mch_id", vo.getMchId());
if (VerifyUtils.isNotEmpty(vo.getDeviceInfo())) {
params.put("device_info", vo.getDeviceInfo());
if(VerifyUtils.isNotEmpty(vo.getNonceStr())){
params.put("nonce_str",vo.getNonceStr());
if (VerifyUtils.isNotEmpty(vo.getSign())) {
params.put("sign", vo.getSign());
if (VerifyUtils.isNotEmpty(vo.getSignType())) {
params.put("sign_type", vo.getSignType());
if (VerifyUtils.isNotEmpty(vo.getTransactionId())) {
params.put("transaction_id", vo.getTransactionId());
if (VerifyUtils.isNotEmpty(vo.getOutTradeNo())) {
params.put("out_trade_no", vo.getOutTradeNo());
if (VerifyUtils.isNotEmpty(vo.getOutRefundNo())) {
params.put("out_refund_no", vo.getOutRefundNo());
if (VerifyUtils.isNotEmpty(vo.getTotalFee())) {
params.put("total_fee",Integer.toString(vo.getTotalFee()));
if (VerifyUtils.isNotEmpty(vo.getRefundFee())) {
params.put("refund_fee", Integer.toString(vo.getRefundFee()));
if (VerifyUtils.isNotEmpty(vo.getRefundFeeType())) {
params.put("refund_fee_type",vo.getRefundFeeType());
if (VerifyUtils.isNotEmpty(vo.getOpUserId())) {
params.put("op_user_id",vo.getOpUserId());
if (VerifyUtils.isNotEmpty(vo.getRefundAccount())) {
params.put("refund_account",vo.getRefundAccount());
http执行的方法
public static String executeBySslPost(String url, String body,String certificatePath,String password) throws Exception {
String result = "";
//指定读取证书格式为PKCS12
KeyStore keyStore = KeyStore.getInstance("PKCS12");
//读取本机存放的PKCS12证书文件
FileInputStream instream = new FileInputStream(new File(certificatePath));
//指定PKCS12的密码(商户ID)
keyStore.load(instream, password.toCharArray());
} finally {
instream.close();
SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, password.toCharArray()).build();
//指定TLS版本
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[]{"TLSv1"}, null, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
//设置httpclient的SSLSocketFactory
CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
HttpPost httppost = new HttpPost(url);
StringEntity reqEntity = new StringEntity(body, "UTF-8");
httppost.setEntity(reqEntity);
System.out.println("Executing request: " + httppost.getRequestLine());
CloseableHttpResponse response = null;
response = httpclient.execute(httppost);
result = EntityUtils.toString(response.getEntity(),"UTF-8");
} catch (Exception e) {
e.printStackTrace();
log.error("请求失败", e);
throw new RuntimeException(e);
} finally {
response.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
log.error("请求失败", e);
throw new RuntimeException(e);
} finally {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
最终的返回结果
System.out.println(JSON.toJSONString(result,true));
阅读(...) 评论()

我要回帖

更多关于 微信退款 的文章

 

随机推荐