PHP 支付宝退款操作+注意事项 (2019-06-06)

2024-06-07 17:18

本文主要是介绍PHP 支付宝退款操作+注意事项 (2019-06-06),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

♨ 背景

  • 这两天在做 APP下的支付宝支付功能,涉及到其 退款操作 功能,所以在应用申请的等待时间里就已经做了代码的编写 ,在此记录一下几个注意的事项,希望能帮到各位道友

多少提一下:毕竟我的前提操作是 App支付快速接入,虽然理论上不会影响

  • 开发环境
	> ThinkPHP 框架:	ThinkPHP5.1.2> PHP 版本:			php-5.6.32(>= 及以上)> 服务器 :			Nginx> 线上系统:			CentOS7.1
  • 支付宝交易退款开发文档:alipay.trade.refund(统一收单交易退款接口)
    注意阅读人家官方开头的 应用场景介绍

  • App支付服务端 DEMO & SDK
    根据我的语言要求,下载的当然是 PHP版资源

☄ 代码实现

  1. 首先,自然是顺利把 DEMO & SDK 的源码包整合到自己的框架中,以我的框架为例如下图,同时要注意对使用到的类设置 namespace 空间,以保证顺利访问
  2. 进行核心代码的编写,可对应文档中的请求示例,如下为我自行整理的代码:
    /*** 统一收单交易退款接口* @param string $out_trade_no 订单支付时传入的商户订单号* @param string $refund_fee 需要退款的金额* @return array*/public function payRefundAli($out_trade_no = "", $refund_fee = "0.00"){$aop = new AopClient ();$aop->gatewayUrl = $this->gatewayUrl;$aop->appId = $this->appID;$aop->rsaPrivateKey = $this->rsaPrivateKey;$aop->alipayrsaPublicKey = $this->alipayrsaPublicKey;$aop->apiVersion = '1.0';$aop->signType = 'RSA2';$aop->postCharset = 'utf-8';$aop->format = 'json';$request = new AlipayTradeRefundRequest ();//TODO 方便多次退款的设置$out_request_no = $out_trade_no.rand(1000,9999);$request->setBizContent("{" .//订单支付时传入的商户订单号,不能和 trade_no同时为空。"\"out_trade_no\":\"$out_trade_no\"," .//支付宝交易号,和商户订单号不能同时为空//"\"trade_no\":\"2019060622001445431042039169\"," .//需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数 c"\"refund_amount\":$refund_fee," .//标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传"\"out_request_no\":\"$out_request_no\"" ."  }");$result = $aop->execute($request);//var_dump($result);$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";$resultCode = $result->$responseNode->code;if (!empty($resultCode) && $resultCode == 10000) {$status = 1;$message = "退款成功";} else {$status = 0;$message = $result->alipay_trade_refund_response->sub_msg;}//echo $message;return showMsg($status,$message); //这是我自己的封装方法,可忽略...}
  1. 根据自己的具体业务进行调用或修改即可,测试可行!!!

☄ 注意事项

  1. 当然是最基本的支付宝应用配置信息,比如 appID、rsaPrivateKey、alipayrsaPublicKey
  2. 尤其注意 请求参数的集合 biz_content 的参数补充,切记最后一个参数后面 不要有 逗号!!!
  • 我就是粗心大意,找了一天查不出原因,一直报错 ( 可算长记性了 ) :

40004: ACQ.INVALID_PARAMETER "参数无效"


3. 对于同一订单的多次退款操作,需要注意添加 out_request_no 参数,不然会提示:

ACQ.REFUND_AMT_NOT_EQUAL_TOTAL “撤销或退款金额与订单金额不一致”

  • 正确配置后,多次退款记录如下:

☞ 附录

    1. 因为觉得退款操作简单,所以先进行整理编辑下;
      对于支付逻辑,等端午节过后再做整理 —— APP(UniAPP) 支付宝支付操作指导 + 遇到的坑(PHP实现)
    1. 建议:进行支付宝退款时,要记录官方服务器反馈的信息,方便后期排查验证
      如下为退款申请,反馈所得的信息如下:
{"code": "10000","msg": "Success","buyer_logon_id": "zha***@sina.com","buyer_user_id": "2088702838245430","fund_change": "Y","gmt_refund_pay": "2023-09-08 10:28:02","out_trade_no": "2023090810253542281","refund_detail_item_list": [{"amount": "0.01","fund_channel": "PCREDIT"}],"refund_fee": "0.01","send_back_fee": "0.01","trade_no": "2023090822001445431424023419"
}

这篇关于PHP 支付宝退款操作+注意事项 (2019-06-06)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039797

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时