微信小程序开发-微信支付退款功能【附有完整代码】

之前有写过详细的微信支付功能:微信支付

我们使用weixin-java-pay的jar包等,配置上的流程同微信支付,可以看上面的文章。
退款使用的WxPayService类的refundV3方法。使用该方法需要在微信支付配置的基础上加上:apiclient_key.pem 证书文件、 apiclient_cert.pem证书文件、apiV3 秘钥值的配置
在这里插入图片描述

1、下载API证书,并放到程序的指定位置
在这里插入图片描述
按照指引下载后解压内容如下,放到程序的resource下面
在这里插入图片描述
放置的程序路径如下:
在这里插入图片描述

2、在yml配置文件中定义

wechat:appid: secret: # 商户mchId: # 秘钥mchKey: apiV3Key: # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)keyPath: classpath:apiclient_cert.p12privateKeyPath: classpath:apiclient_key.pemprivateCertPath: classpath:apiclient_cert.pem#JSAPI--公众号支付    NATIVE--原生扫码支付   APP--app支付tradeType: JSAPInotifyUrl: 

3、在原有的WxProperties和WxConfig中对WxPayService配置的内容中进行新增内容。
WxProperties:
在这里插入图片描述

WxConfig:
在这里插入图片描述
4、调用退款方法定义以及调用

 /*** 微信支付退款* @param orderNo* @param amount* @return*/public Result<WxPayRefundV3Result> rebackPay(String orderNo,Integer amount){Result<WxPayRefundV3Result> res = new Result<WxPayRefundV3Result>();//微信支付-申请退款请求参数WxPayRefundV3Request request = new WxPayRefundV3Request();WxPayRefundV3Request.Amount am = new WxPayRefundV3Request.Amount();am.setTotal(amount);//原订单金额//退款币种am.setCurrency("CNY");//退款金额 单位为分am.setRefund(amount);//金额信息request.setAmount(am);//transaction_id:微信支付订单号request.setTransactionId(orderNo);//商户订单号request.setOutRefundNo("return_"+orderNo);request.setNotifyUrl(this.wxPayService.getConfig().getPayScoreNotifyUrl());//回调地址WxPayRefundV3Result result;try {//调用微信V3退款APIresult = wxPayService.refundV3(request);System.out.println("***************************退款:"+result.toString());String status = result.getStatus();switch (status) {case "SUCCESS":res.success("退款成功");break;case "CLOSED":res.success("退款关闭");break;case "PROCESSING":res.success("退款处理中");break;case "ABNORMAL":res.success("退款异常");break;default:res.error("受理失败");break;}res.setResult(result);} catch (Exception e) {e.printStackTrace();res.error("申请退款失败,"+e.getMessage());}return res;}

调用:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/175947.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx 部署多个安全域名,多个服务【工作记录】

以下是本人通过Docker 部署的Nginx挂载出来的文件目录 先看下 nginx.conf 配置文件内容&#xff1a;如下 ps&#xff1a;当前文件就是安装后的初始内容&#xff0c;无修改。主要关注最后一行 include /etc/nginx/conf.d/*.conf;表示引入其他目录下的.conf配置文件&#xff1b;…

【Amazon】跨AWS账号资源授权存取访问

文章目录 一、实验框架图二、实验过程说明三、实验演示过程1、在A账号中创建S3存储桶2、在A账号创建S3存储桶访问策略3、在A账号创建信任开发账号的角色4、在B账号为用户添加内联策略5、在B账号中切换角色&#xff0c;以访问A账号中的S3资源 四、实验总结 一、实验框架图 本次…

论文阅读 - Hidden messages: mapping nations’ media campaigns

论文链接&#xff1a; https://link.springer.com/content/pdf/10.1007/s10588-023-09382-7.pdf 目录 1 Introduction 2 The influence model 2.1 The influence‑model library 3 Data 4 Methodology 4.1 Constructing observations 4.2 Learning the state‑transiti…

040-第三代软件开发-全新波形抓取算法

第三代软件开发-全新波形抓取算法 文章目录 第三代软件开发-全新波形抓取算法项目介绍全新波形抓取算法代码小解 关键字&#xff1a; Qt、 Qml、 抓波、 截获、 波形 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object …

vue3+jsx+antd的插槽写法之一

如果在jsx里面直接这样按照官方的写法是会报错的 正确写法是&#xff1a;

Azure - 自动化机器学习AutoML Azure使用详解

目录 一、AutoML是如何工作的&#xff1f;二、何时考虑AutoML&#xff1f;三、AutoML助力训练与集成过程四、实战案例五、总结 自动化机器学习&#xff0c;简称为AutoML&#xff0c;旨在将机器学习模型的开发中繁琐且重复的任务自动化。这使得数据科学家、分析师以及开发人员能…

stable-diffusion-webui环境部署

stable-diffusion-webui环境部署 1. 环境创建2. 安装依赖库3.下载底模4. 获取lora参数文件5.运行代码6. 报错信息报错1报错2 1. 环境创建 创建虚拟环境 conda create -n env_stable python3.10.0进入虚拟环境 conda activate env_stableclone源码 git clone https://github.com…

力扣 三数之和 双指针 java

Problem: 15. 三数之和 时间复杂度: O ( n 2 ) O(n^2) O(n2) &#x1f351; AC code class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res new ArrayList<>();int len nums.length; if(len < 3…

如何在【逻辑回归】中优化控制正则化程度的超参数C

一.逻辑回归基本介绍 逻辑回归也称作logistic回归&#xff0c;是一种广义的线性回归分析模型&#xff0c;主要是用来解决二分类问题&#xff08;也可以解决多分类问题&#xff09;。通过训练集来训练模型&#xff0c;并在训练结束后对测试集进行分类。 通过激活函数&…

MATLAB R2018b详细安装教程(附资源)

云盘链接&#xff1a; pan.baidu.com/s/1SsfNtlG96umfXdhaEOPT1g 提取码&#xff1a;1024 大小&#xff1a;11.77GB 安装环境&#xff1a;Win10/Win8/Win7 安装步骤&#xff1a; 1.鼠标右击【R2018b(64bit)】压缩包选择【解压到 R2018b(64bit)】 2.打开解压后的文件夹中的…

轧钢测径仪在螺纹钢负公差轧制中的四大作用!

螺纹钢为什么要进行负公差轧制&#xff1f; 在标准允许范围内&#xff0c;越接近负公差&#xff0c;那么在合格规范内&#xff0c;所损耗的原材料越少&#xff0c;而螺纹钢轧制速度快&#xff0c;更是以吨的量进行成交&#xff0c;因此控制的原材料积少成多&#xff0c;对其成本…

数字展厅搭建平台要具备哪些功能,如何选择数字展厅搭建平台

引言: 数字展厅搭建平什台是现代营销中不可或缺的重要工具之一。它可以帮助企业打造个性化、多媒体、互动性强的展示空间&#xff0c;吸引、引导和留住目标用户。在选择数字展厅搭建平台时&#xff0c;我们需要考虑各方面的功能和性能&#xff0c;以确保能够满足企业的需求并取…

三十九、CANdelaStudio实践-19服务(ReadDTCInformation)

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的19服务(ReadDTCInformation)编辑,欢迎…

【k8s】5、资源管理命令-声明式

目录 一、 yaml和json介绍 1、yuml语言介绍 2、k8s支持的文件格式 3、yaml和json的主要区别 二、声明式对象管理 1、命令式对象配置 2、声明式对象配置 3、声明式对象管理命令介绍 三、编写资源配置清单 1、 编写yaml文件 2、 启动并查看资源 3、创建service服务对外…

知识付费系统的技术架构和设计原则

知识付费系统的成功取决于其坚实的技术架构和设计原则。本文将探讨创建一个高效、可扩展和安全的知识付费系统所需的技术要素和设计原则&#xff0c;并提供一些示例代码&#xff0c;以帮助您开始构建自己的系统。 技术架构 1. 后端服务 知识付费系统的后端服务是其核心组成部分…

堆排序 详解+图解

堆排序是一种基于堆数据结构的排序算法&#xff0c;它的基本思想是将待排序序列构造成一个最大堆&#xff0c;然后将堆顶元素和堆底元素交换&#xff0c;再把堆的大小减一&#xff0c;使堆顶元素下沉到合适的位置&#xff0c;重复以上操作&#xff0c;直到整个序列有序。 堆排…

Python的错误和异常处理

一、错误和异常 编程中出现的错误大致可以分为两类&#xff1a;错误和异常。 (一)错误 错误又可以分为两类&#xff1a;语法错误和逻辑错误。 1. 语法错误 语法错误又称解析错误&#xff0c;它是指在编写程序时&#xff0c;程序的语法不符合Python语言的规范&#xff0c;导致…

【Python百练——第2练】使用Python做一个猜数字小游戏

&#x1f490;作者&#xff1a;insist-- &#x1f490;个人主页&#xff1a;insist-- 的个人主页 理想主义的花&#xff0c;最终会盛开在浪漫主义的土壤里&#xff0c;我们的热情永远不会熄灭&#xff0c;在现实平凡中&#xff0c;我们终将上岸&#xff0c;阳光万里 ❤️欢迎点…

Pycharm 搭建 Django 项目,看完这一篇就够了

1. 安装需求 在使用 python 框架 Django 需要注意下面事项 Pycharm 版本是专业版而不是社区版本Pycharm 配置好了 python 解释器 &#xff08;一般我们现在用的都是python3&#xff09;我自己使用的是 Pycharm 版本是2020.1.2 2. 准备工作 2.1 新建项目 首先我们打开 Pycharm …

超融合数据库:解锁全场景数据价值的钥匙

前言 近日&#xff0c;四维纵横对外官宣已完成上亿元 B 轮融资。作为超融合数据库理念的提出者&#xff0c;三年来 YMatrix 持续在超融合数据库领域中保持精进与迭代&#xff0c;对于超融合数据库在行业、场景中的应用和理解也更为深刻。 本篇文章&#xff0c;我们将基于 YMa…