微信对账单 java_微信支付对账,你是如何处理的?

支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款结果一致,具体字段说明可查阅相应接口。

Ps:至于如何调用微信接口下载对账单,在微信的官方SDK包中就有现成的方法,直接调用即可。注意对账单接口一次只能查询一天的数据。

代码大致如下:

// 引入微信sdk文件

require_once APP_DIR . '/ome/lib/wxpay/lib/WxPay.Api.php';

require_once APP_DIR . '/ome/lib/wxpay/log.php';

// 实列化下载对账单对象

$input = new WxPayDownloadBill();

// 对账单日期

$input->SetBill_date(date("Ymd", strtotime("-1 day")));

// 对账单类型

$input->SetBill_type('ALL');

// 获取账单信息

$downloadBillResult = WxPayApi::downloadBill($input);

复制代码

打印$downloadBillResult就会发现他是一个数据文本(string),本文程序需要实现的功能就是从这个字符串从提取每一笔订单中的有效信息,参考代码如下:

/**

* 微信对账单数据处理

* @param $response 对账单数据

* @return array 返回结果

*/

public function deal_WeChat_response($response){

$result = array();

$response = str_replace(","," ",$response);

$response = explode(PHP_EOL, $response);

foreach ($response as $key=>$val){

if(strpos($val, '`') !== false){

$data = explode('`', $val);

array_shift($data); // 删除第一个元素并下标从0开始

if(count($data) == 24){ // 处理账单数据

$result['bill'][] = array(

'pay_time' => $data[0], // 支付时间

'APP_ID' => $data[1], // app_id

'MCH_ID' => $data[2], // 商户id

'IMEI' => $data[4], // 设备号

'order_sn_wx' => $data[5], // 微信订单号

'order_sn_sh' => $data[6], // 商户订单号

'user_tag' => $data[7], // 用户标识

'pay_type' => $data[8], // 交易类型

'pay_status' => $data[9], // 交易状态

'bank' => $data[10], // 付款银行

'money_type' => $data[11], // 货币种类

'total_amount' => $data[12], // 总金额

'coupon_amount' => $data[13], // 代金券或立减优惠金额

'refund_number_wx' => $data[14], // 微信退款单号

'refund_number_sh' => $data[15], // 商户退款单号

'refund_amount' => $data[16], // 退款金额

'coupon_refund_amount' => $data[17], // 代金券或立减优惠退款金额

'refund_type' => $data[18], // 退款类型

'refund_status' => $data[19], // 退款状态

'goods_name' => $data[20], // 商品名称

'service_charge' => $data[22], // 手续费

'rate' => $data[23], // 费率

);

}

if(count($data) == 5){ // 统计数据

$result['summary'] = array(

'order_num' => $data[0], // 总交易单数

'turnover' => $data[1], // 总交易额

'refund_turnover' => $data[2], // 总退款金额

'coupon_turnover' => $data[3], // 总代金券或立减优惠退款金额

'rate_turnover' => $data[4], // 手续费总金额

);

}

}

}

return $result;

}

复制代码

返回的数据分为2部分,bill节点下存放的是具体流水数据,summary节点下存放的是统计数据

主要的思路是微信账单返回的结果格式是固定的,可以用 '`',换行符(PHP_EOL)实现字符串的分割,然后每 24 个 字段为一个订单的描述信息,最后 6 个字段为账单的汇总信息。因此通过循环就可以遍历整个账单。

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[微信支付对账,你是如何处理的?]http://www.zyiz.net/tech/detail-140097.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java技术文章在哪里看呢_谈论Java技术似乎无处不在,但究竟是什么呢?文章末尾有福利...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼谈论Java技术似乎无处不在,但究竟是什么呢?下面的部分将解释Java技术如何既是一种编程语言,又是一种平台,并概述这种技术可以为您做些什么。Java编程语言是一种高级语言,可…

java中常用的关键字_java中的常用的关键字

在java编程过程中,会经常写到一些关键字,但是对于他们应用的方式其实一直是模仿状态,并没有很实质的去了解,为什么要这么用,导致程序不能优化,或者出现了bug不明所以,因而再详细的去重温了一下各…

java如何处理灰度图片_Java图片的灰度处理方法

