payment 项目2.0版本

微信并未提供一个统一的查询接口。对应每种查询均需要不同的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 付款描述 付款时候的描述

微信支付订单、退款订单、转款订单的查询相关推荐

  1. php微信支付分取消订单,PHP实现微信支付和退款

    这次给大家带来PHP实现微信支付和退款,PHP实现微信支付和退款的注意事项有哪些,下面就是实战案例,一起来看一下. 之前有写过几篇文章将微信支付和退款: 1.PHP实现微信支付(jsapi支付)流程 ...

  2. springboot之微信支付与退款

    基于springboot实现小程序微信支付与退款 最近需要再写小程序商城,无可避免的需要用到微信支付与商品售后退款等功能.于是研究了一些大佬的代码之后整合出了这个比较简单的微信支付与退款. 相关内容引 ...

  3. java微信支付v3系列——8.微信支付之退款成功回调

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  4. 用java实现微信支付,退款,部分退款服务端

    由于公司业务需要,最近搞微信退款功能,今天抽空在此记录一下,以后用到也可以到这来看一眼.废话不多说,进入正题. 微信支付以及付款呢,先要有个证书,不清楚的,还要有证书,可以去微信平台看证书怎么下载 h ...

  5. 关于微信支付的退款那些事

    关于微信支付的退款那些事 微信支付的退款 需要双向证书 一个是操作人的电脑上  需要安装的证书 以p12为结尾的 另外一个证书是2个,需要放到服务器上 微信支付的退款,在请求接口的时候,会在发起人的电 ...

  6. 微信支付-“申请退款”接口遇到curl出错,错误码:58解决方案

    微信支付后 退款,接口遇到curl出错,错误码:58 这个问题基本上是证书没对应上(微信支付不需要申请证书,退款要用到证书),证书要去微信商户号后台(账户中心-API安全-申请证书)下载,已经下载过忘 ...

  7. 微信退款返回58 linux,小程序微信支付申请退款返回cUrl错误,错误码:58

    2019-04-03 15:15:29 如何看待微信公开课小程序热门讨论「小程序微信支付申请退款返回cUrl错误,错误码:58」 摘要:小程序微信支付申请退款返回cUrl错误,错误码:58 展开:调用 ...

  8. Springboot----项目整合微信支付(引入延迟队列实现订单过期取消以及商户主动查单)

    前言 目前更新的是Springboot项目整合微信支付系列的文章,可以在我的主页中找到该系列其他文章,这一系列的文章将会系统介绍如何在项目中引入微信支付的下单.关单.处理回调通知等功能.由于前面创作经 ...

  9. php微信支付分取消订单,微信支付PHP开发教程五关闭订单

    重要:本文最后更新于2019-06-01 08:22:14,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗. 前面我们已经完成了微信支付的正常下单,并且能够正常收款.如果用户在支付过程 ...

  10. 基于微信支付、退款的一个取消预约的方案

    一.前提 本方案是基于 「微信非付款码支付」 进行设计的. 二.业务场景 首先,大家先大概了解下「预约」和「取消预约」两个流程. 预约 取消预约 三.遇到的问题 试想如下场景: 用户预约,拉起微信支付 ...

最新文章

  1. mysqlbinlog_flashback工具体验
  2. linux进程cpu资源分配命令nice,renice,taskset
  3. 振奋!中国正式进入5G元年;华为5G俄罗斯签下大单;王坚进入工程院院士第二轮评审...
  4. python3urllib常见使用_Python3 urllib常用操作
  5. 四个修改Docker默认存储位置的方法
  6. httpservletrequest获取不到登录的session_cookie和session是怎么交互的?
  7. CocosCreator休闲游戏发布到字节跳动平台
  8. hbase的region分区
  9. dubbo源码解析之服务发布与注册
  10. Java为什么要面向接口编程
  11. 【原创】关于改变电脑默认安装地址后桌面快捷键显示“指定路径不存在”错误的解决方法之一
  12. shuipfcms二次开发之图片上传
  13. pc_win10_x64安装ncnn,并使用vulkan
  14. Java基础知识精华部分(个人总结)
  15. transformer中QKV的通俗理解(渣男与备胎的故事)
  16. java中内部窗格这么用,JTabbedPane选项窗格的使用
  17. java-net-php-python-06白茶销售系统计算机毕业设计程序
  18. Python 文件I/Oday14
  19. linux 软raid原理,RAID原理基础及Linux下软件RAID配置
  20. VMware 11虚拟机安装Mac OS X 10.10

热门文章

  1. 编译原理实验三 语义分析程序设计与实现
  2. 商品规格表设计_超市商品配置表的管理
  3. 登陆页面的获取验证码
  4. Kubernetes滚动更新(无中断平滑发布)
  5. Microsoft Visual Studio 2010
  6. matlab dock什么意思,dock栏是什么意思? 电脑dock栏使用方法
  7. 威联通ts 532x 篇七 修改shell 命令行 为 zsh + oh-my-zsh
  8. python 自动化测试面试题及答案_自动化测试面试题及答案大全(1)
  9. linux安装hostmonitor教程,HOSTMONITOR使用教程和界面介绍
  10. 海利普变频器电路图 HLP-A原理图 图纸pdf格式