摘要:对于微信支付订单以及退款订单可以根据微信支付的流水号进行查询。
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 PaymentQueryContext; use PaymentCommonPayException; use PaymentConfig; $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 | 付款描述 | 付款时候的描述 | 是 |
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/21899.html
摘要:项目版本微信的退款操作,通过封装与前面支付宝退款除了配置文件,基本一样。微信仅能每次退款笔如果想要实现一次退订多笔订单,可在客户端通过循环来处理。 payment 项目2.0版本 微信的退款操作,通过封装与前面支付宝退款除了配置文件,基本一样。 退款代码如下: use PaymentRefundContext; use PaymentCommonPayException; use P...
摘要:是金额企业付款金额,单位为元是企业付款描述信息企业付款操作说明信息。 payment 项目2.0版本 这个功能与支付宝的批量付款到支付宝帐号功能类似。但是当前支付宝这个接口已经停止审核了。 当前很多提问平台就用到了这两个平台。比如[来问医生],你提的问题如果被人看了。医生得0.5元,你得0.5元。然后累积够1元后,[来问医生]就会通过微信的企业付款功能给你的微信余额增加1元。 代码调用...
摘要:注意交易时间超过一年的订单无法提交退款微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。 本文是【浅析微信支付】系列文章的第八篇,主要讲解商户如何处理微信申请退款、退款回调、查询退款接口,其中有一些坑的地方,会着重强调。 浅析微信支付系列已经更新七篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支付:查询订单和关闭订单 浅析微信支付:支...
摘要:本文是浅析微信支付系列文章的第九篇,主要讲解商户下载对账单接口和资金账单接口的实现和一些注意事项。注意微信侧未成功下单的交易不会出现在对账单中。 本文是【浅析微信支付】系列文章的第九篇,主要讲解商户下载对账单接口和资金账单接口的实现和一些注意事项。 浅析微信支付系列已经更新九篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支付:申请退款、退款回调接口、查询退款 浅析微信支付:查询订...
摘要:支付流程以上是微信支付的流程用户进入选择商品进行购买,在内部结算时生成用户本系统订单待支付状态,此时返回订单信息与支付方式列表用户确认金额无误,并选择支付方式。 支付流程 showImg(https://segmentfault.com/img/bVytNT?w=894&h=1042); 以上是微信app支付的流程: 用户进入app选择商品进行购买,在app内部结算时生成用户本系统订...
阅读 3970·2021-11-16 11:44
阅读 5197·2021-10-09 09:54
阅读 2033·2019-08-30 15:44
阅读 1680·2019-08-29 17:22
阅读 2755·2019-08-29 14:11
阅读 3391·2019-08-26 13:25
阅读 2325·2019-08-26 11:55
阅读 1597·2019-08-26 10:37