通过看网上各种大牛的总结,和自己亲身测试总结一下Java图片的灰度处理方法(1)我们熟知的图片中的像素点有RGB值。(2)图片灰度化的方式大概分为四种,第一种是最大值法(取颜色RGB中的最大值作为灰度值);第二种是最小值法(取颜色RGB的最小值作为…

java多项式和_在Java中查找多项式的根

小编典典请找到以下相同的示例示例public class PolynomialRootFinder {/*** * Given a set of polynomial coefficients, compute the roots of the polynomial. Depending on* the polynomial being considered the roots may contain complex number. When complex numbers …

java7 nio2 新特性_JDK7新特性,你知道几个?

前言之前学习的过程中,每天都是老师说这个是JDK7以后可以使用,那个是JDK8以后可以使用,每天都记的很混乱,今天专门忙里偷闲,归拢整理下JDK7的新特性,对于JDK的新特性,后期会进行整理更新&#x…

java jsp校验提示信息_java Jquery表单校验代码jsp页面

jsp.file欢迎注册EasyMall/* 注册表单的js校验 */var formObj {/* 检查输入项是否为空 */"checkNull" : function(name, msg){var value $("input[name"name"]").val().trim();//清空之前的提示消息formObj.setMsg(name, "");if(val…

错误处理方法 java_JAVA常见错误处理方法 和 JVM内存结构

OutOfMemoryError在开发过程中是司空见惯的,遇到这个错误,新手程序员都知道从两个方面入手来解决:一是排查程序是否有BUG导致内存泄漏;二是调整JVM启动参数增大内存。OutOfMemoryError有好几种情况,每次遇到这个错误时…

java中如何分隔字符串_Java中分割字符串

java.lang.String的split()方法, JDK 1.4 or laterpublic String[] split(String regex,int limit)示例代码public classStringSplit {public static voidmain(String[] args) {String sourceStr "1,2,3,4,5";String[] sourceStrArray sourceStr.split(",&quo…

typescript 接口 java_Typescript基础(4)——接口

前言今天继续typescript的学习,开始ts接口部分的学习。接口接口的理解首先,我们谈论一下现实生活中的接口。比如生活中常用的插座接口,有些插头是三孔插座的,有些是两孔插座的。插座接口规定了插头的数目,那么我们的电…

php测试号推送消息失败,信息发送失败是什么原因

手机突然信息发送失败可能是以下原因:1.是因为我们的手机出现了欠费的情况,所以发不出短信,这种情况是最为普遍的,需要我们及时的进行缴费。2.手机的信息中心的号码设置有误,应该根据你所在省份的实际信息中心号码进行设置,这样一般就能解决这方面的问题。可能是你的…

php ajax 概率 转盘,php+jquery实现转盘抽奖 概率可任意调

phpjquery实现转盘抽奖 概率可任意调phpjquery实现转盘抽奖 概率可任意调Posted by: xiaomiao 2014/05/13in Code, PHP 3 Commentsphpjquery实现转盘抽奖查看DEMO演示转盘抽奖,炫丽的一般是flash做的。不懂flash而又不需要那么炫丽,可以简单的通过jquer…

组件php53 php55区别,分享下php5类中三种数据类型的区别

public: 公有类型    在子类中可以通过self::var 来调用 public类型的方法或属性 可以通过parent::method 来调用父类中的方法在实例中可以能过$obj->var 来调用 public类型的方法或属性protected: 受保护类型在子类中可以通过self::var 来调用 protected类型的方法…

wins宝塔安装提示已经有php,centOS安装宝塔提示报错

安装宝塔提示这个错误、一般是DNS问题、或者更换个安装节点P rootlocalhost:~root0104.223.166.114s password: ILast failed login: Tue Jul 17 02:32:19 EDT 2018 from 112.85.42.197 on. ssh :notty IThere were 780 failed login attempts since the last successful login…

php自动抓取文章图片,从文章中提取图片,把图片保存到本地,自动提取缩略图...

开发二代旅游网站程序和CMS的时候,有一个需求,就是从网上复制的内容,里面包含图片的,需要对把图片提取出来,并且保存到本地,并且把图片的URL地址本地化,以下是实现的代码。开发二代旅游网站程序…

url get参数 php,怎么取得Url中Get参数

这次给大家带来怎么取得Url中Get参数,取得Url中Get参数的注意事项有哪些,下面就是实战案例,一起来看一下。此时可以使用js的方式得到当前页面的url中的get参数. 核心语句是:window.location.href详细代码不解释了,有注释,你看了就懂.封装成jQ…

php tls,使用TLS在PHP中建立连接

我为特殊目的编写了一个小型SIP客户端.基本上,它使用函数fsockopen()连接到端口5060$fp fsockopen("10.0.0.1", 5060, $errno, $errstr, 30);然后基本上使用fread()和fwrite()读写SIP命令.现在,我的SIP服务操作符希望我们的客户使用SIPS,基本上是通过TLS的SIP.我花了…

简单的php探针,php探针程序的推荐

在我们之前的文章已经为大家介绍了什么是php探针,以及他的主要作用是什么,如果你接触了cms或许就会有点了解,当然,不要紧,看完这篇就知道php探针是做什么的了。php探针通常是用来探测空间、服务器运行的状况和php相关信…

php熊掌号怎么设置json-ld,dedecms织梦系统对接百度熊掌号并添加JSON_LD数据

百度近期推出的百度熊掌号非常的不错,我的dedecms织梦系统早早就对接好了,它能对你的原创文章进行原创保护,并评出熊掌号搜索指数,熊掌号搜索指数是对你文章的内容质量,用户喜爱、原创能力、活跃表现、领域专注五个维度进行计算评估而得到的。你的dedecms织梦网站开通熊掌号之后…

php获取信息,PHP文件信息获取函数

知识点:basename():获取文件名,传入第二个参数则只显示文件名,不显示后缀dirname():获取文件路径pathinfo():将文件信息存入一个数组,通过索引basename,dirname,extension可以获得对应的文件名,…

判断文件是否改变php,PHP判断文件是否被修改实例

在网站的管理系统中,有时需要查看某个文件是否被修改过、在什么时间被修改的、最后的修改时间是什么时候,本实例就可以实现这个功能,对表单中提交的文件进行判断,检测出修改时间。关键技术本实例主要应用filectime()和filemtime()…