|
@@ -11,8 +11,6 @@ import cn.hutool.json.JSONUtil;
|
|
|
import com.ijpay.core.IJPayHttpResponse;
|
|
|
import com.ijpay.core.enums.AuthTypeEnum;
|
|
|
import com.ijpay.core.enums.RequestMethodEnum;
|
|
|
-import com.ijpay.core.enums.SignType;
|
|
|
-import com.ijpay.core.enums.TradeType;
|
|
|
import com.ijpay.core.kit.AesUtil;
|
|
|
import com.ijpay.core.kit.HttpKit;
|
|
|
import com.ijpay.core.kit.PayKit;
|
|
@@ -22,11 +20,12 @@ import com.ijpay.wxpay.WxPayApi;
|
|
|
import com.ijpay.wxpay.enums.WxDomainEnum;
|
|
|
import com.ijpay.wxpay.enums.v3.BasePayApiEnum;
|
|
|
import com.ijpay.wxpay.enums.v3.CertAlgorithmTypeEnum;
|
|
|
-import com.ijpay.wxpay.model.v3.Amount;
|
|
|
-import com.ijpay.wxpay.model.v3.Payer;
|
|
|
-import com.ijpay.wxpay.model.v3.UnifiedOrderModel;
|
|
|
+import com.ijpay.wxpay.enums.v3.TransferApiEnum;
|
|
|
+import com.ijpay.wxpay.model.v3.*;
|
|
|
import com.ylx.common.config.WxPayConfig;
|
|
|
import com.ylx.common.core.domain.R;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -35,9 +34,9 @@ import org.springframework.web.bind.annotation.*;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.ByteArrayInputStream;
|
|
|
-import java.math.BigDecimal;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
import java.security.cert.X509Certificate;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -51,6 +50,7 @@ import static com.ylx.common.constant.HttpStatus.SUCCESS;
|
|
|
|
|
|
@RestController
|
|
|
@Slf4j
|
|
|
+@Api(tags = {"微信支付"})
|
|
|
public class PayController {
|
|
|
|
|
|
|
|
@@ -64,6 +64,7 @@ public class PayController {
|
|
|
* 小程序微信支付的第一步,统一下单
|
|
|
*/
|
|
|
@GetMapping("/pay")
|
|
|
+ @ApiOperation("AIPV3微信支付")
|
|
|
public R createUnifiedOrder(@RequestParam(value = "openId") String openId) throws Exception {
|
|
|
String timeExpire = DateTimeZoneUtil.dateToTimeZone(System.currentTimeMillis() + 1000 * 60 * 3);
|
|
|
UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel()
|
|
@@ -140,6 +141,7 @@ public class PayController {
|
|
|
|
|
|
@RequestMapping(value = "/payNotify", method = {org.springframework.web.bind.annotation.RequestMethod.POST, org.springframework.web.bind.annotation.RequestMethod.GET})
|
|
|
@ResponseBody
|
|
|
+ @ApiOperation("微信支付回调接口")
|
|
|
public void payNotify(HttpServletRequest request, HttpServletResponse response) {
|
|
|
Map<String, String> map = new HashMap<>(12);
|
|
|
try {
|
|
@@ -260,6 +262,51 @@ public class PayController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @RequestMapping("/batchTransfer")
|
|
|
+ @ApiOperation("微信批量提现")
|
|
|
+ @ResponseBody
|
|
|
+ public String batchTransfer(@RequestParam(value = "openId", required = false, defaultValue = "o-_-itxuXeGW3O1cxJ7FXNmq8Wf8") String openId) {
|
|
|
+ try {
|
|
|
+ BatchTransferModel batchTransferModel = new BatchTransferModel()
|
|
|
+ .setAppid(wxPayProperties.getAppId())
|
|
|
+ .setOut_batch_no(PayKit.generateStr())
|
|
|
+ .setBatch_name("IJPay 测试微信转账到零钱")
|
|
|
+ .setBatch_remark("IJPay 测试微信转账到零钱")
|
|
|
+ .setTotal_amount(1)
|
|
|
+ .setTotal_num(1)
|
|
|
+ .setTransfer_detail_list(Collections.singletonList(
|
|
|
+ new TransferDetailInput()
|
|
|
+ .setOut_detail_no(PayKit.generateStr())
|
|
|
+ .setTransfer_amount(1)
|
|
|
+ .setTransfer_remark("IJPay 测试微信转账到零钱")
|
|
|
+ .setOpenid(openId)));
|
|
|
+
|
|
|
+ log.info("发起商家转账请求参数 {}", JSONUtil.toJsonStr(batchTransferModel));
|
|
|
+ IJPayHttpResponse response = WxPayApi.v3(
|
|
|
+ RequestMethodEnum.POST,
|
|
|
+ WxDomainEnum.CHINA.toString(),
|
|
|
+ TransferApiEnum.TRANSFER_BATCHES.toString(),
|
|
|
+ wxPayProperties.getMchId(),
|
|
|
+ getSerialNumber(),
|
|
|
+ null,
|
|
|
+ wxPayProperties.getCertKeyPath(),
|
|
|
+ JSONUtil.toJsonStr(batchTransferModel)
|
|
|
+ );
|
|
|
+ log.info("发起商家转账响应 {}", response);
|
|
|
+ // 根据证书序列号查询对应的证书来验证签名结果
|
|
|
+ boolean verifySignature = WxPayKit.verifySignature(response, wxPayProperties.getPlatFormPath());
|
|
|
+ log.info("verifySignature: {}", verifySignature);
|
|
|
+ if (response.getStatus() == SUCCESS && verifySignature) {
|
|
|
+ return response.getBody();
|
|
|
+ }
|
|
|
+ return JSONUtil.toJsonStr(response);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("系统异常", e);
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
|