创建实名用户、创建结算账户
This commit is contained in:
parent
2b6c510f42
commit
a00e9f6b96
|
|
@ -95,6 +95,16 @@
|
|||
<groupId>com.ghy</groupId>
|
||||
<artifactId>ghy-worker</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
|
|
|||
|
|
@ -154,8 +154,10 @@ qiniu:
|
|||
mediaUrl: 'http://gqz.opsoul.com/'
|
||||
|
||||
adapay:
|
||||
debug: true
|
||||
prod-mode: false
|
||||
appId: 'app_01af32e7-6173-414f-88e5-79cae64d5e24'
|
||||
notifyUrl: 'http://www.opsoul.com/adapay/callback'
|
||||
notifyUrl: 'https://www.opsoul.com/adapay/callback'
|
||||
apiKey: 'api_live_93a2fb4f-a74a-416f-967d-68557bcde43f'
|
||||
mockApiKey: 'api_test_88bf2958-583d-41cd-a987-01fe767ff056'
|
||||
rsaPrivateKey: 'MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMTk5xzz3KXA+waawr1DbU/SaSXZN8tY/22qHON7AAsp+yJ1/JCt+sD6/mpIUGittBS4n69t/9R5+2uHtD5/tVH7hYpJpVixLQw8/lonLPbeLFLgTMBHKJwSytBZXC2delnewHO/Zg6WlTWkdQB7gr73m7/wu2Ss+FDwGq6Q8sXdAgMBAAECgYEAtl8LTr72DjWsjdaFMEcnFftf12XWjyx1Ev+xWGcSiESvT6EXem8bxun1Az7N89eI6HSFvDlX8Fe4MEZ3BjjGGXSEXh3BYg5jI9YY/x4NdPvCxxVf9gGmBo2uBjkPoqYE8IGfpxnF+C4CBEyI5FPjhQRYB7aPKL7hImoCFkaFG4UCQQDojfLHd2ON2sgZdeAML9jxNzf1CBsGVfDrI7GOj+enWG+lWjG5tav/essfDOlZ6rZslyquLQZAGQqZz06cVCMzAkEA2L6WuCiEop9gsnGk03UcO8u54jFC68+2IA4bJeqicFmqMgs73PzsnNZ7t31q51iGsKxvCm3hziTGHGGH9TZyrwJATda1XG5ptCF2uI7r3yhkxNhmsm10HjrF2O6pj747G5hORlpaKn7Ugz7mng4ETURyqwYuEv6fCPVYxwLMnSbMYQJBAMggMkoYH1+IiWA6TlZw64DKuvd/RKs3PpKac7auzw2tvNg4Ry3k2xR1dgYWZ3703miCzoRysOwGSGYsJ7ziaUECQQC1RqZ0UBtEbKSr9fRYxo/lg28ioTlxoMjSL2OumEyJk+2t0S3gPQq5Wz+ylcwnK3Md0kGTyYs5kkTWPyPm9V1F'
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -9,15 +9,15 @@ import com.ghy.common.adapay.callback.mapping.RefundReplyMapping;
|
|||
import com.ghy.common.adapay.callback.model.Expend;
|
||||
import com.ghy.common.adapay.callback.model.WxLiteExpend;
|
||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||
import com.huifu.adapay.model.Drawcash;
|
||||
import com.huifu.adapay.model.Payment;
|
||||
import com.huifu.adapay.model.Refund;
|
||||
import com.huifu.adapay.model.*;
|
||||
import lombok.Setter;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -29,9 +29,95 @@ public class AdapayService {
|
|||
|
||||
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private AdapayProperties adapayProperties;
|
||||
|
||||
/**
|
||||
* 创建结算账户对象 https://docs.adapay.tech/api/trade.html#settle-account-create
|
||||
* 创建结算账户对象是为一个已创建用户对象创建结算账户,用于对用户分账金额的结算,目前仅支持绑定银行卡结算账户。
|
||||
* 用户创建对私结算账户时,会对银行卡号、银行卡开户姓名、身份证号三要素认证,若认证失败,则创建结算账户失败。
|
||||
* 每个结算账户对象 Adapay 系统会生成一个唯一的 id,可用于查询结算账户对象,或者删除结算账户对象。
|
||||
*
|
||||
* @param memberId [必填]商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一
|
||||
* @param cardId [必填]银行卡号
|
||||
* @param cardName [必填]银行卡对应的户名
|
||||
* @param telNo [必填]手机号
|
||||
* @param bankAcctType [必填]银行账户类型:1-对公;2-对私
|
||||
* @param certId 证件号,银行账户类型为对私时必填
|
||||
* @param bankCode 银行编码,银行账户类型对公时必填,详见附录 银行代码 https://docs.adapay.tech/api/appendix.html#id3
|
||||
* @param provCode 银行账户开户银行所在省份编码 (省市编码),银行账户类型为对公时必填,省市编码详见area.json
|
||||
* @param areaCode 银行账户开户银行所在地区编码(省市编码),银行账户类型为对公时必填,省市编码详见area.json
|
||||
* @return 成功时同步返回一个包含 SettleAccount对象 的 JSON。
|
||||
*/
|
||||
public Map<String, Object> createSettleAccount(@NotNull String memberId, @NotNull String cardId, @NotNull String cardName,
|
||||
@NotNull String bankAcctType, String certId, String telNo,
|
||||
String bankCode, String provCode, String areaCode) throws BaseAdaPayException {
|
||||
|
||||
// 结算账户信息 参见结算账户信息(AccountInfo)对象 https://docs.adapay.tech/api/appendix.html#accountinfo
|
||||
Map<String, Object> accountInfo = new HashMap<>(9);
|
||||
|
||||
switch (bankAcctType) {
|
||||
case "1":
|
||||
Assert.isTrue(StringUtils.isNoneBlank(bankCode, provCode, areaCode),
|
||||
"[bankCode, provCode, areaCode] cannot be empty !");
|
||||
case "2":
|
||||
Assert.hasText(cardId, "cardId is blank !");
|
||||
accountInfo.put("cert_type", "00");
|
||||
accountInfo.put("cert_id", certId);
|
||||
break;
|
||||
default:
|
||||
throw new BaseAdaPayException("Wrong bankAcctType !");
|
||||
}
|
||||
|
||||
accountInfo.put("card_id", cardId);
|
||||
accountInfo.put("card_name", cardName);
|
||||
accountInfo.put("tel_no", telNo);
|
||||
accountInfo.put("bank_code", bankCode);
|
||||
accountInfo.put("bank_acct_type", bankAcctType);
|
||||
accountInfo.put("prov_code", provCode);
|
||||
accountInfo.put("area_code", areaCode);
|
||||
|
||||
Map<String, Object> settleCountParams = new HashMap<>(4);
|
||||
settleCountParams.put("member_id", memberId);
|
||||
settleCountParams.put("app_id", adapayProperties.getAppId());
|
||||
// 目前仅支持:bank_account(银行卡)
|
||||
settleCountParams.put("channel", "bank_account");
|
||||
settleCountParams.put("account_info", accountInfo);
|
||||
return SettleAccount.create(settleCountParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建实名用户 https://docs.adapay.tech/api/trade.html#member-realname
|
||||
*
|
||||
* @param memberId [必填]商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一
|
||||
* @param telNo [必填]用户手机号
|
||||
* @param username [必填]用户姓名
|
||||
* @param certId [必填]证件号
|
||||
* @param location 用户地址
|
||||
* @param email 用户邮箱
|
||||
* @param gender MALE:男,FEMALE:女,为空时表示未填写
|
||||
* @param nickname 用户昵称
|
||||
* @return 成功时同步返回一个包含Member对象的JSON
|
||||
*/
|
||||
public Map<String, Object> createMember(String memberId, String telNo, String username, String certId,
|
||||
String location, String email, String gender, String nickname) throws BaseAdaPayException {
|
||||
Map<String, Object> memberParams = new HashMap<>(7);
|
||||
memberParams.put("member_id", memberId);
|
||||
memberParams.put("app_id", adapayProperties.getAppId());
|
||||
memberParams.put("location", location);
|
||||
memberParams.put("email", email);
|
||||
memberParams.put("gender", gender);
|
||||
memberParams.put("nickname", nickname);
|
||||
memberParams.put("tel_no", telNo);
|
||||
memberParams.put("user_name", username);
|
||||
// 证件类型,仅支持:00-身份证
|
||||
memberParams.put("cert_type", "00");
|
||||
// 接口功能号
|
||||
memberParams.put("adapay_func_code", "members.realname");
|
||||
memberParams.put("cert_id", certId);
|
||||
return AdapayCommon.requestAdapay(memberParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* 对指定商户或者商户下用户的结算账户可用余额发起主动取现操作,金额从账户中提到绑定的结算银行卡中
|
||||
*
|
||||
|
|
@ -67,9 +153,9 @@ public class AdapayService {
|
|||
/**
|
||||
* 支付宝正扫支付
|
||||
*/
|
||||
public Map<String, Object> alipayQrPay(PayCallback callback, WxLiteExpend expend, String orderNo, String payAmt,
|
||||
public Map<String, Object> alipayQrPay(PayCallback callback, String orderNo, String payAmt,
|
||||
String goodsTittle, String goodsDesc, String divMembers, String description) throws BaseAdaPayException {
|
||||
return pay(callback, PayChannelEnum.ALIPAY_QR.getCode(), expend, orderNo, payAmt, goodsTittle, goodsDesc, divMembers, description);
|
||||
return pay(callback, PayChannelEnum.ALIPAY_QR.getCode(), null, orderNo, payAmt, goodsTittle, goodsDesc, divMembers, description);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -114,10 +200,7 @@ public class AdapayService {
|
|||
paymentParams.put("description", description);
|
||||
paymentParams.put("expend", expend);
|
||||
PayReplyMapping.putCallback(orderNo, callback);
|
||||
|
||||
paymentParams.forEach((key, value) -> {
|
||||
logger.info("key is " + key + ", value is " + value);
|
||||
});
|
||||
logger.info("paymentParams=" + paymentParams);
|
||||
return Payment.create(paymentParams);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue