diff --git a/pluss-api-page/src/main/java/cn/pluss/platform/controller/AlipayController.java b/pluss-api-page/src/main/java/cn/pluss/platform/controller/AlipayController.java index 66e056b..6ae6ca5 100644 --- a/pluss-api-page/src/main/java/cn/pluss/platform/controller/AlipayController.java +++ b/pluss-api-page/src/main/java/cn/pluss/platform/controller/AlipayController.java @@ -1,5 +1,6 @@ package cn.pluss.platform.controller; +import cn.pluss.platform.ali.AlipayService; import cn.pluss.platform.api.Result; import cn.pluss.platform.api.ResultGenerator; import cn.pluss.platform.dto.*; @@ -15,6 +16,7 @@ import cn.pluss.platform.notice.NoticeService; import cn.pluss.platform.userApp.UserAppService; import cn.pluss.platform.util.AliPayParam; import cn.pluss.platform.util.StringUtil; +import cn.pluss.platform.vo.AlipayVO; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; @@ -68,7 +70,8 @@ public class AlipayController { @Resource private MerchantIncomeService merchantIncomeService; - + @Resource + private AlipayService alipayService; @PostMapping @@ -379,8 +382,12 @@ public class AlipayController { // return merchantOrder; } - - + + +// @PostMapping("/phonePay") +// public Result phonePay(@RequestBody AlipayVO alipay) throws AlipayApiException { +// return alipayService.aliPayPhone(alipay.getOrderNo()); +// } /** * * merchantIncome:(添加收益记录).
diff --git a/pluss-api-page/src/main/java/cn/pluss/platform/controller/store/MercOrderNewController.java b/pluss-api-page/src/main/java/cn/pluss/platform/controller/store/MercOrderNewController.java index c594cd4..0019b0f 100644 --- a/pluss-api-page/src/main/java/cn/pluss/platform/controller/store/MercOrderNewController.java +++ b/pluss-api-page/src/main/java/cn/pluss/platform/controller/store/MercOrderNewController.java @@ -11,6 +11,7 @@ import cn.pluss.platform.entity.UserApp; import cn.pluss.platform.exception.MsgException; import cn.pluss.platform.userApp.UserAppService; import cn.pluss.platform.vo.MercOrderNewVO; +import com.alipay.api.AlipayApiException; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.ApiOperation; diff --git a/pluss-model-bundle/src/main/java/cn/pluss/platform/enums/MccAndStore.java b/pluss-model-bundle/src/main/java/cn/pluss/platform/enums/MccAndStore.java index af92e53..72a6747 100644 --- a/pluss-model-bundle/src/main/java/cn/pluss/platform/enums/MccAndStore.java +++ b/pluss-model-bundle/src/main/java/cn/pluss/platform/enums/MccAndStore.java @@ -17,7 +17,18 @@ public enum MccAndStore { FOOT(5,"7297"), - FAVITY(6,"8021"); + FAVITY(6,"8021"), + + PET(7,"5995"), + + WEDDING(8,"7277"), + + DRESS(9,"5699"), + + FLOWER(10,"5992"), + + WATER(11,"7299") + ; private final Integer value; diff --git a/pluss-model-bundle/src/main/java/cn/pluss/platform/vo/AlipayVO.java b/pluss-model-bundle/src/main/java/cn/pluss/platform/vo/AlipayVO.java new file mode 100644 index 0000000..10bb2ad --- /dev/null +++ b/pluss-model-bundle/src/main/java/cn/pluss/platform/vo/AlipayVO.java @@ -0,0 +1,15 @@ +package cn.pluss.platform.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class AlipayVO { + private BigDecimal totalAmount; + + private String subject; + + private String orderNo; + +} diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/AlipayService.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/AlipayService.java index 5109ca8..dec8c8d 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/AlipayService.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/AlipayService.java @@ -1,6 +1,16 @@ package cn.pluss.platform.ali; +import cn.pluss.platform.api.Result; + +import java.math.BigDecimal; + public interface AlipayService { void remit(String account, String realName, String money); + + /** + * H5手机支付 + * @return + */ + Object aliPayPhone(String orderNo); } diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/impl/AlipayServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/impl/AlipayServiceImpl.java index 6b792d6..f76dc64 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/impl/AlipayServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/impl/AlipayServiceImpl.java @@ -1,20 +1,37 @@ package cn.pluss.platform.ali.impl; import cn.pluss.platform.ali.AlipayService; +import cn.pluss.platform.api.Result; +import cn.pluss.platform.api.ResultGenerator; +import cn.pluss.platform.device.MercOrderNewService; +import cn.pluss.platform.entity.MercOrderNew; import cn.pluss.platform.exception.MsgException; +import cn.pluss.platform.util.ParametersUtil; import com.alibaba.fastjson.JSONObject; -import com.alipay.api.CertAlipayRequest; -import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.*; +import com.alipay.api.domain.AlipayTradeAppPayModel; import com.alipay.api.request.AlipayFundTransUniTransferRequest; +import com.alipay.api.request.AlipayTradeAppPayRequest; +import com.alipay.api.request.AlipayTradeWapPayRequest; import com.alipay.api.response.AlipayFundTransUniTransferResponse; +import com.alipay.api.response.AlipayTradeAppPayResponse; +import com.alipay.api.response.AlipayTradeWapPayResponse; import lombok.extern.slf4j.Slf4j; +import org.junit.Test; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.DecimalFormat; import java.util.UUID; @Slf4j @Service public class AlipayServiceImpl implements AlipayService { + + @Resource + private MercOrderNewService mercOrderNewService; + @Override public void remit(String account, String realName, String money) { try { @@ -35,9 +52,9 @@ public class AlipayServiceImpl implements AlipayService { certAlipayRequest.setFormat("json"); certAlipayRequest.setCharset("UTF-8"); certAlipayRequest.setSignType("RSA2"); - certAlipayRequest.setCertPath ( "/home/syb/cert/20220622/appCertPublicKey_2021003133649094.crt" ); - certAlipayRequest.setAlipayPublicCertPath ( "/home/syb/cert/20220622/alipayCertPublicKey_RSA2.crt" ); - certAlipayRequest.setRootCertPath ( "/home/syb/cert/20220622/alipayRootCert.crt" ); + certAlipayRequest.setCertPath("/home/syb/cert/20220622/appCertPublicKey_2021003133649094.crt"); + certAlipayRequest.setAlipayPublicCertPath("/home/syb/cert/20220622/alipayCertPublicKey_RSA2.crt"); + certAlipayRequest.setRootCertPath("/home/syb/cert/20220622/alipayRootCert.crt"); // certAlipayRequest.setAppId("2021003133649094"); // String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDP0ky+6wTP7mTiyuA3rfUXW9kibwU3q4V8R/zWE5zGOIaMv/bQ3La/0WWUGHd9K/bsgQ6GLBE+i74QU/3RzfdrbTvrL6GrLupMxxgdiikmvkhPRwkWVPghjNmbJhG6+gva1K8BfE0QtbP3oghnBc78TSyp02aoKFIjo98+21fXUQZs8yagoZBojoQ8zcSr09TsCB4BCm+nSEhD7yEa7HyPcX+FkMtRFXt0XsxnBwV/9T95vaBNGKQoNdvY5evIVRnSInc4E4k8MU3sm+YxrPHWMKWZJn2SP/1kPXIGc/IZkf6AZGeZXMNL36kz8k6Z/1f/TsOKioHX5J498ueuc1HvAgMBAAECggEARDtKoUAuQ0qE6wUq2n0NxA6O2sRSlTWGTQihlXO4/EegvWNlWKuugInybM4fpQQjPQEeUKT1QHDHBTteUVzrR+UEUDJCRR7RJEYVv9UVr7e3q/epnyBkmzdQVqUIGzhvXfiIQNebwcm2fa5ATfrVO3bnHBbhVIJwfW0XJd8EFxfWonUDjtPfk8wTEjmNqz6vXhpk3ncV7MMY07ehbYaMA4NbbysABKRP0S9515JUX0NkBtxnhVm2ojcoc1Wjy3//TN8RXpC17E1Tyd/9pQIxmosLjS1gcX1WzphMZU0Y/74yHiE0WQCKP3J6PkdBTQDIqubyRdErJ9TYSe9+u3OZyQKBgQDrtap3LItv8IjH6O5Lg4xMU9r9dFW8QVc3dD1yn+wWq5x54mnUo5d6cTa7HqZ9SgS7gxWQZG/km9R2cJLQsATlQjdHyEoNKtqdgl3vB8MGK+Lwh6vNhE2z2svRJqQpzZfs1dKwI74mASDzwu/HjdkOFO2BVzjG3IPmrDRmN+7w8wKBgQDhthAKdbkhb7vjlgckGqDyy28QVb1YfZ4YzwW5aZiAhBmQhfZZEB5/KAYKRkToFg6Nqz6cBHwb1rH1YtOua8Dgr5XsqPQz9+MCCrUKxVt/1ziWhkpaNxEobT7QYtJiaGvuLxGP7uqpJGDpePCLHQTxmocsj8UgEE49HDj4qlO6FQKBgFGip5mC2gA5BIaITA/nTa4Z1Ny3cAI1dymDnsyWSsRHR3iHTDQTPKFxmI0SPoNiIWV4Lv3Fa2N3/QvQTWjtraRhXJgF7G/HCdRHlJT20TrP9FduBbi2O9swyip0AaNgy1+BZukOWAr9lRYXy8gHfsd7xA5p0QY+1YgM2FEWyjC1AoGBAKaSAsKFYGuRltp9BKYbVL35bexjKgodIkhyt2m+yQHG+0rR4hyWLbtvYQ3CD+YrKPBZ+SmQkbrFta0/ErL86Gmoiv8NLLMRdCE0n6jkPwNYZHWJg2OSkgIApUOKOnLPVx9+8voCuoC6zR5f1z0C3Hwkqy8ypqpj/ilRI6Y3pPSFAoGAaxBlqCUBFEhs/FnYf9neoPzx9WYDmJY7PgNgZ/s0H9vaGqyWPLWyF95/dTZ5yrBsABQyuIfDa2/m8y1YJaIJ/qU29FDq/GMv6IX4zDgm2iaWNZFnMoW7qSEkpVISSLoVxat4D556YI6FrQeoUAS+L1iEFgS33ln1tTyqb7mSe00="; @@ -86,4 +103,137 @@ public class AlipayServiceImpl implements AlipayService { throw new MsgException(e.getMessage()); } } + + @Override + public Object aliPayPhone(String orderNo) { + MercOrderNew mercOrder = mercOrderNewService.getOrderByNo(orderNo); + if (mercOrder == null) { + throw new MsgException("订单号有误"); + } + + //app + mercOrder.setOrderNo(orderNo); + mercOrder.setOrderAmt(mercOrder.getOrderAmt()); + mercOrder.setReceiver(mercOrder.getReceiver()); + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", ParametersUtil.ZY_ALI_APP_ID, + ParametersUtil.ZY_PRI, "json", "UTF-8", ParametersUtil.ZY_PUB, "RSA2"); + AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); + request.setNotifyUrl(ParametersUtil.domain+"/wap/merchant/aliCallBack"); + request.setReturnUrl(""); + JSONObject bizContent = new JSONObject(); + bizContent.put("out_trade_no", mercOrder.getOrderNo()); + bizContent.put("total_amount", mercOrder.getOrderAmt()); + bizContent.put("subject", mercOrder.getReceiver()); + + /************/ + + bizContent.put("product_code", "QUICK_MSECURITY_PAY"); + request.setBizContent(bizContent.toString()); + AlipayTradeWapPayResponse response = null; + try { + response = response = alipayClient.sdkExecute(request); + } catch (AlipayApiException e) { + throw new RuntimeException(e); + } + + if (response.isSuccess()) { + System.out.println("success"); + String body = response.getBody(); + return body; + } else { + System.out.println("fail"); + return "支付失败"; + } + +// String privateKey = ParametersUtil.ZY_PRI; +// String alipayPublicKey = ParametersUtil.ZY_PUB; +// AlipayConfig alipayConfig = new AlipayConfig(); +// alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do"); +// alipayConfig.setAppId(ParametersUtil.ZY_ALI_APP_ID); +// alipayConfig.setPrivateKey(privateKey); +// alipayConfig.setFormat("json"); +// alipayConfig.setAlipayPublicKey(alipayPublicKey); +// alipayConfig.setCharset("UTF-8"); +// alipayConfig.setSignType("RSA2"); +// AlipayClient alipayClient = null; +// try { +// alipayClient = new DefaultAlipayClient(alipayConfig); +// } catch (AlipayApiException e) { +// throw new RuntimeException(e); +// } +// AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); +// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); +// model.setOutTradeNo(mercOrder.getOrderNo()); +// model.setTotalAmount(mercOrder.getOrderAmt().toString()); +// model.setSubject(mercOrder.getReceiver()); +// request.setBizModel(model); +// AlipayTradeAppPayResponse response = null; +// try { +// response = alipayClient.sdkExecute(request); +// } catch (AlipayApiException e) { +// throw new RuntimeException(e); +// } +// +// if (response.isSuccess()) { +// System.out.println("调用成功"); +// return ResultGenerator.genSuccessResult(response.getBody()); +// } else { +// System.out.println("调用失败"); +// return ResultGenerator.genFailResult("支付失败"); +// } + } + + public String moneyForMat(BigDecimal amount) { + DecimalFormat formatter = new DecimalFormat("#0.00"); + String formattedAmount = formatter.format(amount); + + return formattedAmount; + } + + public static void main(String[] args) throws AlipayApiException { + MercOrderNew mercOrder = new MercOrderNew(); +//// if (mercOrder == null){ +//// throw new MsgException("订单号有误"); +//// } + mercOrder.setOrderNo("b3dc8aab4f204be7b7bc6738dc91ddd2"); + mercOrder.setOrderAmt(new BigDecimal("0.1")); + mercOrder.setReceiver("测测测"); + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", "2021003175619219", + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCInywsrhhiSNj7jjOB4/zL79pAaLzoYOuOqHeQELxgXrVFmpqJ7y76wniu4nrHKfp4jQVIHw4+IkBsTNwABTPiryVzAQ4ydb/opzn4zblWRB4S7mAgnc2wqO4FMcwSOiHh7uPFAqvB8oZmEizlbXIJSiDFd3rqG2l8ZADjwuwM0nue1fUJLu65d2B6NDFgBIa11enkrNyX9uPiaeIFW62lvTN1W2AUqTJLvfko5ejExGUDkie6g5W5MIvUSKfq7sDkpt5IoQCooBzjJJ/Ckfw/rJlqoPDFzUSiANBABwu0jAJ42MGYdJ8+dyDDUNla20xmMjXbRtUe5roVzJrrgMjFAgMBAAECggEAPKPx9o77sbxF2zod8JxiW57Fj+stVjOWuoZaM27KPjgrW46o42pvvsvMx0stVfNzAkkNvBpUtw167Nccm0Gz6vz0sVwZkhojqT94gs/FYN3xP1PhBPkmEDCbHWEiBEEbQu5G2O47kGV2dB3DIb53bFoju6Ixw3GRW64DmxSss2+ZsErAWPBwbxIbUDGzIxtGhuWrvWX6pSnnvs+PNNqyoisXnh4cDjrmS9qSgsgcL4D0HwNGTsG1uBeLx4g3D2vKKqhP1osEly91P0QAGzcpuvKqeJ2ZwfFMDlabeOyqRQxFW/FLT2DuY1KmBhcGx6tjDMo7EEpVJ7NHcSHYfAa6wQKBgQDzZbIAV7shEiwS6ZwLSbeMvJkWELJtmEGk/qI/01tULHmrwDh8FIjbrHZrQNXruZ+dS+RObahCKywjYVEr/g15v5vv4yA20bmUgmO27/mVj6mpwvoHYBn0H/511a6V7lopFlCA735K+liFZ6ZW+qZxV8gkZ3/ZZDUy1LSArQmg8QKBgQCPsiK+mUdvs+1ReDm09RessbastXgYvj6UWIsPHc4Mxx/6R8qgy9nt2n2u95cK2uONtpNWswpDtOeWVakuHSKHbdG7Xz0DlklHuzin2JhOBwBu36HAVDjWPF+JDcVkUz7hFWFwl0DawRijFBcr0OV6GUoUURB21xtRnrQPmK/lFQKBgHPWFE7hceedVGhz0ZX1sWtDXsAHlkNeUO+LWAB0QGTg/c7lnnw+8ZtKitkkdCrJntMniTJiMc+76De2WwFK2XL14+rY9z3ftiidnYM01l19j8uBRak47WEn0NyXo40rcLFZM1sJn9tjJbnnyFxg0dHjaxcYQtpdPIxCet06fPihAoGAfaqJ3CnsYXH3H4KG5Qxa8fpRCWWCbBEkZVOx+TxVkLMr8hOKz2i3Y93qgHOisimPS8XZwL6/QUsaJU0wsVVldw7Blp3JnDN4TrUa7R7sw4A4Dr6glLSTKDiQTCmw8PYkTXAHURHV8/le9G+DfBwqM8eeE3p5bZTdHVovmlwrp6kCgYEA7uTSOa0phZ7ts++FVdEZf9TI/B4tRuP4aT31BHs9UoCW1g01/NEEBDiHV9udq9B6Cd5onq+QFj4jiwakTNzXjhQZqgmag1TBE9VpahLxYAD5pYn/Tvm8l5vWuSKcOSwQb2lDg5R2/bmCJRV/QHRkdkAAhHGC/TrOskUCRgosUac=", + "json", "UTF-8", "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiQkrz+emAuS1mB3KKDOMmAZRd/BlPbh7fAIHAqAj1+QCZNcV3o2BTLIIqnuKpSlFXDG3uDzp2VsBxcizXuBbFyPGylnD9CgCj5abyh3+FIHPAZ2IM3TtpqImZ0TSPGXrMli4Nir7MvZktgccCqQKCC4o6iaDGz+UwWwJUIPna8fm2tiTZ+KH150CZbKVj4ZGNpBh5XSV/1dRgyQIV9D/EwSbkZ0n6VgKQLJBi0C2UE3QB17aL1Ir6+gDXIDbknN8O7GUD3aMGdThYdSRUb5wp9CZ5qfV7vCS/CgaRo38nhH3NOzkTL+7v0m1ZDHPmqEkn9VzZN6sCQdL7PoAOjHOCwIDAQAB", "RSA2"); + AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); + + JSONObject bizContent = new JSONObject(); + bizContent.put("out_trade_no", mercOrder.getOrderNo()); + bizContent.put("total_amount", mercOrder.getOrderAmt()); + bizContent.put("subject", mercOrder.getReceiver()); + + + /************/ + + bizContent.put("product_code", "QUICK_MSECURITY_PAY"); + request.setBizContent(bizContent.toString()); + AlipayTradeWapPayResponse response = null; + try { + response = alipayClient.sdkExecute(request); + } catch (AlipayApiException e) { + throw new RuntimeException(e); + } + + if (response.isSuccess()) { + System.out.println("success"); + System.out.println(response.getBody()); + } else { + System.out.println("fail"); + + } + } + + // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接 + // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response); + // System.out.println(diagnosisUrl); + + + } + diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/device/impl/MercOrderNewServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/device/impl/MercOrderNewServiceImpl.java index e1e3bcb..8a41459 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/device/impl/MercOrderNewServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/device/impl/MercOrderNewServiceImpl.java @@ -1,6 +1,7 @@ package cn.pluss.platform.device.impl; import cn.pluss.platform.ali.AliService; +import cn.pluss.platform.ali.AlipayService; import cn.pluss.platform.api.ResultCode; import cn.pluss.platform.constants.Constant; import cn.pluss.platform.device.DeviceSpecService; @@ -111,6 +112,8 @@ public class MercOrderNewServiceImpl extends ServiceImpl impl bankCardService.save(accountDTO.getBankCard()); account.setBankCardId(accountDTO.getBankCard().getId() + ""); + + System.out.println("old+++++++++++++++"+JSONUtil.toJsonStr(accountOld)); //看一下之前默认 - if (accountOld.getValid() == 1) { + if (accountOld == null || accountOld.getValid() == null || accountOld.getValid() == 1 ) { account.setValid(1); } else { account.setValid(0); diff --git a/pluss-wap-page/src/main/java/cn/pluss/platform/controller/home/WechantController.java b/pluss-wap-page/src/main/java/cn/pluss/platform/controller/home/WechantController.java index d7aaab5..94ca9ec 100644 --- a/pluss-wap-page/src/main/java/cn/pluss/platform/controller/home/WechantController.java +++ b/pluss-wap-page/src/main/java/cn/pluss/platform/controller/home/WechantController.java @@ -486,6 +486,7 @@ public class WechantController { String orderNumber = params.getString("orderNumber"); System.out.println("orderNumber"+orderNumber); String appId=params.containsKey("appId")?params.getString("appId"):null; + System.out.println("appid++++"+appId); return apiPayService.orderPay(openid,orderNumber,appId); }