微信并未提供一个统一的查询接口。对应每种查询均需要不同的api。为了便于大家在项目中使用,忽略细节。对以上三种进行了封装。通过工厂的方式降低调用成本。

$wxconfig = [

'app_id' => 'wxxxx', // 公众账号ID

'mch_id' => 'xxxx',// 商户id

'md5_key' => 'xxxxxx',// md5 秘钥

'notify_url' => 'http://test.helei.com/pay-notify.html',

'time_expire' => '14',

// 涉及资金流动时,需要提供该文件

'cert_path' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'wx' . DIRECTORY_SEPARATOR . 'apiclient_cert.pem',

'key_path' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'wx' . DIRECTORY_SEPARATOR . 'apiclient_key.pem',

];

use Payment\QueryContext;

use Payment\Common\PayException;

use Payment\Config;

$query = new QueryContext();

// 通过交易号查询, 推荐

$data = [

//'order_no' => '2016011402433464',// 商户订单号

'transaction_id' => '4007572001201607098672633287',// 微信订单查询 微信退款单查询

//'trans_no' => '1007570439201601142692427764', // 微信批量转款查询

];

try {

// 微信订单查询

$query->initQuery(Config::WEIXIN, $wxconfig);

// 微信退款订单状态查询

//$query->initQuery(Config::WEIXIN_REFUND, $wxconfig);

// 微信企业付款查询

//$query->initQuery(Config::WEIXIN_TRANS, $wxconfig);

$ret = $query->query($data);

} catch (PayException $e) {

echo $e->errorMessage();exit;

}

订单查询非常简单。对于微信支付订单以及退款订单可以根据微信支付的流水号进行查询。对于微信支付的订单还可根据商户的订单号进行查询。但是强烈建议通过微信自身的流水号进行查询。

对于批量转款查询。需要提供再转款时,生产的转款单号(此单号是由商家自行生产的)。这里我也蛮迷惑,为什么不提供使用微信返回的转款流水号进行查询呢?

接下来对返回值进行解释,以下结构为一个顶层结构

参数

参数名

参数说明

是否必须

is_success

成功标识

请求是否成功,T:成功,F:失败

error

错误提示

只有is_success=F时才返回

response

响应数据

查询成功后返回的数据,一个数组,is_success=T时返回

微信支付订单返回值

支付订单中关于 response 中包含字段的描述

参数

参数名

参数说明

是否必须

amount

交易金额

本次订单总金额,单位为元,最多两位小数

channel

支付渠道

本处取值: wx

order_no

商户网站唯一订单号

商户生成的订单号,必须确保在系统中唯一

buyer_id

用户标识

用户在商户appid下的唯一标识

trade_state

交易状态

支付成功与否,可取值:success not_pay

transaction_id

微信交易号

微信系统中的交易流水号,可用于查询订单状态

time_end

交易付款时间

格式为2016-07-28 16:01:01

微信退款订单

退款有以下两点需要注意

交易时间超过一年的订单无法提交退款;

微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。一笔退款失败后重新提交,要采用原来的退款单号。总退款金额不能超过用户实际支付金额。

由于一笔支付订单,可能存在多笔退单的情况,因此退款记录将返回一个数组

退款订单中关于 response 中包含字段的描述

参数

参数名

参数说明

是否必须

amount

交易金额

本次订单总金额,单位为元,最多两位小数

order_no

商户网站唯一订单号

商户生成的订单号,必须确保在系统中唯一

transaction_id

微信交易号

微信系统中的交易流水号,可用于查询订单状态

refund_data

退款数据

其结构是一个数组,每一个元素包含一个退单信息

refund_data 中包含字段的描述

参数

参数名

参数说明

是否必须

refund_no

商户退款单号

商户退款单号

refund_id

微信退款单号

微信退款单号

refund_channel

退款渠道

ORIGINAL—原路退款 BALANCE—退回到余额

refund_fee

退款金额

退款总金额,单位为元,可以做部分退款

refund_status

退款状态

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

recv_accout

退款入账账户

退款入账账户

转款订单查询结果

'trans_id' => $data['detail_id'],// 付款单号

'trans_status' => $data['status'],// 转账状态

'reason' => $data['reason'],// 失败原因

'buyer_id' => $data['openid'],

'trans_name' => $data['transfer_name'],// 收款用户姓名

'trans_time' => $data['transfer_time'],

'desc' => $data['desc'],// 付款描述

参数

参数名

参数说明

是否必须

amount

付款金额

付款金额 单位元

order_no

商户单号

商户使用查询API填写的单号的原路返回.

trans_id

付款单号

调用企业付款API时,微信系统内部产生的单号

trans_status

转账状态

SUCCESS:转账成功 FAILED:转账失败 PROCESSING:处理中

reason

失败原因

如果失败则有失败原因

buyer_id

收款用户openid

收款用户openid

trans_name

收款用户姓名

真实姓名,如果是需要实名验证,则会返回

trans_time

转账时间

