资讯专栏INFORMATION COLUMN

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

leonardofed / 1626人阅读

摘要:之前没有接入该功能时,商城用户如果想要退款,我们需要先查到对应用户的支付流水号,然后写退款申请给财务,财务到支付宝进行查询。调用支付宝支持多笔退款。

payment 项目2.0版本

这个接口主要用于退款操作。之前没有接入该功能时,商城用户如果想要退款,我们需要先查到对应用户的支付流水号,然后写退款申请给财务,财务到支付宝进行查询。完了之后原路退回。然后告诉程序,程序再去修改订单状态。

这样的流程不仅麻烦。而且充满不安全性。如果程序误操作(或者是心情太差了),操作为其他人员,那么这将会为企业带来很大的风险。

SDK调用

支付宝支持多笔退款。

// 支付宝配置信息
$aliconfig = [
    "partner"   => "2088xxxxx",
    "md5_key"   => "xxxxxxxxxxxx",
    "rsa_private_key"   => dirname(__FILE__) . "/rsa_private_key.pem",
    "notify_url"    => "http://test.helei.com/pay-notify.html",
    "return_url"    => "http://test.helei.com/return-url.html",
    "time_expire"    => "14",
];

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


// 退款数据
$reundData = [
    "refund_no" => createPayid(),
    "refund_data"   => [
        ["transaction_id" => "2016011421001004330041239366", "amount"   => "0.01", "refund_fee" => "0.01", "reason" => "测试退款1"],
        ["transaction_id" => "2016031521001004330271745693", "amount"   => "0.01", "refund_fee" => "0.01", "reason" => "测试退款2"],
    ],
];


$refund = new RefundContext();
try {
    $refund->initRefund(Config::ALI, $aliconfig);
    $ret = $refund->refund($reundData);
} catch (PayException $e) {
    echo $e->errorMessage();exit;
}

// 跳转支付宝
header("Location:{$ret}");

以上请求发送完毕后,会跳转到生成的url。界面如下:

这时候,只需要要输入支付密码。就可完成退款。确认完毕后会自动完成异步通知。异步通知数据内容在 支付的回调统一处理 已经说明。

备注:支付宝支持一次退款多笔。也可单次退款一笔,请自行根据情况进行设置。

请求参数
参数 参数名 参数说明 是否必须
refund_no 退款单号 由商家自定义生成,可由字母、数字组成
refund_data 退款数据 详细内容见后表,它是一个数组

refund_data数据

参数 参数名 参数说明 是否必须
transaction_id 支付宝流水号 支付成功时,异步通知时有返回
amount 订单总金额 订单总金额,应该等于支付时的金额
refund_fee 退款金额 退款金额,不能超过支付的总金额
reason 退款理由 退款理由

一笔订单,可分多次进行退款处理。比如:一笔支付100元的订单。可分为10次,每次退款10元。该思路可扩展一下,就可实现提现功能(原路返回),想要具体了解提现功能,可咨询我!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21866.html

相关文章

  • PHP接入支付有密批量转款接口

    摘要:调用支付宝配置信息转款接口,必须配置以下两项生成转款单号便于测试转款数据愚不可及测试批量转款跳转支付宝这个接口也是需要管理员输入支付密码,才能够完成,完成后也会回调。是收款账号姓名收款方的支付宝账户名。支付宝原接口地址 payment 项目2.0版本 这个接口蛮有用的,不过现阶段支付宝已经停止审核啦!微信的转账功能还可以继续使用。企业可以转账到其他支付宝账户。对于企业活动非常有帮助,...

    z2xy 评论0 收藏0
  • 个人免执照申请官方支付接口,即时到账!附支付demo

    摘要:我们知道要想使用支付宝,要具备以下条件具备个体工商户营业执照或者企业营业执照。而且申请这个接口只需要个人支付宝扫码授权,填写一些基本资料即可。 我们知道要想使用支付宝,要具备以下条件 具备个体工商户营业执照或者企业营业执照。 这样才能申请到支付宝接口的,对于个人开发者,根本就是一个大门槛,为了支付而去注册一家公司,有点成本高了,那么个人可以用支付宝吗?在这之前不可以,现在可以了!因为支...

    Tony_Zby 评论0 收藏0
  • PHP接入微信退款接口

    摘要:项目版本微信的退款操作,通过封装与前面支付宝退款除了配置文件,基本一样。微信仅能每次退款笔如果想要实现一次退订多笔订单,可在客户端通过循环来处理。 payment 项目2.0版本 微信的退款操作,通过封装与前面支付宝退款除了配置文件,基本一样。 退款代码如下: use PaymentRefundContext; use PaymentCommonPayException; use P...

    caspar 评论0 收藏0
  • 浅析微信支付支付验收示例和验收指引

    摘要:本文是浅析微信支付系列文章的第十一篇,主要讲解支付验收示例和验收指引。为保证商户接入质量,提升交易安全及用户体验,微信支付的合作服务商在正式上线交易前,必须先根据本文指引完成验收。 本文是【浅析微信支付】系列文章的第十一篇,主要讲解支付验收示例和验收指引。 浅析微信支付系列已经更新十一篇了哟~,没有看过的朋友们可以看一下。 浅析微信支付:如何使用沙箱环境测试 浅析微信支付:下载对账单...

    Cympros 评论0 收藏0
  • 浅析微信支付:前篇大纲

    摘要:浅析微信支付前篇大纲本文是浅析微信支付系列文章的第一篇,主要会介绍一下为何写下这个系列以及对于微信支付的一点小经验,与君共勉。下面讲一下我是如何去学习微信支付的。 浅析微信支付:前篇大纲 本文是【浅析微信支付】系列文章的第一篇,主要会介绍一下为何写下这个系列以及对于微信支付的一点小经验,与君共勉。 以下会分几个步骤讲一下我学习微信支付的过程,也是一部辛酸史,也是希望朋友们不要再次跌进...

    mayaohua 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<