10.PHP接入微信退款接口

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 订单金额 订单总金额,单位为元,最多两位小数
时间: 2024-10-03 22:40:16

10.PHP接入微信退款接口的相关文章

调用微信退款接口问题备忘

前段时间突然微信退款不能用了,我还以为是我新发布的版本有问题,后来一查居然是这个原因,记录一下 IIS设置错误,未加载用户配置文件 解决办法:找到网站使用的应用程序池-->右击-->高级设置-->打开如下图-->在加载用户配置文件选择true 奇怪的是,应用池最初我也没有配置,刚开始使用的时候居然是可以的,奇怪.

接入微信分享接口步骤

一.申请公众号 获取开发者ID(AppID)和开发者密码(AppSecret) 通过AppID和AppSecret获得access_token 二.认证 1.营业执照 2.组织机构代码证 获得高级接口权限 三.绑定域名 1.微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名": 2.下载文件MP_verify_NKeyegDEdGHxmnKJ.txt放置在域名根目录下用来验证 3.在安全中心设置开发者IP白名单,否则无法获取ac

调用微信退款接口或发红包接口时出现System.Security.Cryptography.CryptographicException: 出现了内部错误 解决办法

我总结了一下出现证书无法加载的原因有以下三个 1.证书密码不正确,微信证书密码就是商户号 解决办法:请检查证书密码是不是和商户号一致 2.IIS设置错误,未加载用户配置文件 解决办法:找到网站使用的应用程序池-->右击-->高级设置-->打开如下图-->在加载用户配置文件选择true 3.如果以上两个方案都不能解决问题,就有可能是加载证书时没有给定证书存储标识 解决方法:在加载证书方法时使用以下方法,请注意第三个参数 X509Certificate2 cer = new X509C

调用微信退款接口时出现System.Security.Cryptography.CryptographicException: 出现了内部错误 解决办法

我总结了一下出现证书无法加载的原因有以下三个 1.证书密码不正确,微信证书密码就是商户号 解决办法:请检查证书密码是不是和商户号一致 2.IIS设置错误,未加载用户配置文件 解决办法:找到网站使用的应用程序池-->右击-->高级设置-->打开如下图-->在加载用户配置文件选择true 3.如果以上两个方案都不能解决问题,就有可能是加载证书时没有给定证书存储标识 解决方法:在加载证书方法时使用以下方法,请注意第三个参数 X509Certificate2 cer = new X509C

调用微信退款接口时,证书验证出现System.Security.Cryptography.CryptographicException: 出现了内部错误 解决办法

1.证书密码不正确,微信证书密码就是商户号 解决办法:请检查证书密码是不是和商户号一致 2.IIS设置错误,未加载用户配置文件 解决办法:找到网站使用的应用程序池-->右击-->高级设置-->打开如下图-->在加载用户配置文件选择true 3.如果以上两个方案都不能解决问题,就有可能是加载证书时没有给定证书存储标识 解决方法:在加载证书方法时使用以下方法,请注意第三个参数 X509Certificate2 cer = new X509Certificate2(cerPath, pa

6. PHP接入支付宝有密退款接口

这个接口主要用于退款操作.之前没有接入该功能时,商城用户如果想要退款,我们需要先查到对应用户的支付流水号,然后写退款申请给财务,财务到支付宝进行查询.完了之后原路退回.然后告诉程序,程序再去修改订单状态. 这样的流程不仅麻烦.而且充满不安全性.如果程序误操作(或者是心情太差了),操作为其他人员,那么这将会为企业带来很大的风险. SDK调用 支付宝支持多笔退款. // 支付宝配置信息 $aliconfig = [ 'partner' => '2088xxxxx', 'md5_key' => 'x

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_

微信支付退款接口

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); X509Certificate cer = new X509Certificate(cert, password,X509KeyStorageFlags.PersistKeySet|X509KeyStorageFlags.Exportable|X509Ke

php微信支付接口开发程序(一)

阅读对象 本文阅读对象:商户系统(在线购物平台.人工收银系统.自动化智能收银系统或其他)集成微信支付涉及的技术架构师,研发工程师,测试工程师,系统运维工程师. 支付模式 1. 刷卡支付 刷卡支付是用户展示微信钱包内的“刷卡条码/二维码”给商户系统扫描后直接完成支付的模式.主要应用线下面对面收银的场景. 2. 扫码支付 扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式.该模式适用于PC网站支付.实体店单品或订单支付.媒体广告支付等场景. 3. 公众号支付 公众号