PHP微信根据订单号查询支付结果,9. PHP接入微信支付订单、退款订单、转款订单的查询...
微信并未提供一个统一的查询接口。对应每种查询均需要不同的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接入微信支付订单、退款订单、转款订单的查询...相关推荐
- 微信上的Siri:小i机器人首次接入微信语音API
微信上的Siri:小i机器人首次接入微信语音API 不久前我们曾介绍过微信开放系统API,首次和印象笔记合作,可以将聊天内容无缝保存到印象笔记.除印象笔记外,智能语音助手小i机器人也是首批获得微信系统 ...
- 【Node.js 微信公众号实战】1.Node.js 接入微信公众平台开发
文章目录: 1.Node.js 接入微信公众平台开发 2.Node.js access_token的获取.存储及更新 3.Node.js 自定义微信菜单 ...
- 【微信小程序】2、SpringBoot整合WxJava接入微信客服
上篇文章中已经开启了微信小程序的消息推送:[微信小程序]1.SpringBoot整合WxJava开启消息推送,接下来我们就对微信中用户发送的客服消息,转发到微信客服来处理回复 1.添加微信客服 登录微 ...
- 聚合支付满足各行业接入多种支付通道
商业的本质是商品和服务的交换和流通,人类的商业行为即信息流+物流+资金流的交换和流通的过程.互联网对现代商业的影响深远,但核心仍然是基于以上三种交换流通模式.谁能显著提升各个环节的效率,谁将可能成为巨 ...
- 微信公众平台-第三方平台开发(二)接入微信平台服务器
验证票据 验证票据(component_verify_ticket),在第三方平台创建审核通过后,微信服务器会向其 "授权事件接收URL" 每隔 10 分钟以 POST 的方式推送 ...
- 微信notify mysql_微信支付的notify.php中如何获取订单号(php版)
不要直接使用demo中的notify.php,重写notify.php,继承WxPayNotify(可参考微信api),具体如下: require_once "WxPay.Api.php&q ...
- 微信JSApi支付~订单号和微信交易号
返回目录 谈谈transactionId和out_trade_no 前一篇微信JSApi支付~坑和如何填坑文章反映不错,所以又写了个后篇,呵呵. 每个第三方在线支付系统中都会有至少两类订单号,其一为支 ...
- 微信支付报出 商户订单号重复 错误问题
问题描述: 使用微信支付时,在支付页面,由于用户第一次点击了取消或余额不足等原因,没有进行支付.这时,订单已经生成,订单状态为"待支付",当用户继续支付时,微信报出了"2 ...
- 微信公众号消息推送,注册成功,支付成功,积分余额变化
只要能拿到openid,什么都好办,很简单 趁着失业了更新一下代码,做做笔记 支付成功回调开始写,不知道怎么获取openid再看看其他博客 //支付回调接口(微信异步会通知)notify_url 配置 ...
最新文章
- 这个牛逼技术你可千万别学!
- java时序图工具_基于时序数据库,实现百亿级话单实时全景监控分析
- ROS2学习(七).ROS概念 - ROS客户端库(Ros Client Library)
- 在单文档中显示我的第一个对话框
- 每年一波FPGA系列新品,这次Achronix专为AI/ML应用打造……
- Vue+Mock.js模拟登录和表格的增删改查
- msmq 发送到远程专用队列不存在_不知道消息中间件是什么?RabbitMQ从头到尾详解介绍...
- Java 设计模式之Bridge桥接模式
- Node.js nrm
- python抓取网页电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...
- 昆明北大附中2021高考成绩查询入口,昆明高考成绩单:昆明多所高中高考数据来啦!...
- Linux vim编辑器简单使用之二:vim操作快捷键、小技巧
- Ubuntu 20.04 环境下 PyCharm 输入框不跟随光标问题
- Telink 825x 蓝牙开发笔记2
- Mac 自带 输入法 无法打出 一些汉字 生僻字 的问题,解决办法。
- 华为云:云江湖中的“武当派”
- becon帧 wifi_beacon帧
- linux ssh motd 颜色,ubuntu ssh登录的时候motd被打印了两次
- 7.07亿TPC-C背后的技术突破,OceanBase研究成果入选VLDB
- 山东大学软件过程管理复习纲要