发起转账的时间 格式:2015-04-21 20:00:00

desc

付款描述

付款时候的描述

PHP微信根据订单号查询支付结果,9. PHP接入微信支付订单、退款订单、转款订单的查询...相关推荐

  1. 微信上的Siri:小i机器人首次接入微信语音API

    微信上的Siri:小i机器人首次接入微信语音API 不久前我们曾介绍过微信开放系统API,首次和印象笔记合作,可以将聊天内容无缝保存到印象笔记.除印象笔记外,智能语音助手小i机器人也是首批获得微信系统 ...

  2. 【Node.js 微信公众号实战】1.Node.js 接入微信公众平台开发

    文章目录:         1.Node.js 接入微信公众平台开发         2.Node.js access_token的获取.存储及更新         3.Node.js 自定义微信菜单 ...

  3. 【微信小程序】2、SpringBoot整合WxJava接入微信客服

    上篇文章中已经开启了微信小程序的消息推送:[微信小程序]1.SpringBoot整合WxJava开启消息推送,接下来我们就对微信中用户发送的客服消息,转发到微信客服来处理回复 1.添加微信客服 登录微 ...

  4. 聚合支付满足各行业接入多种支付通道

    商业的本质是商品和服务的交换和流通,人类的商业行为即信息流+物流+资金流的交换和流通的过程.互联网对现代商业的影响深远,但核心仍然是基于以上三种交换流通模式.谁能显著提升各个环节的效率,谁将可能成为巨 ...

  5. 微信公众平台-第三方平台开发(二)接入微信平台服务器

    验证票据 验证票据(component_verify_ticket),在第三方平台创建审核通过后,微信服务器会向其 "授权事件接收URL" 每隔 10 分钟以 POST 的方式推送 ...

  6. 微信notify mysql_微信支付的notify.php中如何获取订单号(php版)

    不要直接使用demo中的notify.php,重写notify.php,继承WxPayNotify(可参考微信api),具体如下: require_once "WxPay.Api.php&q ...

  7. 微信JSApi支付~订单号和微信交易号

    返回目录 谈谈transactionId和out_trade_no 前一篇微信JSApi支付~坑和如何填坑文章反映不错,所以又写了个后篇,呵呵. 每个第三方在线支付系统中都会有至少两类订单号,其一为支 ...

  8. 微信支付报出 商户订单号重复 错误问题

    问题描述: 使用微信支付时,在支付页面,由于用户第一次点击了取消或余额不足等原因,没有进行支付.这时,订单已经生成,订单状态为"待支付",当用户继续支付时,微信报出了"2 ...

  9. 微信公众号消息推送,注册成功,支付成功,积分余额变化

    只要能拿到openid,什么都好办,很简单 趁着失业了更新一下代码,做做笔记 支付成功回调开始写,不知道怎么获取openid再看看其他博客 //支付回调接口(微信异步会通知)notify_url 配置 ...

最新文章

  1. 这个牛逼技术你可千万别学!
  2. java时序图工具_基于时序数据库,实现百亿级话单实时全景监控分析
  3. ROS2学习(七).ROS概念 - ROS客户端库(Ros Client Library)
  4. 在单文档中显示我的第一个对话框
  5. 每年一波FPGA系列新品,这次Achronix专为AI/ML应用打造……
  6. Vue+Mock.js模拟登录和表格的增删改查
  7. msmq 发送到远程专用队列不存在_不知道消息中间件是什么?RabbitMQ从头到尾详解介绍...
  8. Java 设计模式之Bridge桥接模式
  9. Node.js nrm
  10. python抓取网页电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...
  11. 昆明北大附中2021高考成绩查询入口,昆明高考成绩单:昆明多所高中高考数据来啦!...
  12. Linux vim编辑器简单使用之二:vim操作快捷键、小技巧
  13. Ubuntu 20.04 环境下 PyCharm 输入框不跟随光标问题
  14. Telink 825x 蓝牙开发笔记2
  15. Mac 自带 输入法 无法打出 一些汉字 生僻字 的问题,解决办法。
  16. 华为云:云江湖中的“武当派”
  17. becon帧 wifi_beacon帧
  18. linux ssh motd 颜色,ubuntu ssh登录的时候motd被打印了两次
  19. 7.07亿TPC-C背后的技术突破,OceanBase研究成果入选VLDB
  20. 山东大学软件过程管理复习纲要

热门文章

  1. 链表——24. 两两交换链表中的节点
  2. [BZOJ 3653] 谈笑风生
  3. [TI TDA4 J721E]开发板网络调试功能及开机自动配置网络
  4. 【python爬虫】easyocr识别gif图片文字
  5. 数据查询和业务流分开_一文带你了解大数据管道
  6. 老友记第一季台词打印_老友记第一季第一集台词
  7. flutter填坑之旅(环境搭建篇--mac系统)
  8. 银河麒麟V10安装虚拟机
  9. 简述sizeof和strlen的区别
  10. 渗透测试-流量加密之冰蝎蚁剑