您的位置:首页 > 移动开发 > 微信开发

10.PHP接入微信退款接口

2016-08-16 11:03 489 查看
payment 项目2.0版本

微信的退款操作,通过封装与前面支付宝退款除了配置文件,基本一样。

退款代码如下:

use Payment\RefundContext;
use Payment\Common\PayException;
use Payment\Config;

//  生成退款单号 便于测试
function createPayid()
{
return date('Ymdhis', time()).substr(floor(microtime()*1000),0,1).rand(0,9);
}

$config = [
'app_id'    => 'wxa244db59a34996fc',  // 公众账号ID
'mch_id'    => '1331302101',// 商户id
'md5_key'   => 'adslkfjiKQJLAIQLJ393201482333333',// 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',
];

// 退款数据
$reundData = [
'refund_no' => createPayid(),
'refund_data'   => [
['transaction_id' => '4007572001201607098672633287', 'amount'   => '5', 'refund_fee' => '5', 'reason' => '微信测试金额退款'],
],
];

$refund = new RefundContext();
try {
// 微信退款
$type = Config::WEIXIN;
$refund->initRefund(Config::WEIXIN, $wxconfig);

$ret = $refund->refund($reundData);
} catch (PayException $e) {
echo $e->errorMessage();exit;
}

var_dump($ret);


当前sdk支付宝可一次退款多笔数据。微信仅能每次退款1笔(如果想要实现一次退订多笔订单,可在客户端通过循环来处理。)

接下来解释下相关的配置信息

微信的配置文件解释参考 微信的三种支付方式接入:APP支付、公众号支付、扫码支付 中的微信配置信息。

请求参数

参数参数名参数说明是否必须
transaction_id微信交易号微信系统中的交易流水号,可用于查询订单状态
amount总金额微信交易对应的交易总金额
refund_fee退款金额本次申请的退款金额,退款金额不能大于总金额
reason退款理由退款的理由,可在用户端查看到

响应数据

参数参数名参数说明是否必须
is_success成功标识请求是否成功,T:成功,F:失败
error错误提示只有is_success=F时才返回
response响应数据查询成功后返回的数据,一个数组,is_success=T时返回
response 数据描述

参数参数名参数说明是否必须
transaction_id微信订单号微信订单号,下单成功后,微信返回
order_no商户订单号商户系统内部的订单号
refund_no商户退款单号商户退款单号
refund_id微信退款单号微信退款单号
refund_fee申请退款金额退款总金额,单位为元(已被我处理),可以做部分退款
amount订单金额订单总金额,单位为元,最多两位小数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信 微信退款 退单