php微信公众号退款,微信公众号支付--4--微信退款

官网文档: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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值