企业付款到零钱(微信小程序提现,用户提现到零钱)
pom 增加
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-pay</artifactId>
<version>3.2.0</version>
</dependency>
附上github https://github.com/Wechat-Group/WxJava/wiki
一、证书申请
企业付款需要用到p12证书,证书可以在商户平台的 账户平台 - API安全 - API证书 中申请到。(注:需要升级一下)
二、WxPayConfig配置
将 com.github.binarywang.wxpay.service.WxPayService 作为Bean注入到项目中
实现代码如下,具体作用读者可引入pom后自行查看,binarywang作者的注释非常详细。有问题可留言讨论
我在使用@Autowired 注解时无法注入 所以就注掉了 具体调用方法下面会贴上
/**
* 企业支付WxPayConfig配置
* @author hsw
*/
@Configuration
public class WxConfig {
// @Autowired
// private WxMpProperties wxMpProperties;
@Bean
public WxPayConfig wxPayConfig() {
// final List<WxMpProperties.MpConfig> configs = wxMpProperties.getConfigs();
WxPayConfig payConfig = new WxPayConfig();
// payConfig.setAppId(configs.get(1).getAppId());
// payConfig.setMchId(configs.get(1).getPayMchId());
// payConfig.setMchKey(configs.get(1).getPaySecretKey());
// payConfig.setNotifyUrl(configs.get(1).getPayResultUrl());
// payConfig.setKeyPath(configs.get(1).get);
payConfig.setTradeType("JSAPI");
payConfig.setSignType("MD5");
return payConfig;
}
@Bean
public WxPayService wxPayService(WxPayConfig payConfig) {
WxPayService wxPayService = new WxPayServiceImpl();
wxPayService.setConfig(payConfig);
return wxPayService;
}
3、API调用
/**
* 进行微信提现操作 (企业付款至用户零钱)
* @param openId
* @param amout 提现金额
* @param partnerTradeNo 单号
* @param desc 备注
*/
private EntPayResult getWithdrawal(String openId, BigDecimal amout,String partnerTradeNo, String desc, HttpServletRequest request){
final List<WxMpProperties.MpConfig> configs = wxMpProperties.getConfigs();
EntPayRequest entPayRequest = new EntPayRequest();
entPayRequest.setAppid(configs.get(1).getAppId());
entPayRequest.setMchId(configs.get(1).getPayMchId());
entPayRequest.setPartnerTradeNo(partnerTradeNo);
entPayRequest.setOpenid(openId);
entPayRequest.setCheckName("NO_CHECK");
entPayRequest.setAmount(Integer.valueOf(amout.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString()));
entPayRequest.setDescription(desc);
entPayRequest.setSpbillCreateIp(IpUtils.getIpAddr(request));
EntPayResult entPayResult = null;
try {
//此处调用=============================================================
// 通过Java配置来实例化Spring容器
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(WxConfig.class);
// 在Spring容器中获取Bean对象
WxConfig wxConfig = context.getBean(WxConfig.class);
WxPayService wxPayService = wxConfig.wxPayService(wxConfig.wxPayConfig());
entPayResult = wxPayService.getEntPayService().entPay(entPayRequest);
log.info("entPayResult : " + entPayResult);
System.out.println(entPayResult);
} catch (WxPayException e) {
log.error("付款失败,返回报文" + e);
throw new ApiException(e.getCustomErrorMsg());
}
return entPayResult;
}
企业付款到零钱(微信小程序提现,用户提现到零钱)的更多相关文章
- [微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息
因为需要在小程序加个定位并加载对应城市信息 然而小程序自带api目前只能获取经纬度不能逆解析,虽然自己解析方式,但是同时也要调用地图,难道用户每次进小程序还要强行打开地图选择地址才定位吗?多麻烦也不利 ...
- 基于微信小程序的用户列表点赞功能
代码地址如下:http://www.demodashi.com/demo/13997.html 一.前言 (1).适合人群 1.微信小程序开发者 2.前端工程师 3.想入门学习小程序开发的人员 4.想 ...
- 微信小程序 获取用户信息并保存登录状态
微信小程序 获取用户信息并保存登录状态:http://www.360doc.com/content/18/0124/11/9200790_724662071.shtml
- Laravel wxxcx 微信小程序获取用户信息
wxxcx 是Laravel5微信小程序登录获取用户信息扩展 部署 12345678 # 安装$ composer require iwanli/wxxcx# 注册服务# 在 /config/app. ...
- 干货,看微信小程序后台用户数据如何演变和递增
这几天发现附近小程序又多了好几家,其中有普通小程序和门店小程序,把它们做一个对比,门店小程序更多的像一张名片,只有基本的企业名称.地址.营业时间.电话和门店照片,和普通小程序相比显得逊色许多.楼下的水 ...
- 微信小程序之用户数据解密(七)
[未经作者本人同意,请勿以任何形式转载] 经常看到有点的小伙伴在群里问小程序用户数据解密流程,所以打算写一篇关于小程序用户敏感数据解密教程: 加密过程微信服务器完成,解密过程在小程序和自身服务器完成, ...
- 微信小程序中用户登录和登录态维护
提供用户登录以及维护用户的登录状态,是一个拥有用户系统的软件应用普遍需要做的事情.像微信这样的一个社交平台,如果做一个小程序应用,我们可能很少会去做一个完全脱离和舍弃连接用户信息的纯工具软件. 让用户 ...
- 微信小程序 获得用户输入内容
在微信小程序里,如何获得用户输入的内容?? js: document.getElementById("Content").value jq:$("#Content&quo ...
- 微信小程序获取用户手机号详解
最近在做一款微信小程序,需要获取用户手机号,具体步骤如下: 流程图: 1.首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话 ...
- 微信小程序开发 - 用户授权登陆
准备:微信开发者工具下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 微信小程序开发文档:htt ...
随机推荐
- Dapper.SimpleCRUD:Dapper的CRUD助手
我们在项目开发中,面对一些高并发.大数据量等业务场景,往往对SQL语句的性能要求比较高,这个时候为了方便灵活控制,我们一般就会编写原生的SQL. Dapper就是一个非常高性能的轻量级ORM框架,Da ...
- [Java]多个参数的非空判断,不要再使用多个if挨个判断了!(多参数非空判断技巧)
先上示例代码: if (StringUtils.isAnyBlank(form, to, subject, content)) { log.error("发送人,接收人,主题,内容均不可为空 ...
- 转载 Spring boot中配置事务管理
一.注解的方式 1. 在Spring boot工程的主入口类中加入注解 // 开启事务支持 @EnableTransactionManagement 1 2 2. 在需要事务支持的服务类(class) ...
- 【OpenCV】features2d_converters.cpp:2:10: fatal error: common.h: 没有那个文件或目录
Linux环境下使用opencv的dnn模块调用yolov4遇到的坑(纯CPU)一.问题描述Ubuntu安装opencv4.4,第一次编译完成安装成功,发现编译时少加了几个选项,于是重新编译,结果报如 ...
- Spring Data JPA中使用Example进行动态查询
Spring Data JPA中使用Example进行动态查询主要涉及:实体对象.ExampleMatcher和Example等三种类类型.基于实例的动态查询所包含的三要素如下:1.实体对象:在ORM ...
- B站千万级长连接实时消息系统的架构设计与实践
本文由哔哩哔哩资深开发工程师黄山成分享,原题"千万长连消息系统",本文进行了排版和内容优化等. 1.引言 在当今数字娱乐时代,弹幕已经成为直播平台上不可或缺的互动元素之一. 用户通 ...
- 在MBP上运行推理LLaMA-7B&13B模型
在MBP上运行推理LLaMA-7B模型 build this repo # build this repo git clone https://github.com/ggerganov/llama.c ...
- FormData接口调用
JAVA调用方式 JAVA原生实现 package com.hisense.demo.utils; import java.io.*; import java.net.HttpURLConnectio ...
- 内存吞金兽(Elasticsearch)的那些事儿 -- 数据结构及巧妙算法
系列目录 内存吞金兽(Elasticsearch)的那些事儿 -- 认识一下 内存吞金兽(Elasticsearch)的那些事儿 -- 数据结构及巧妙算法 内存吞金兽(Elasticsearch)的那 ...
- Final Review - 返回天空的雨滴
目录 Motivations Tricks Conclusions Algorithms And - \[\text{Each moment, now night.} \newcommand{\vct ...