微信支付之下载账单

应用场景

商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态。

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

注意:

1.微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致,bill_type为REVOKED;

2.微信在次日9点启动生成前一天的对账单,建议商户10点后再获取;

3.对账单中涉及金额的字段单位为“元”。

接口链接

https://api.mch.weixin.qq.com/pay/downloadbill

参考代码如下

package com.wingo.action.config;

import java.util.SortedMap;

import java.util.TreeMap;

import com.wingo.util.CommonUtil;

import com.wingo.util.ConfigUtil;

import com.wingo.util.PayCommonUtil;

/**

*

* @author 李欣桦

* @date 2015-1-6下午5:13:34

*

* 对账接口

*/

public class DownloadBillAction {

/*注意:

* 微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致, bill_type 为 REVOKED

* 微信在次日 9 点启动生成前一天的对账单,建议商户 9 点半后再获取;

* 对账单中涉及金额的字段单位为“元”。

* 该接口对应的数据为服务号--->微信支付---->订单流水(退款订单的日期不是发起退订请求的日期,目前没测出是哪个日期)

*/

/*第一行数据:

* 当日所有订单 :

* 交易时间, 公众账号ID, 商户号, 子商户号, 设备号, 微信订单号, 商户订单号, 用户标识,交易类型, 交易状态, 付款银行, 货币种类, 总金额, 现金券金额, 微信退款单号, 商户退

* 款单号, 退款金额, 现金券退款金额, 退款类型, 退款状态, 商品名称, 商户数据包, 手续费,费率

*

* 当日成功支付的订单:

* 交易时间, 公众账号ID, 商户号, 子商户号, 设备号, 微信订单号, 商户订单号, 用户标识,交易类型, 交易状态, 付款银行, 货币种类, 总金额, 现金券金额, 商品名称, 商户数据包,

* 手续费, 费率

*

* 当日退款的订单:

* 交易时间, 公众账号ID, 商户号, 子商户号, 设备号, 微信订单号, 商户订单号, 用户标识,交易类型, 交易状态, 付款银行, 货币种类, 总金额, 现金券金额, 退款申请时间, 退款成功

* 时间, 微信退款单号, 商户退款单号, 退款金额, 现金券退款金额,退款类型,退款状态,商品名称, 商户数据包, 手续费, 费率

*

*/

/*

* 第二行为数据记录,各参数以逗号分隔,参数前增加`符号,为标准键盘 1 左边键的字符,字段顺序与表头一致

*

*/

/*

* 倒数第二行为订单统计标题,最后一行为统计数据,顺序:总交易单数,总交易额,总退款金额,总现金券退款金额,手续费总金额

*/

public static void main(String[]args) throws Exception {

SortedMap<Object,Object> parameters =new TreeMap<Object,Object>();

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

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

//     parameters.put("device_info", "");//微信支付分配的终端设备号,填写此字段,只下载该设备号 的对账单

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

parameters.put("bill_date","20141231");//下载对账单的日期,格式:20140603,日期不可为当天。

//bill_type:ALL返回当日所有订单信息,默认值SUCCESS返回当日成功支付的订单。REFUND,返回当日退款订单

parameters.put("bill_type","ALL");

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

parameters.put("sign", sign);

String reuqestXml =PayCommonUtil.getRequestXml(parameters);

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

if(result.startsWith("<xml>")){//查询日期为当天时,错误信息提示日期无效

System.out.println(result);

System.out.println("无订单");

}else {

String tradeMsg =  result.substring(result.indexOf("`"));

String tradeInfo =  tradeMsg.substring(0,tradeMsg.indexOf("总"));

String tradeTotalMsg =tradeMsg.substring(tradeMsg.indexOf("总"));

String tradeTotalInfo =tradeTotalMsg.substring(tradeTotalMsg.indexOf("`"));

System.out.println(result);

System.out.println(tradeMsg);

System.out.println(tradeInfo);

System.out.println(tradeTotalMsg);

System.out.println(tradeTotalInfo);

}

}

}

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

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

时间: 2024-10-12 11:11:08

微信支付之下载账单的相关文章

微信支付Demo下载(完整文档+使用说明)

提供两个测试版本,Java于PHP,都是经过测试成功后上传,功能都没有问题.代码逻辑有困惑时可以参考开发文档,上面很清楚. Java版: 1. 在开通微信支付的公众号下访问 htpp://服务器地址/mainServlet 2. 修改MainServlet.java和TopayServlet.java 里面的商户参数,授权返回地址和notify_url部分即可. 3. 代码是别人的劳动成果,经自己稍微修改后测试成功,demo并没有十分的简化,大家可以做一个参考吧.如果出现签名失败,仔细检查下自己

