zoukankan      html  css  js  c++  java
  • 企业付款到零钱(微信小程序提现,用户提现到零钱)

    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;
        }
    
     
  • 相关阅读:
    Ad-papers
    《wifi深入了解抓包分析密码破解》
    《Linux内核分析-内核源码,写操作系统,gdb,系统调用》
    《C/C++ 高级开发 与Linux内核源码探析 提高班(王保明老师)【2】》
    《C/C++ 高级开发 与Linux内核源码探析 提高班(王保明老师)》
    《【公开课】斯坦福李飞飞教授最新cs231n计算机视觉经典课程》
    Tensorflow 介绍和安装
    卷积的发展历程,原理和基于 TensorFlow 的实现
    一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)
    基于深度学习的计算机视觉应用之目标检测
  • 原文地址:https://www.cnblogs.com/yelanggu/p/15090503.html
Copyright © 2011-2022 走看看