微信支付之退款查询

应用场景

提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账,银行卡支付的退款3个工作日后重新查询退款状态。

官方文档: http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_5

参考代码:

package com.wingo.action.config;

import java.util.Map;

import java.util.SortedMap;

import java.util.TreeMap;

import com.wingo.util.CommonUtil;

import com.wingo.util.ConfigUtil;

import com.wingo.util.PayCommonUtil;

import com.wingo.util.XMLUtil;

/**

*

* @author李欣桦

* @date 2015-1-15下午2:00:49

*
退款查询

*/

publicclassCheckRefundAction {

publicstaticvoid main(String[] args)
throws Exception {

SortedMap<Object,Object> parameters =
newTreeMap<Object,Object>();

parameters.put("appid", ConfigUtil.APPID);

parameters.put("mch_id", ConfigUtil.MCH_ID);

//parameters.put("device_info","");//微信支付分配的终端设备号

parameters.put("nonce_str", PayCommonUtil.CreateNoncestr());

//下列四个单号同时存在优先级refund_id>out_refund_no>transaction_id>out_trade_no

parameters.put("transaction_id",
"1008010446201412030006459614");//微信交易单号

parameters.put("out_trade_no",
"1340297960");//商户交易单号

parameters.put("out_refund_no",
"");//商户退款单号

parameters.put("refund_id",
"");//微信退款单号

String sign = PayCommonUtil.createSign("utf-8",parameters);

parameters.put("sign", sign);

String reuqestXml = PayCommonUtil.getRequestXml(parameters);

String result =CommonUtil.httpsRequest(ConfigUtil.CHECK_REFUND_URL,"POST",reuqestXml);

System.out.println(result);

Map<String, String> map =
XMLUtil.doXMLParse(result);

String returnCode = map.get("return_code");

String resultCode = map.get("result_code");

if(returnCode.equalsIgnoreCase("SUCCESS")&&resultCode.equalsIgnoreCase("SUCCESS")){

String refundCount = map.get("refund_count");

Integer count =
new
Integer(refundCount);

for (inti = 0; i < count; i++) {

StringrefundStatus = (String) map.get("refund_status_"+i);

//refudnStatus有如下状态:

//SUCCES—退款成功,FAIL—退款失败,PROCESSING—退款处理中NOTSURE—未确定,需要商户原退款单号重新发起

//CHANGE—转入代发,退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,资金回流到商户的现金帐号,需要商户人工干

//预,通过线下或者财付通转账的方式进行退款。

if(refundStatus.equalsIgnoreCase("SUCCESS")){

//TODO退款成功操作

System.out.println("退款状态为已成功退款");

}

}

}

}

}

上述代码中相关工具类的下载地址如下:

http://download.csdn.net/detail/u011160656/8354883

时间: 2024-10-13 15:24:51

微信支付之退款查询的相关文章

利用微信支付的订单查询接口可以在APP 中提高支付的可靠性

最近公司有一个应用,用户可以在微信公众号上面下单,也可以在APP 中下单. 当用户在公共号上面下单时,微信支付成功可以返回微信支付单号,但是在APP 中用户微信支付时,个别时候会出现用户没有付款成功,却在支付后的回调逻辑中执行了订单支付成功的逻辑. 显然在APP中微信支付的这种回调逻辑是不可靠的. (1)首先说明下为什么要拿到微信支付订单号 微信支付订单号是微信系统在支付成功后返回的订单号,比如这样的订单号:4007322001201705049543255213, 拿到这个订单号可以调用微信查

微信支付之退款

先吐槽下微信的文档和demo,重要的步骤信息没有强调清楚,.net的demo就没有跑成功过. 1.微信扫码登录 2.微信PC端支付 几经摸索才走通这个退款功能.下面介绍下微信支付退款功能的开发步骤: 一.下载证书并导入到系统 微信退款是需要证书的,这个证书不是官方demo中的证书,而是需要自己在微信商户平台中的api安全栏下载的证书,在官方的证书使用实例的一个word文档看到下面话:C#有一点需要注意,除了在代码中使用apiclient_cert.p12之外还需要将该证书导入操作系统才能使用,1

微信支付开发(5) 订单查询

