|
@@ -18,8 +18,11 @@ import javax.annotation.PostConstruct;
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
import java.io.UncheckedIOException;
|
|
import java.io.UncheckedIOException;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
import java.security.PrivateKey;
|
|
import java.security.PrivateKey;
|
|
|
import java.security.PublicKey;
|
|
import java.security.PublicKey;
|
|
|
|
|
+import java.security.Signature;
|
|
|
|
|
+import java.util.Base64;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -200,6 +203,22 @@ public class WeChatPaymentStrategyImpl implements PaymentStrategy {
|
|
|
result.put("appId", appId);
|
|
result.put("appId", appId);
|
|
|
result.put("mchId", mchId);
|
|
result.put("mchId", mchId);
|
|
|
result.put("outTradeNo", request.outTradeNo);
|
|
result.put("outTradeNo", request.outTradeNo);
|
|
|
|
|
+ // 生成sign
|
|
|
|
|
+// appId
|
|
|
|
|
+
|
|
|
|
|
+// 随机字符串
|
|
|
|
|
+// prepay_id
|
|
|
|
|
+ long timestamp = System.currentTimeMillis() / 1000; // 时间戳
|
|
|
|
|
+ String nonce = WXPayUtility.createNonce(32); // 随机字符串
|
|
|
|
|
+ String prepayId = response.prepayId;
|
|
|
|
|
+ String message = String.format("%s\n%s\n%s\n%s\n", appId, timestamp, nonce, prepayId);
|
|
|
|
|
+// String sign = WXPayUtility.sign(message, sha256withRSA, privateKey);
|
|
|
|
|
+ Signature sign = Signature.getInstance("SHA256withRSA");
|
|
|
|
|
+ sign.initSign(privateKey);
|
|
|
|
|
+ sign.update(message.getBytes(StandardCharsets.UTF_8));
|
|
|
|
|
+ result.put("sign", Base64.getEncoder().encodeToString(sign.sign()));
|
|
|
|
|
+ result.put("timestamp", String.valueOf(timestamp));
|
|
|
|
|
+ result.put("nonce", nonce);
|
|
|
return R.data(result);
|
|
return R.data(result);
|
|
|
} catch (WXPayUtility.ApiException e) {
|
|
} catch (WXPayUtility.ApiException e) {
|
|
|
log.error("微信支付预支付失败,状态码:{},错误信息:{}", e.getErrorCode(), e.getMessage());
|
|
log.error("微信支付预支付失败,状态码:{},错误信息:{}", e.getErrorCode(), e.getMessage());
|
|
@@ -235,7 +254,7 @@ public class WeChatPaymentStrategyImpl implements PaymentStrategy {
|
|
|
CreateRequest request = new CreateRequest();
|
|
CreateRequest request = new CreateRequest();
|
|
|
// 微信支付订单号和商户订单号必须二选一,不能同时为空,查询的时候使用的是商户订单号
|
|
// 微信支付订单号和商户订单号必须二选一,不能同时为空,查询的时候使用的是商户订单号
|
|
|
//request.transactionId = "1217752501201407033233368018";
|
|
//request.transactionId = "1217752501201407033233368018";
|
|
|
- request.outTradeNo = UniqueRandomNumGenerator.generateUniqueCode(19);
|
|
|
|
|
|
|
+ request.outTradeNo = params.get("outTradeNo");
|
|
|
// 退款订单号
|
|
// 退款订单号
|
|
|
request.outRefundNo = UniqueRandomNumGenerator.generateUniqueCode(19);
|
|
request.outRefundNo = UniqueRandomNumGenerator.generateUniqueCode(19);
|
|
|
// 退款原因
|
|
// 退款原因
|
|
@@ -246,7 +265,7 @@ public class WeChatPaymentStrategyImpl implements PaymentStrategy {
|
|
|
//request.fundsAccount = ReqFundsAccount.AVAILABLE;
|
|
//request.fundsAccount = ReqFundsAccount.AVAILABLE;
|
|
|
// 金额信息
|
|
// 金额信息
|
|
|
request.amount = new AmountReq();
|
|
request.amount = new AmountReq();
|
|
|
- request.amount.refund = 888L;
|
|
|
|
|
|
|
+ request.amount.refund = new BigDecimal(params.get("refundAmount")).multiply(new BigDecimal(100)).longValue();
|
|
|
// 退款出资账户及金额 目前不需要,需要的时候再看
|
|
// 退款出资账户及金额 目前不需要,需要的时候再看
|
|
|
/*
|
|
/*
|
|
|
request.amount.from = new ArrayList<>();
|
|
request.amount.from = new ArrayList<>();
|
|
@@ -257,7 +276,7 @@ public class WeChatPaymentStrategyImpl implements PaymentStrategy {
|
|
|
request.amount.from.add(fromItem);
|
|
request.amount.from.add(fromItem);
|
|
|
};*/
|
|
};*/
|
|
|
// 订单总金额
|
|
// 订单总金额
|
|
|
- request.amount.total = 888L;
|
|
|
|
|
|
|
+ request.amount.total = new BigDecimal(params.get("totalAmount")).multiply(new BigDecimal(100)).longValue();
|
|
|
// 退款币种 目前默认人民币 CNY
|
|
// 退款币种 目前默认人民币 CNY
|
|
|
request.amount.currency = "CNY";
|
|
request.amount.currency = "CNY";
|
|
|
// 退款商品信息 目前不需要,需要的时候再看
|
|
// 退款商品信息 目前不需要,需要的时候再看
|
|
@@ -275,6 +294,7 @@ public class WeChatPaymentStrategyImpl implements PaymentStrategy {
|
|
|
};*/
|
|
};*/
|
|
|
try {
|
|
try {
|
|
|
Refund response = refundRun(request);
|
|
Refund response = refundRun(request);
|
|
|
|
|
+ String refundReslut = "";
|
|
|
// TODO: 请求成功,继续业务逻辑
|
|
// TODO: 请求成功,继续业务逻辑
|
|
|
System.out.println(response);
|
|
System.out.println(response);
|
|
|
} catch (WXPayUtility.ApiException e) {
|
|
} catch (WXPayUtility.ApiException e) {
|