支付宝微信转账完成

This commit is contained in:
egzosn
2018-02-01 13:57:27 +08:00
parent 219fe1f145
commit 93b3eee7d8
7 changed files with 136 additions and 6 deletions

View File

@@ -458,7 +458,46 @@ public class AliPayService extends BasePayService {
*/
@Override
public Map<String, Object> transfer(TransferOrder order) {
return null;
//获取公共参数
Map<String, Object> parameters = getPublicParameters(AliTransactionType.TRANS);
Map<String, Object> bizContent = new TreeMap<String, Object>();
bizContent.put("out_biz_no", order.getOutNo());
bizContent.put("payee_type", "ALIPAY_LOGONID");
bizContent.put("payee_account", order.getPayeeAccount());
bizContent.put("amount", order.getAmount().setScale(2, BigDecimal.ROUND_HALF_UP));
bizContent.put("payer_show_name", order.getPayerName());
bizContent.put("payee_real_name", order.getPayeeName());
bizContent.put("remark", order.getRemark());
//设置请求参数的集合
parameters.put("biz_content", JSON.toJSONString(bizContent));
//设置签名
setSign(parameters);
return getHttpRequestTemplate().postForObject(getReqUrl() + "?" + UriVariables.getMapToParameters(parameters), null, JSONObject.class);
}
/**
* 转账
*
* @param outNo 商户转账订单号
* @param tradeNo 支付平台转账订单号
*
* @return 对应的转账订单
*/
@Override
public Map<String, Object> transferQuery(String outNo, String tradeNo) {
//获取公共参数
Map<String, Object> parameters = getPublicParameters(AliTransactionType.TRANS_QUERY);
Map<String, Object> bizContent = new TreeMap<String, Object>();
if (StringUtils.isEmpty(outNo)){
bizContent.put("order_id", tradeNo);
}else {
bizContent.put("out_biz_no", outNo);
}
//设置请求参数的集合
parameters.put("biz_content", JSON.toJSONString(bizContent));
return getHttpRequestTemplate().postForObject(getReqUrl() + "?" + UriVariables.getMapToParameters(parameters), null, JSONObject.class);
}
/**

View File

@@ -64,8 +64,15 @@ public enum AliTransactionType implements TransactionType {
/**
* 下载对账单
*/
DOWNLOADBILL("alipay.data.dataservice.bill.downloadurl.query")
DOWNLOADBILL("alipay.data.dataservice.bill.downloadurl.query"),
/**
* 转账到支付宝
*/
TRANS("alipay.fund.trans.toaccount.transfer"),
/**
* 转账查询
*/
TRANS_QUERY("alipay.fund.trans.order.query")
;

View File

@@ -256,6 +256,33 @@ public abstract class BasePayService implements PayService {
*/
@Override
public Map<String, Object> transfer(TransferOrder order) {
return new HashMap<>();
return new HashMap<>(0);
}
/**
* 转账
*
* @param outNo 商户转账订单号
* @param tradeNo 支付平台转账订单号
*
* @return 对应的转账订单
*/
@Override
public Map<String, Object> transferQuery(String outNo, String tradeNo){
return new HashMap<>(0);
}
/**
* 转账
*
* @param outNo 商户转账订单号
* @param tradeNo 支付平台转账订单号
* @param callback 处理器
* @param <T> 返回类型
* @return 对应的转账订单
*/
@Override
public <T>T transferQuery(String outNo, String tradeNo, Callback<T> callback){
return callback.perform(transferQuery(outNo, tradeNo));
}
}

View File

@@ -321,4 +321,27 @@ public interface PayService {
/**
* 转账
*
* @param outNo 商户转账订单号
* @param tradeNo 支付平台转账订单号
*
* @return 对应的转账订单
*/
Map<String, Object> transferQuery(String outNo, String tradeNo);
/**
* 转账
*
* @param outNo 商户转账订单号
* @param tradeNo 支付平台转账订单号
* @param callback 处理器
* @param <T> 返回类型
* @return 对应的转账订单
*/
<T>T transferQuery(String outNo, String tradeNo, Callback<T> callback);
}

View File

@@ -338,4 +338,5 @@ public enum SignUtils {
*/
public abstract boolean verify(String text, String sign, String key, String characterEncoding);
}

View File

@@ -518,13 +518,35 @@ public class WxPayService extends BasePayService {
public Map<String, Object> transfer(TransferOrder order) {
Map<String, Object> parameters = new TreeMap<String, Object>();
parameters.put("mch_id", payConfigStorage.getPid());
parameters.put("partner_trade_no", order.getOutNo());
parameters.put("nonce_str", SignUtils.randomStr());
parameters.put("enc_bank_no", keyPublic(order.getPayeeAccount()));
parameters.put("enc_true_name", keyPublic(order.getPayeeName()));
parameters.put("bank_code", order.getBank().getCode());
parameters.put("amount", conversion(order.getAmount()));
if (!StringUtils.isEmpty(order.getRemark())){
parameters.put("desc", order.getRemark());
}
parameters.put(SIGN, SignUtils.valueOf(payConfigStorage.getSignType()).sign(parameters, payConfigStorage.getKeyPrivate(), payConfigStorage.getInputCharset()));
return getHttpRequestTemplate().postForObject(getUrl(WxTransactionType.BANK), parameters, JSONObject.class);
}
return null;
/**
* 转账
*
* @param outNo 商户转账订单号
* @param tradeNo 支付平台转账订单号
*
* @return 对应的转账订单
*/
@Override
public Map<String, Object> transferQuery(String outNo, String tradeNo) {
Map<String, Object> parameters = new TreeMap<String, Object>();
parameters.put("mch_id", payConfigStorage.getPid());
parameters.put("partner_trade_no", StringUtils.isEmpty(outNo) ? tradeNo : outNo);
parameters.put("nonce_str", SignUtils.randomStr());
parameters.put(SIGN, SignUtils.valueOf(payConfigStorage.getSignType()).sign(parameters, payConfigStorage.getKeyPrivate(), payConfigStorage.getInputCharset()));
return getHttpRequestTemplate().postForObject(getUrl(WxTransactionType.QUERY_BANK), parameters, JSONObject.class);
}
/**
@@ -536,4 +558,7 @@ public class WxPayService extends BasePayService {
return amount.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
}
public String keyPublic(String content){
return SignUtils.RSA.createSign(content, payConfigStorage.getKeyPublic(), payConfigStorage.getInputCharset());
}
}

View File

@@ -86,7 +86,15 @@ public enum WxTransactionType implements TransactionType {
/**
* 下载对账单
*/
DOWNLOADBILL("pay/downloadbill")
DOWNLOADBILL("pay/downloadbill"),
/**
* 银行卡转账
*/
BANK("mmpaysptrans/pay_bank"),
/**
* 转账查询
*/
QUERY_BANK("mmpaysptrans/query_bank")
;
WxTransactionType(String method) {