官网文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4

一、下载证书

使用公众号支付申请退款需要验证商户API证书,登录微信商户平台(pay.weixin.qq.com)-->账户中心-->账户设置-->API安全,下载证书。apiclient_cert.p12是商户证书文件,除PHP外的开发均使用此证书文件。

二、使用证书

将证书放置在服务能访问的目录,但是注意以下几点:

1.证书文件不能放在web服务器虚拟目录,应放在有访问权限控制的目录中,防止被他人下载;

2.建议将证书文件名改为复杂且不容易猜测的文件名;

3.商户服务器要做好病毒和木马防护工作,不被非法侵入者窃取证书文件。

三、主要调用的api

微信退款:com.lly835.bestpay.service.impl.BestPayServiceImpl.refund(RefundRequest request)

四、代码编写

1、添加配置文件

由于是本地开发,我将证书重命名为h5.p12,放置在D:\\h5.p12路径,在application.yml文件中添加配置wechat.keyPath: D:\\h5.p12,然后将配置写入 WechatAccountConfig 对象

@Data

@Component

@ConfigurationProperties(prefix = "wechat")

public class WechatAccountConfig {

private String mpAppId;

private String mpAppSecret;

/**

* 商户id

*/

private String mchId;

/**

* 商户秘钥

*/

private String mchKey;

/**

* 商户证书路径

*/

private String keyPath;

/**

* 微信支付异步通知地址

*/

private String notifyUrl;

}

2、构造com.lly835.bestpay.service.impl.BestPayServiceImpl实例对象,并交由spring管理

@Component

public class WechatPayConfig {

@Autowired

private WechatAccountConfig wechatAccountConfig;

@Bean

public BestPayServiceImpl bestPayService () {

BestPayServiceImpl bestPayService = new BestPayServiceImpl();

bestPayService.setWxPayH5Config(wxPayH5Config());

return bestPayService;

}

@Bean

public WxPayH5Config wxPayH5Config() {

WxPayH5Config wxPayH5Config = new WxPayH5Config();

wxPayH5Config.setAppId(wechatAccountConfig.getMpAppId());

wxPayH5Config.setAppSecret(wechatAccountConfig.getMpAppSecret());

wxPayH5Config.setMchId(wechatAccountConfig.getMchId());

wxPayH5Config.setMchKey(wechatAccountConfig.getMchKey());

wxPayH5Config.setKeyPath(wechatAccountConfig.getKeyPath());

wxPayH5Config.setNotifyUrl(wechatAccountConfig.getNotifyUrl());

return wxPayH5Config;

}

}

3、controller

@Controller

@RequestMapping("/pay")

public class PayController {

@Autowired

private PayService payService;

/**

* 微信退款(需要下载证书,放置在D:\\h5.p12,然后配置地址wechat.keyPath: D:\\h5.p12)

* @param orderDTO

*/

@PostMapping

public void refund(OrderDTO orderDTO) {

payService.refund(orderDTO);

}

}

4、service实现类

@Service

@Slf4j

public class PayServiceImpl implements PayService {

@Autowired

private BestPayServiceImpl bestPayService;

@Override

public RefundResponse refund(OrderDTO orderDTO) {

RefundRequest refundRequest = new RefundRequest();

refundRequest.setOrderId(orderDTO.getOrderId());

refundRequest.setOrderAmount(orderDTO.getOrderAmount().doubleValue());

refundRequest.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5);

log.info("【微信退款】refundRequest={}", JsonUtils.toJson(refundRequest));

RefundResponse refundResponse = bestPayService.refund(refundRequest);

log.info("【微信退款】refundResponse={}", JsonUtils.toJson(refundResponse));

return refundResponse;

}

}

php微信公众号退款,微信公众号支付--4--微信退款相关推荐

  1. 微信,支付宝支付,微信公众号小程序授权等

    微信,支付宝支付,微信公众号小程序授权等 前言 微信支付 微信授权 maven依赖(更新) 前言 最近在公司也做了很多移动端项目,如今微信公众号,小程序又特别火爆,免不了要接触支付,授权这类的业务需求 ...

  2. 微信公众号中的支付宝支付与微信支付 支付宝支付问题(微信bug)

    一般,在微信公众号中的商城都是需要支持微信支付和支付宝支付的,当然,较大的公司对于鹅厂和阿里的站队就不说了,所以这里简单记录一下支付宝支付和微信支付的主要流程.说是简单介绍,这是因为确实不难,因为前端 ...

  3. php公众号提现功能,微信公众号打赏的钱怎么提现_微信公众号打赏功能_微信公众号打赏从哪里取出来...

    微信公众号打赏的钱怎么提现,微信公众号打赏功能.微信公众号之前打赏功能可以立即取现,但是最近出现了一些变动,会有人问微信公众号打赏为什么不能立刻取现?小编为大家带来了微信公众号打赏取现时间调整. 微信 ...

  4. 微信(jspai版本即公众号h5版)支付-微信下单支付及企业转账到零钱

    微信(jspai版本即公众号h5版)支付-微信下单支付及企业转账到零钱 一.后端前置条件 二.配置h5 devServer 三.后端开发代码 四.前端开发代码(uniapp) 一.后端前置条件 准备好 ...

  5. 微信公众平台对所有公众号开放自定义菜单

    据统计,微信公众号已达1000多万了,但大多数没有微信认证,且没有开发能力,为此微信公众平台开放了自定义菜单功能给所有公众号,这是微信团队年前给广大自媒体送的大礼,期待微信越来越开放 公众帐号运营者点 ...

  6. java 微信群发多图文_[Java教程]httpClient实现微信公众号消息群发

    [Java教程]httpClient实现微信公众号消息群发 0 2016-09-21 20:00:10 1.实现功能 向关注了微信公众号的微信用户群发消息.(可以是所有的用户,也可以是提供了微信ope ...

  7. 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)

    本文是[浅析微信支付]系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处. 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下. 浅析微信支付:前篇大纲 微信支付是集成在微信客户 ...

  8. vue 微信公众号支付接口_基于vue的h5项目之支付宝支付与微信支付

    本文仅记录基于vue开发h5项目过程中使用支付宝和微信支付过程中的重点与槽点,仅为前端部分,如有疏漏不正之处,请于文末评论探讨.注意:标红部分灰常重要,仔细阅读官方文档非常重要,耐心非常重要,细心非常 ...

  9. 限时团购,6.9折:《微信开发深度解析:公众号、小程序高效开发秘籍》推荐序

    全书由目 Senparc.Weixin SDK 作者苏震巍历时 2 年完成,涵盖了开发微信公众号及小程序需要用的的各项后端开发技能.技巧.避坑提示,以及 Senparc.Weixin SDK 微信公众 ...

  10. python登录并关注公众号_python微信公众号之关注公众号自动回复

    我们知道一旦使用开发者模式,我们就无法使用公众号平台中的自动回复功能,也就是关注自动回复功能只有自己写才可以. 如图所示,我们无法直接使用此功能. 那么接着上一个博客,我们完成了关键词自动回复功能,博 ...

最新文章

  1. java treemap用法_Java TreeMap put()用法及代码示例
  2. 重磅!泰晤士发布重量级学科排名,90所中国大陆高校上榜
  3. 3.网络通信协议分类
  4. Django基础之Model创建表
  5. errorgetlast php,php error_clear_last()函数与error_get_last()函数
  6. 使用Git工具下载android源码---带步骤
  7. java列出文件正则过滤_JAVA正则表达式过滤文件的实现方法
  8. 阿里云发布时间序列数据库TSDB,关于时序你了解多少?
  9. 计算机信息科学蔺泽浩,上海交通大学计算机科学与工程系(CSE)
  10. 中小企业集群ntpd服务搭建
  11. python绘制图像直方图_Python – 计算图像的直方图
  12. 编译ROS-Academy-for-Beginners
  13. Unity 阴影的制作方式
  14. mysql 隐秘后门_Phpstudy被暴存在隐藏后门-检查方法
  15. webpack 处理字体_不可错过的Webpack核心知识点
  16. 基于convLSTM模型的雷达图像外推算法
  17. 【UE4】 自定义编辑器的放置Actor窗口
  18. centos 7 屏蔽国外ip访问
  19. 31个惊艳的数据可视化作品,感受“数据之美”!
  20. 内网渗透笔记——三层发现and四层发现

热门文章

  1. WindowsXP音量控制程序的安装
  2. 服务器lsass占用内存_记一次服务器病毒查杀过程:lsass.exe占用内存高
  3. 计算机广告制作教程,Photoshop实例教程:制作网站横条广告
  4. Python实现多条.txt文本数据合并为.csv文件数据
  5. cadence破译时显示服务器失败,在服务器开启cadence失败 报错如下
  6. 冰点还原无法修改计算机时间,安装冰点还原后无法更改系统时间怎么办
  7. 用python处理excel视频教程_从零基础开始用Python处理Excel数据(第一季)课件+资料...
  8. 黑马程序员——一些常用类的代码实践
  9. 博弈论学习笔记——博弈收益期望的计算与决策
  10. 第一台数控机床专用计算机采用什么元件,数控技术试题库(含答案)