企业付款到银行卡

7 篇文章 0 订阅
4 篇文章 1 订阅

外卖项目,骑手提现收益到银行卡。
以下是我写的一个简单demo
开发文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_2
提现到银行卡是需要证书的,而且付款的微信商户号还需要几个月的流水记录
在这里插入图片描述
实现步骤
1.引入依赖

		<dependency>
			<groupId>com.github.binarywang</groupId>
			<artifactId>wx-java-pay-spring-boot-starter</artifactId>
			<version>4.0.0</version>
		</dependency>

配置yml

wx:
  pay:
    appId: 你的小程序appid
    mchId: 商户号id
    mchKey: 商户号秘钥
    subAppId: #服务商模式下的子商户公众账号ID
    subMchId: #服务商模式下的子商户号
    keyPath: classpath:/wx/apiclient_cert.p12 # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
    #keyPath: D:/zs/apiclient_cert.p12 # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
    secret: 你的秘钥``

appId、mchId、mchKey、keyPath必填

二、
在这里插入图片描述
在这里插入图片描述

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * wxpay pay properties.
 *
 * @author Binary Wang
 */
@Data
@ConfigurationProperties(prefix = "wx.pay")
public class WxPayProperties {
  /**
   * 设置微信公众号或者小程序等的appid
   */
  private String appId;

  /**
   * 微信支付商户号
   */
  private String mchId;

  /**
   * 微信支付商户密钥
   */
  private String mchKey;

  /**
   * 服务商模式下的子商户公众账号ID,普通模式请不要配置,请在配置文件中将对应项删除
   */
  private String subAppId;

  /**
   * 服务商模式下的子商户号,普通模式请不要配置,最好是请在配置文件中将对应项删除
   */
  private String subMchId;

  /**
   * apiclient_cert.p12文件的绝对路径,或者如果放在项目中,请以classpath:开头指定
   */
  private String keyPath;

}
/**
 * @author Binary Wang
 */
@Configuration
@ConditionalOnClass(WxPayService.class)
@EnableConfigurationProperties(WxPayProperties.class)
@AllArgsConstructor
public class WxPayConfiguration {
  private WxPayProperties properties;

  @Bean
  @ConditionalOnMissingBean
  public WxPayService wxService() {
    WxPayConfig payConfig = new WxPayConfig();
    payConfig.setAppId(StringUtils.trimToNull(this.properties.getAppId()));
    payConfig.setMchId(StringUtils.trimToNull(this.properties.getMchId()));
    payConfig.setMchKey(StringUtils.trimToNull(this.properties.getMchKey()));
    payConfig.setSubAppId(StringUtils.trimToNull(this.properties.getSubAppId()));
    payConfig.setSubMchId(StringUtils.trimToNull(this.properties.getSubMchId()));
    payConfig.setKeyPath(StringUtils.trimToNull(this.properties.getKeyPath()));


    // 可以指定是否使用沙箱环境
    payConfig.setUseSandboxEnv(false);

    WxPayService wxPayService = new WxPayServiceImpl();
    wxPayService.setConfig(payConfig);
    return wxPayService;
  }

}
import com.github.binarywang.wxpay.bean.entpay.EntPayBankRequest;
import com.github.binarywang.wxpay.bean.entpay.EntPayBankResult;
import com.github.binarywang.wxpay.bean.entpay.EntPayResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@Api("企业付款")
@RequestMapping("/pay")
@RestController
@AllArgsConstructor
public class EntPayController {

    @Resource
    MyWxPayService myWxPayService;

    /**
     * 企业付款到银行卡.
     * <pre>
     * 用于企业向微信用户银行卡付款
     * 目前支持接口API的方式向指定微信用户的银行卡付款。
     * 文档详见:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_2
     * 接口链接:https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank
     * </pre>
     *
     * @param request 请求对象
     * @return the ent pay bank result
     * @throws WxPayException the wx pay exception
     */
    @ApiOperation(value = "企业付款到银行卡")
    @PostMapping("/payBank")
    public EntPayBankResult payBank(EntPayBankRequest request) throws WxPayException,Exception {
        return myWxPayService.payBankTest();
    }


}
    public EntPayBankResult payBankTest() throws Exception {
        EntPayBankRequest.EntPayBankRequestBuilder entPayBankRequestBuilder = EntPayBankRequest.builder();
        String amount = txje.multiply(BigDecimal.valueOf(100)).stripTrailingZeros().toPlainString();
        EntPayBankRequest entPayBankRequest = entPayBankRequestBuilder
                .partnerTradeNo(IdUtils.genUniqueKey())  //商户企业付款单号.
                .encBankNo("")  //收款方银行卡号.
                .encTrueName("")  //收款方用户名.
                .bankCode("1002")   //收款方开户行.   银行卡所在开户行编号,详见银行编号列表
                .amount(Integer.valueOf(amount))  //提现金额:RMB分(支付总额,不含手续费) 注:大于0的整数
                .description("提现测试")  //企业付款到银行卡付款说明,即订单备注(UTF8编码,允许100个字符以内)不必填
                .build();
        EntPayBankResult entPayResult =  wxPayService.getEntPayService().payBank(entPayBankRequest);
        return entPayResult;
    }```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值