Browse Source

#392 微信支付增加企业付款到银行卡的相关接口

master
Binary Wang 7 years ago
parent
commit
0240fffa1c
10 changed files with 178 additions and 14 deletions
  1. +28
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayBankQueryRequest.java
  2. +96
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayBankQueryResult.java
  3. +3
    -1
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayBankResult.java
  4. +3
    -1
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayQueryRequest.java
  5. +1
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayQueryResult.java
  6. +6
    -3
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java
  7. +5
    -3
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/BaseWxPayResult.java
  8. +13
    -1
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java
  9. +14
    -1
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java
  10. +9
    -4
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImplTest.java

+ 28
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayBankQueryRequest.java View File

@@ -0,0 +1,28 @@
package com.github.binarywang.wxpay.bean.entpay;

import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import lombok.*;
import me.chanjar.weixin.common.annotation.Required;
import me.chanjar.weixin.common.util.ToStringUtils;

/**
* <pre>
* 企业付款到银行卡的请求对象
* Created by Binary Wang on 2017/12/21.
* </pre>
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@XStreamAlias("xml")
public class EntPayBankQueryRequest extends EntPayQueryRequest {
private static final long serialVersionUID = -479088843124447119L;

@Override
protected boolean ignoreAppid() {
return true;
}
}

+ 96
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayBankQueryResult.java View File

@@ -0,0 +1,96 @@
package com.github.binarywang.wxpay.bean.entpay;

import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
* <pre>
* 企业付款到银行卡查询返回结果.
* Created by Binary Wang on 2017/12/21.
* </pre>
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@XStreamAlias("xml")
public class EntPayBankQueryResult extends BaseWxPayResult {
private static final long serialVersionUID = -8336631015989500746L;

/**
* 商户企业付款单号
*/
@XStreamAlias("partner_trade_no")
private String partnerTradeNo;

/**
* 微信企业付款单号.
* 即为微信内部业务单号
*/
@XStreamAlias("payment_no")
private String paymentNo;

/**
* 银行卡号.
* 收款用户银行卡号(MD5加密)
*/
@XStreamAlias("bank_no_md5")
private String bankNoMd5;

/**
* 用户真实姓名.
* 收款人真实姓名(MD5加密)
*/
@XStreamAlias("true_name_md5")
private String trueNameMd5;

/**
* 付款金额.
*/
@XStreamAlias("amount")
private Integer amount;

/**
* 代付单状态.
* <pre>
* PROCESSING(处理中,如有明确失败,则返回额外失败原因;否则没有错误原因)
* SUCCESS(付款成功)
* FAILED(付款失败)
* BANK_FAIL(银行退票,订单状态由付款成功流转至退票,退票时付款金额和手续费会自动退还)
* </pre>
*/
@XStreamAlias("status")
private String status;

/**
* 手续费金额
*/
@XStreamAlias("cmms_amt")
private Integer cmmsAmount;

/**
* 商户下单时间.
* 微信侧订单创建时间
*/
@XStreamAlias("create_time")
private String createTime;

/**
* 成功付款时间.
* 微信侧付款成功时间(但无法保证银行不会退票)
*/
@XStreamAlias("pay_succ_time")
private String paySuccessTime;

/**
* 失败原因.
* 订单失败原因(如:余额不足)
*/
@XStreamAlias("reason")
private String failReason;

}

+ 3
- 1
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayBankResult.java View File

@@ -8,7 +8,7 @@ import lombok.NoArgsConstructor;

/**
* <pre>
* 企业付款到银行卡的响应结果
* 企业付款到银行卡的响应结果.
* Created by Binary Wang on 2017/12/21.
* </pre>
*
@@ -19,6 +19,8 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@XStreamAlias("xml")
public class EntPayBankResult extends BaseWxPayResult {
private static final long serialVersionUID = 3449707749935227689L;

/**
* 代付金额.
*/


+ 3
- 1
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayQueryRequest.java View File

@@ -8,7 +8,7 @@ import me.chanjar.weixin.common.util.ToStringUtils;