本文介绍微信支付中订单查询功能的实现. 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/wxpay-order-query.html 一.订单查询 因为某一方技术的原因,可能导致商户在预期时间内都收不到最终支付通知,此时商户可以通过该API来查询订单的详细支付状态. 订单查询API的URL为: https://api.weixin.qq.com/pay/orderquery?access_token=xxxxxx URL中的参数只包含目前微信公众平台凭证

微信小程序支付及退款流程详解

微信小程序的支付和退款流程 近期在做微信小程序时,涉及到了小程序的支付和退款流程,所以也大概的将这方面的东西看了一个遍,就在这篇博客里总结一下. 首先说明一下,微信小程序支付的主要逻辑集中在后端,前端只需携带支付所需的数据请求后端接口然后根据返回结果做相应成功失败处理即可.我在后端使用的是php,当然在这篇博客里我不打算贴一堆代码来说明支付的具体实现,而主要会侧重于整个支付的流程和一些细节方面的东西.所以使用其他后端语言的朋友有需要也是可以看一下的.很多时候开发的需求和相应问题的解决真的要跳出语

微信支付服务端开发

前言 最近应公司业务需求,把微信支付完成了,当然已经顺利上线.但是开发的过程是也是踩了很多坑,下面我就先说说开发流程,以及在开发中遇到的大大小小的坑. 开发流程 首先,看一下微信开方平台关于支付的一个时序图,如下: 微信支付时序图https://pay.weixin.qq.com/wiki/doc/api/app/app.php 商户系统和微信支付系统主要交互说明: 步骤1:用户在商户APP中选择商品,提交订单,选择微信支付. 步骤2:商户后台收到用户支付单,调用微信支付统一下单接口.参见[统一

&lt;正则吃饺子&gt; :关于微信支付的简单总结说明(二)

关于微信退款 一.官方文档 申请退款:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_4&index=6 二.退款流程图 一个百度文库的文档:https://wenku.baidu.com/view/754c78e93186bceb19e8bbcc.html 三.项目中使用的代码 拿来作个参考吧,方便记忆和理解 /** * 微信支付申请退款 * * @param weChatPayRefund * @return */ p

如何玩转微信支付功能的原理和开发(转)

打开微信,各种营销信息霸占了我的眼球,以“微信支付+微信小店”的模式挑战阿里“支付宝+淘宝天猫”的模式开启了新纪元,腾讯此举是在革淘宝的命吗?有人说,微信对阿里最大的挑战,是把连接能力下发给了企业/用户,让企业/用户而不是平台自身发挥主动权和能动性来建立新的连接模式. 近年来,移动支付发展迅猛,移动支付已经成为了不可抵挡的发展趋势,其引领了新一轮的支付潮流.从某种角度来讲,反观移动互联网的迅速发展,对微信的快速发展起到了很大的推动力,其所蕴含的巨大潜力使其成为了市场争相抢夺的香饽饽.一时间各种支

关于在微信支付接口和支付宝接口中使用到的辅助函数

刚才在shell中敲代码的时候,习惯性地用tab键去补全,然后就一直报错,所以以后记得不要在vim编写代码的时候去用tab补全. 然后现在是总结一下在生成两个接口数据时使用到的一些辅助函数,因为我自己是先开发微信支付接口使用的,所以先总结微信支付的函数,首先是生成随机字符串,我自己是先生成一个26个小写字母和0到9的数字的字符串,然后从中随机挑选32个字符加入一个list,然后用join联合函数直接组成随机字符串,代码如下: def nonce_str(self): # 生成随机字符 chars

微信支付服务商开发相关的那点事

项目背景 不是什么大项目,使用微信服务商来管理多个子商户,并使用服务商的接口替子商户下单,服务商后台才能接收到回调 使用场景是web扫码支付 准备 域名应该要在服务商所归属的公众号内“网页授权域名”设置好(不知此操作是否需要?) 在支付服务商后台设置好回调地址(子商户应该是不用设置) 项目使用apache+php为后台服务,下载官方支付php demo(native) 我们直接先按照demo的目录结构来玩,直接把解压的example和lib,2个目录都到服务器根目录 在example目录下,创建