微信支付对账单下载

以上是官网文档说明: 下面是根据文档 梳理下思路: /** 关于签名的算法,api提供的原文是: 1.签名算法 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA. 特别注意以下重要规则: 参数名ASCII码从小到大排序(字典序): 如果参数的值为空不参与签名: 参数名区分大小写: 验证调用返回或微信主动

浅析微信支付:如何使用沙箱环境测试

本文是[浅析微信支付]系列文章的第十篇,主要讲解如何使用沙箱环境来测试微信支付. 浅析微信支付系列已经更新十篇了哟-,没有看过的朋友们可以看一下. 浅析微信支付:下载对账单和资金账单 浅析微信支付:申请退款.退款回调接口.查询退款 浅析微信支付:查询订单和关闭订单 浅析微信支付:支付结果通知 在实际开发中,通常我们都是在开发环境中开发,本地环境也有很多限制,比如:微信支付无法调起.H5链接需要鉴权.支付结果通知需要外网等. 面对以上的问题,微信官方给出了解决的方法,就是咋们这篇文章的 沙箱环境,

浅析微信支付:(余额提现)企业付款到微信用户零钱或银行卡账户

本文是[浅析微信支付]系列文章的第十二篇,主要讲解在商户存在的提现.商户付款到微信用户零钱或者银行卡需求. 浅析微信支付系列已经更新十二篇了哟-,没有看过的朋友们可以看一下哦. 浅析微信支付:支付验收示例和验收指引 浅析微信支付:如何使用沙箱环境测试 浅析微信支付:下载对账单和资金账单 浅析微信支付:申请退款.退款回调接口.查询退款 如果你是做电商或者某些有福利返利的系统,基本上会遇到诸如 余额提现 这类需求,主要就是平台向用户返利现金,积累到某一个门槛,可以领取到自己的余额账号.银行卡:或者是

PHP微信支付开发实例

这篇文章主要为大家详细介绍了PHP微信支付开发过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PHP微信支付开发过程,分享给大家,供大家参考,具体内容如下 1.开发环境 Thinkphp 3.2.3 微信:服务号,已认证 开发域名:http://test.paywechat.com (自定义的域名,外网不可访问) 2.需要相关文件和权限 微信支付需申请开通 微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/home/index.html 微信支付开发者文档

Android微信支付SDK开发

一.准备工作 1.开发平台及SDK下载 微信开放平台 https://open.weixin.qq.com 下载SDK 微信支付Demo下载 http://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=11_1 2.创建应用 创建移动应用获取 AppID  AppSecret 要获取支付功能还需要开发者资质认证,300RMB/年的费用,貌似是开放平台中唯一要收费的- 3.AndroidMainfest文件修改 权限 <uses-permission

Android微信支付SDK开发笔记

一.准备工作 1.开发平台及SDK下载 微信开放平台 https://open.weixin.qq.com 下载SDK 微信支付Demo下载 http://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=11_1 2.创建应用 创建移动应用获取 AppID  AppSecret 要获取支付功能还需要开发者资质认证,300RMB/年的费用,貌似是开放平台中唯一要收费的… 3.AndroidMainfest文件修改 权限声明: <uses-permiss

IOS开发--微信支付

前言:下面介绍微信支付的开发流程的细节,图文并茂,你可以按照我的随笔流程过一遍代码.包你也学会了微信支付.而且支付也是面试常问的内容. 正文: 1.首先在开始使用微信支付之前,有一些东西是开发者必须要知道的,打开下面链接: https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=3_1 然后可以看到下面的页面,这个就是微信支付商户平台的开发文档,很多东西是可以查阅和了解的,在开发使用微信SDK支付功能的时候,遇到了问题也可以到这找找相关须知信

微信支付【get_brand_wcpay_request:fail_invalid appid】

微信支付授权目录一定要注意大小写 艹 如下的WXPay2 千万不要写成WxPay2了 参考地址:http://q.cnblogs.com/q/70405/ 微信支付代码下载:http://files.cnblogs.com/files/niaowo/%E5%BE%AE%E4%BF%A1%E6%94%AF%E4%BB%98%E4%BB%A3%E7%A0%81%E7%A4%BA%E4%BE%8B.rar