/**
* <pre>
* 企业付款请求对象
* 企业付款请求对象.
* Created by Binary Wang on 2016/10/19.
* </pre>
*
@@ -21,6 +21,8 @@ import me.chanjar.weixin.common.util.ToStringUtils;
@AllArgsConstructor
@XStreamAlias("xml")
public class EntPayQueryRequest extends BaseWxPayRequest {
private static final long serialVersionUID = 1972288742207813985L;

/**
* <pre>
* 字段名:商户订单号.


+ 1
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayQueryResult.java View File

@@ -19,6 +19,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@XStreamAlias("xml")
public class EntPayQueryResult extends BaseWxPayResult {
private static final long serialVersionUID = 3948485732447456947L;

/**
* 商户订单号


+ 6
- 3
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java View File

@@ -12,20 +12,23 @@ import me.chanjar.weixin.common.util.ToStringUtils;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.math.BigDecimal;

import static com.github.binarywang.wxpay.constant.WxPayConstants.SignType.ALL_SIGN_TYPES;

/**
* <pre>
* Created by Binary Wang on 2016-10-24.
* 微信支付请求对象共用的参数存放类
* Created by Binary Wang on 2016-10-24.
* </pre>
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
@Data
public abstract class BaseWxPayRequest {
public abstract class BaseWxPayRequest implements Serializable {
private static final long serialVersionUID = -4766915659779847060L;

/**
* <pre>
* 字段名:公众账号ID
@@ -117,7 +120,7 @@ public abstract class BaseWxPayRequest {
*
* @param yuan 将要转换的元的数值字符串
*/
public static Integer yuanToFee(String yuan) {
public static Integer yuanToFen(String yuan) {
return new BigDecimal(yuan).setScale(2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).intValue();
}



+ 5
- 3
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/BaseWxPayResult.java View File

@@ -2,7 +2,6 @@ package com.github.binarywang.wxpay.bean.result;

import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.github.binarywang.wxpay.service.impl.BaseWxPayServiceImpl;
import com.github.binarywang.wxpay.util.SignUtils;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
@@ -26,20 +25,23 @@ import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
* <pre>
* 微信支付结果共用属性类
* 微信支付结果共用属性类.
* Created by Binary Wang on 2016-10-24.
* </pre>
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
@Data
public abstract class BaseWxPayResult {
public abstract class BaseWxPayResult implements Serializable {
private static final long serialVersionUID = 2416778827989487412L;

/**
* 返回状态码
*/


+ 13
- 1
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java View File

@@ -68,5 +68,17 @@ public interface EntPayService {
*
* @param request 请求对象
*/
EntPayBankResult payToBankCard(EntPayBankRequest request) throws WxPayException;
EntPayBankResult payBank(EntPayBankRequest request) throws WxPayException;

/**
* 企业付款到银行卡查询.
* <pre>
* 用于对商户企业付款到银行卡操作进行结果查询,返回付款操作详细结果。
* 文档详见:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_3
* 接口链接:https://api.mch.weixin.qq.com/mmpaysptrans/query_bank
* </pre>
*
* @param partnerTradeNo 商户订单号
*/
EntPayBankQueryResult queryPayBank(String partnerTradeNo) throws WxPayException;
}

+ 14
- 1
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java View File

@@ -75,7 +75,7 @@ public class EntPayServiceImpl implements EntPayService {
}

@Override
public EntPayBankResult payToBankCard(EntPayBankRequest request) throws WxPayException {
public EntPayBankResult payBank(EntPayBankRequest request) throws WxPayException {
File publicKeyFile = this.buildPublicKeyFile();
request.setEncBankNo(this.encryptRSA(publicKeyFile, request.getEncBankNo()));
request.setEncTrueName(this.encryptRSA(publicKeyFile, request.getEncTrueName()));
@@ -90,6 +90,19 @@ public class EntPayServiceImpl implements EntPayService {
return result;
}

@Override
public EntPayBankQueryResult queryPayBank(String partnerTradeNo) throws WxPayException {
EntPayBankQueryRequest request = new EntPayBankQueryRequest();
request.setPartnerTradeNo(partnerTradeNo);
request.checkAndSign(this.payService.getConfig());

String url = this.payService.getPayBaseUrl() + "/mmpaysptrans/query_bank";
String responseContent = this.payService.post(url, request.toXML(), true);
EntPayBankQueryResult result = BaseWxPayResult.fromXML(responseContent, EntPayBankQueryResult.class);
result.checkResult(this.payService, request.getSignType(), true);
return result;
}

private String encryptRSA(File publicKeyFile, String srcString) throws WxPayException {
try {
Security.addProvider(new BouncyCastleProvider());


+ 9
- 4
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImplTest.java View File

@@ -1,8 +1,8 @@
package com.github.binarywang.wxpay.service.impl;

import com.github.binarywang.wxpay.bean.entpay.EntPayRequest;
import com.github.binarywang.wxpay.bean.entpay.EntPayBankRequest;
import com.github.binarywang.wxpay.bean.entpay.EntPayBankResult;
import com.github.binarywang.wxpay.bean.entpay.EntPayRequest;
import com.github.binarywang.wxpay.bean.request.WxEntPayRequest;
import com.github.binarywang.wxpay.constant.WxPayConstants;
import com.github.binarywang.wxpay.exception.WxPayException;
@@ -16,7 +16,7 @@ import org.testng.annotations.Test;

/**
* <pre>
* 企业付款测试类
* 企业付款测试类.
* Created by BinaryWang on 2017/12/19.
* </pre>
*
@@ -72,8 +72,8 @@ public class EntPayServiceImplTest {
}

@Test
public void testPayToBankCard() throws Exception {
EntPayBankResult result = this.payService.getEntPayService().payToBankCard(EntPayBankRequest.builder()
public void testPayBank() throws Exception {
EntPayBankResult result = this.payService.getEntPayService().payBank(EntPayBankRequest.builder()
.bankCode("aa")
.amount(1)
.encBankNo("1")
@@ -83,4 +83,9 @@ public class EntPayServiceImplTest {
.build());
this.logger.info(result.toString());
}

@Test
public void testQueryPayBank() throws Exception {
this.logger.info(this.payService.getEntPayService().queryPayBank("123").toString());
}
}

Loading…
Cancel
Save