diff --git a/gan-modules/ruoyi-gan/pom.xml b/gan-modules/ruoyi-gan/pom.xml index 7d6f8fa..990a428 100644 --- a/gan-modules/ruoyi-gan/pom.xml +++ b/gan-modules/ruoyi-gan/pom.xml @@ -130,7 +130,7 @@ com.alipay.sdk alipay-sdk-java - 4.39.60.ALL + 4.39.68.ALL diff --git a/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/controller/PayController.java b/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/controller/PayController.java index 38e5bf9..c538d1c 100644 --- a/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/controller/PayController.java +++ b/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/controller/PayController.java @@ -476,7 +476,8 @@ public class PayController extends BaseController @PostMapping(value = "/aliPay") @ApiOperation(value = "支付宝支付", notes = "支付宝支付", httpMethod = "POST") public String aliPay(@RequestBody AppOrderArg appOrderArg) throws Exception{ - String orderNo = KeyUtil.generateUniqueKey(); + return alipayService.startPay(); + /*String orderNo = KeyUtil.generateUniqueKey(); AlipayTradeCreateResponse result = null; try { result = alipayService.startPay(orderNo, appOrderArg.getPrice()); @@ -499,6 +500,6 @@ public class PayController extends BaseController return orderStr; } else { return null; - } + }*/ } } diff --git a/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/service/AlipayService.java b/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/service/AlipayService.java index ea2df54..7063759 100644 --- a/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/service/AlipayService.java +++ b/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/service/AlipayService.java @@ -2,10 +2,14 @@ package com.ruoyi.app.service; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; +import com.alipay.api.AlipayConfig; import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.domain.AlipayTradeAppPayModel; import com.alipay.api.internal.util.AlipaySignature; +import com.alipay.api.request.AlipayTradeAppPayRequest; import com.alipay.api.request.AlipayTradeCreateRequest; import com.alipay.api.request.AlipayTradePagePayRequest; +import com.alipay.api.response.AlipayTradeAppPayResponse; import com.alipay.api.response.AlipayTradeCreateResponse; import com.ruoyi.app.domain.dto.KeyUtil; import org.springframework.beans.factory.annotation.Value; @@ -27,7 +31,7 @@ public class AlipayService { private static String APP_PRIVATE_KEY = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCavGqUrH2Q37jLzEvQzUizyTT6DPJ+8CoBvGYASjkDGfLyXtMSQKaWdhRi/RdNzd/7PT4+I/0Q96B4n+ykUiApygNqW02AmSilClPtski5nl+ur/BBdJq8aUaoj+/DBneiVqyYge8eagEcfp1m1Ou8BLeFZUoOVzLcO0aysw7aTpA3LPwda0VkQghfYsCvajLYR35F7kEE0Fo8AUzgDZCZn3QI4x72QTpBlZxte0xpx8uLYUFfItm1uhcX2cmXfH86JzLJuKy1lOV6xuu5zh6i8Ba0nEn47L1wuYYBJUREWl7cc1/QnEyWToNdbYF7Lm3EWDM7JUYDHkt/T6Q1lZBHAgMBAAECggEAAOnp6zTVjPx1N+bd7762ljEy+eMHr441gUsegxPtIEKP97RtpKbzFOJfnnIGKDR2BSLIck9+GBKORQgUuqetfvGtcXxWidLdtZPJCRdLbKUtxXdOgORyYXhxrV8kOE+adz/xxvjFc7WGiieJQGkzdynD96qwdEM5jqle8oEyLkHUIY21wFsAChp0mJpdlV6C214FeahgRhEWVcPVz0LcyVKzChWrCnKFp6kmaAr1HQK/i9e1zI/6kr2BYdkp1hCQq6X3LKj8KHLZ2HtbPHjTDzStpXdocsuSi/C1+17oWAYDNy3KFNPLhhwi59MHow9elMTfyTdH1msWKVsHJtcWoQKBgQDnfNDq757DE9Ztjt1zAhY9Byqo4AYiZrL34xE4Sw47f3RUo1pmiaROuWwAdnzmbP7SRaURRRCbj0PO4Rtd4PlOW7IvkzGJ+M6HjiqrTzaO93LFUrdCpJ9k6lr15xko1dr77coAN57GfSwWy/H8Vdcx0iJNcI85EG+ELrEDrUIJUQKBgQCrHwM5fK56+B0V0IvLiYtgZgfFEqf/5VFgde5glzLl2QUtblO3r7amnXWjHR61Y2iwHeAlVmoh5EKaqs6BZDid4AVWJeKK96RvkIdFKRBDk9ldMZG8cg5G/Jt45TNTCwl7R/XvZXmnPGstwH3cZ3yD9TeD1Hbsu9QZtbQe90yaFwKBgQCu1cyMxLIqMF9xm8eRx2+4ZCNKLPk1Hk/pfWxSEg4LzfW0vzPV4fthIhZ6OwOWnZfQhJ1pb7pdY1UZeVdMDlD9Z7Aq0odF589E/pEnlcplLGtYsWKMSP3CIGbW9tY/y1V7lVtN0rRuwbd8+EgqB0Ni84zI5EyoEsvHD+TOHBuWIQKBgQCmiJP2ymRzwCtuI3spJj7CHgnJvRJKc73yhlLrJbqe/cmQISLQTO0Q0YS+rYRJOumTHEAbljHLsf0v0LMQMZz36CDJai1C2SbqfFlo8UGmwqhzjd4q60UByKz1xvlgBAnCNJIf3T27h403BXJ3oS8IrQjN/2ONmG4eZztYN4wRGQKBgGfKV3dU1MKAAN1xkqmeAhCmEk73oGIRe580I3TvSnNXJVooo/F7GLARxMZkBpGjpDh7mtfqwkk3hrLD3VGd+JzdVlEbZpGbLlukk5OPJ/iT1RbTNqWfFx/TUpohtc2yFiYeQcxmOP/XkqK2zgosepk//wRSLvyvg3+hcTglHokW"; // 支付宝公钥 - private static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyCpeqEUH58ZlTyGvHMD5/L46XVMJAWz5hRdp7oc5KRVt+7IhrNsqLwqRIp5jDXP8HjdnBOkuGb8FvnKSXwN4ydbR0PXXKIm1HSclJH2A3qjeYDuO1QJiE6UU/eB69sdTEfbnMqAaCPsFAbnCgvRZ+zowpVPqfZOs83812O8j+8UC8rEDyCtot26wLiz71Ccs5WzxQBVK02m258L5R43yb4NP9pXF8KZFg9vNpqTVHtX3p/PuMng6NSCbw2praghj8VFT849VPT0uGYRAEbx9uY3R+Y/GJtDlk4oYtMcA+56puudqGvPP96JhHYI5fr5M6IKewZTthG15P2li9dUCwwIDAQAB"; + private static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmrxqlKx9kN+4y8xL0M1Is8k0+gzyfvAqAbxmAEo5Axny8l7TEkCmlnYUYv0XTc3f+z0+PiP9EPegeJ/spFIgKcoDaltNgJkopQpT7bJIuZ5frq/wQXSavGlGqI/vwwZ3olasmIHvHmoBHH6dZtTrvAS3hWVKDlcy3DtGsrMO2k6QNyz8HWtFZEIIX2LAr2oy2Ed+Re5BBNBaPAFM4A2QmZ90COMe9kE6QZWcbXtMacfLi2FBXyLZtboXF9nJl3x/OicyybistZTlesbruc4eovAWtJxJ+Oy9cLmGASVERFpe3HNf0JxMlk6DXW2Bey5txFgzOyVGAx5Lf0+kNZWQRwIDAQAB"; // 格式化 private static final String FORMAT = "json"; // 字符编码 @@ -39,6 +43,67 @@ public class AlipayService { private static final String SUBJECT = "订单充值"; + + /*String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQChzpB6JWlP/2ZWtxcjvphN/ePSCkWYe1hSRwOyy+3jTvA31aVuPOOgC0WludwqLnWJnn6JV5m+Q7ZyJ4sOWmU4f+dDs2F31zrb21QLmF9ZcNpveVTsPQFYCZER2VU8ckLkIqS4RSKySJFGzbmuYyu+nIOct6dUoEhpEa+8o6k9cykplmoXI2wCn24c87qGLkKsvZQrT2nWI46ua57AvBAbkEGkFIbS4FxggP6Z1rUbj3tAREpEO7VQFvfe/DISIzer91U+yEnlmcz9nPhxmaIc0o8xbTW2surSMfoIzXkV8xit9EclGXkb4fZPr8t4N/viEVigQPGw9vxoDrKLhUphAgMBAAECggEAPnd1tYI97wFlq/KRP150hB+RVWRby+tKhLEfz2YFV+0Atj2H2VAufHn9kGZ5hdtbyx5iMXmdRCP2CooTmB3z1+UhDjTxWwe/lGNPRg60ON5lpgWMcIt4ulkvJVnnGyfthQ+O0gj2xSdY1qHTnmxw1eysrtMECZq7eby3QLdaPftYm/g57mHAjruUZBvylEBCnEpY94y7qyYUtgdefDB9n0NIVpqkUjIqOZutZsCjxkFEQlKerPJPllCzuzPQS3YHxTBLdu89F2JGHeMwO17f7XzA7OS3Jf6OvbyQ1OuoAF+NWnojzrehwhh4fqcg5I3rm/opZzgFvb4KxK6mc4sVwQKBgQD2C32Iv1RgCKVAURwKWogIZSkScs8Am2WIP/iCK4sX1+rRbCFlc6TaTqO3hSyR1CeSWwpdB/6TqfMCklCj0pLCiATzbWfSCQoDq6LxfHvs2o/ilu8T/qV5qI5CnugIzSni/3NfBEz2vwjHS8PAGyHrvedTay9SjEeFaDIzTm7eOQKBgQCoWot6zzJEKGXn5y2s828yQBU82OnE+OAf8sjT4MY5lF65+JmbARaIMY40OejA/fUngC/4bi6oNExEv5Y94w+E8VryZOm4lMzDevuImJWQoJsFoHS4rMtAaQly8GRpk18flVB9B1ZLM345sujcnFjPnmJInvDuI2cQaf8rsN1NaQKBgBWTbl+2f3yoZW1db3sM807hKBfhD3v7JI0tJuqrTNg7a/EPbWJLINKwALVQLVdgZlP0PdVopQ9n4NKB6CZlic8bRGvgVTFa75Dg1Tod83QSunlhSPfU5cfkWw1GiAx1iU3JnuFfLCybFfb8Et9ewbu9fHKZPJ4dhQwS1gwfvaMpAoGARE1/+1JmxWpSdfS//kRBn/SJ6UbkCSsj2zJoMjYmliPRDsiCoXWei6D3Xc8E1I/0T5NdYwBo44tcSiQks3UUzc4SJPe2L1IHhWO2+2NUgvn2CyFfWbGZQMecsso/IupMlIbCwgchBp+cnZItkZvJGGrc2zPI8gThArLOeQ5nqskCgYAxkVuRjkrY3Ide2bl17MD/qUZGUrXgfZJxOFI0ya+QinnGrPAxQaWZqyatp663DHOnMjD68Me8t/czhgMLm5g7VcxxPp60Qsx/9F/7l80LacFhMCrhCFW6GNSN1oFyAxokBBe+NgqDJIMJMk3zD4C5SvT1yc19TxoxEwa8lqgLLw=="; + String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyCpeqEUH58ZlTyGvHMD5/L46XVMJAWz5hRdp7oc5KRVt+7IhrNsqLwqRIp5jDXP8HjdnBOkuGb8FvnKSXwN4ydbR0PXXKIm1HSclJH2A3qjeYDuO1QJiE6UU/eB69sdTEfbnMqAaCPsFAbnCgvRZ+zowpVPqfZOs83812O8j+8UC8rEDyCtot26wLiz71Ccs5WzxQBVK02m258L5R43yb4NP9pXF8KZFg9vNpqTVHtX3p/PuMng6NSCbw2praghj8VFT849VPT0uGYRAEbx9uY3R+Y/GJtDlk4oYtMcA+56puudqGvPP96JhHYI5fr5M6IKewZTthG15P2li9dUCwwIDAQAB"; + AlipayConfig alipayConfig = new AlipayConfig(); + alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do"); + alipayConfig.setAppId("9021000136647545"); + alipayConfig.setPrivateKey(privateKey); + alipayConfig.setFormat("json"); + alipayConfig.setAlipayPublicKey(alipayPublicKey); + alipayConfig.setCharset("UTF-8"); + alipayConfig.setSignType("RSA2"); + AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig); + AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); + AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); + model.setOutTradeNo("70501111111S001111119"); + model.setTotalAmount("9.00"); + model.setSubject("大乐透"); + request.setBizModel(model); + AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); + String orderStr = response.getBody(); + System.out.println(orderStr); + if (response.isSuccess()) { + System.out.println("调用成功"); + } else { + System.out.println("调用失败"); + // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接 + // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response); + // System.out.println(diagnosisUrl); + } +}*/ + public String startPay() throws AlipayApiException{ + /*String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQChzpB6JWlP/2ZWtxcjvphN/ePSCkWYe1hSRwOyy+3jTvA31aVuPOOgC0WludwqLnWJnn6JV5m+Q7ZyJ4sOWmU4f+dDs2F31zrb21QLmF9ZcNpveVTsPQFYCZER2VU8ckLkIqS4RSKySJFGzbmuYyu+nIOct6dUoEhpEa+8o6k9cykplmoXI2wCn24c87qGLkKsvZQrT2nWI46ua57AvBAbkEGkFIbS4FxggP6Z1rUbj3tAREpEO7VQFvfe/DISIzer91U+yEnlmcz9nPhxmaIc0o8xbTW2surSMfoIzXkV8xit9EclGXkb4fZPr8t4N/viEVigQPGw9vxoDrKLhUphAgMBAAECggEAPnd1tYI97wFlq/KRP150hB+RVWRby+tKhLEfz2YFV+0Atj2H2VAufHn9kGZ5hdtbyx5iMXmdRCP2CooTmB3z1+UhDjTxWwe/lGNPRg60ON5lpgWMcIt4ulkvJVnnGyfthQ+O0gj2xSdY1qHTnmxw1eysrtMECZq7eby3QLdaPftYm/g57mHAjruUZBvylEBCnEpY94y7qyYUtgdefDB9n0NIVpqkUjIqOZutZsCjxkFEQlKerPJPllCzuzPQS3YHxTBLdu89F2JGHeMwO17f7XzA7OS3Jf6OvbyQ1OuoAF+NWnojzrehwhh4fqcg5I3rm/opZzgFvb4KxK6mc4sVwQKBgQD2C32Iv1RgCKVAURwKWogIZSkScs8Am2WIP/iCK4sX1+rRbCFlc6TaTqO3hSyR1CeSWwpdB/6TqfMCklCj0pLCiATzbWfSCQoDq6LxfHvs2o/ilu8T/qV5qI5CnugIzSni/3NfBEz2vwjHS8PAGyHrvedTay9SjEeFaDIzTm7eOQKBgQCoWot6zzJEKGXn5y2s828yQBU82OnE+OAf8sjT4MY5lF65+JmbARaIMY40OejA/fUngC/4bi6oNExEv5Y94w+E8VryZOm4lMzDevuImJWQoJsFoHS4rMtAaQly8GRpk18flVB9B1ZLM345sujcnFjPnmJInvDuI2cQaf8rsN1NaQKBgBWTbl+2f3yoZW1db3sM807hKBfhD3v7JI0tJuqrTNg7a/EPbWJLINKwALVQLVdgZlP0PdVopQ9n4NKB6CZlic8bRGvgVTFa75Dg1Tod83QSunlhSPfU5cfkWw1GiAx1iU3JnuFfLCybFfb8Et9ewbu9fHKZPJ4dhQwS1gwfvaMpAoGARE1/+1JmxWpSdfS//kRBn/SJ6UbkCSsj2zJoMjYmliPRDsiCoXWei6D3Xc8E1I/0T5NdYwBo44tcSiQks3UUzc4SJPe2L1IHhWO2+2NUgvn2CyFfWbGZQMecsso/IupMlIbCwgchBp+cnZItkZvJGGrc2zPI8gThArLOeQ5nqskCgYAxkVuRjkrY3Ide2bl17MD/qUZGUrXgfZJxOFI0ya+QinnGrPAxQaWZqyatp663DHOnMjD68Me8t/czhgMLm5g7VcxxPp60Qsx/9F/7l80LacFhMCrhCFW6GNSN1oFyAxokBBe+NgqDJIMJMk3zD4C5SvT1yc19TxoxEwa8lqgLLw=="; + String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyCpeqEUH58ZlTyGvHMD5/L46XVMJAWz5hRdp7oc5KRVt+7IhrNsqLwqRIp5jDXP8HjdnBOkuGb8FvnKSXwN4ydbR0PXXKIm1HSclJH2A3qjeYDuO1QJiE6UU/eB69sdTEfbnMqAaCPsFAbnCgvRZ+zowpVPqfZOs83812O8j+8UC8rEDyCtot26wLiz71Ccs5WzxQBVK02m258L5R43yb4NP9pXF8KZFg9vNpqTVHtX3p/PuMng6NSCbw2praghj8VFT849VPT0uGYRAEbx9uY3R+Y/GJtDlk4oYtMcA+56puudqGvPP96JhHYI5fr5M6IKewZTthG15P2li9dUCwwIDAQAB";*/ + AlipayConfig alipayConfig = new AlipayConfig(); + alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do"); + alipayConfig.setAppId("2021004144677656"); + alipayConfig.setPrivateKey(APP_PRIVATE_KEY); + alipayConfig.setFormat("json"); + alipayConfig.setAlipayPublicKey(ALIPAY_PUBLIC_KEY); + alipayConfig.setCharset("UTF-8"); + alipayConfig.setSignType("RSA2"); + AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig); + AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); + AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); + model.setOutTradeNo(KeyUtil.generateUniqueKey()); + model.setTotalAmount("1.00"); + model.setSubject("订单充值"); + request.setBizModel(model); + AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); + String orderStr = response.getBody(); + System.out.println(orderStr); + if (response.isSuccess()) { + return orderStr; + } else { + return null; + // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接 + // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response); + // System.out.println(diagnosisUrl); + } + } + public AlipayTradeCreateResponse startPay(String outTradeNo, String totalAmount) throws AlipayApiException { // 创建客户端 AlipayClient alipayClient = new DefaultAlipayClient( @@ -65,12 +130,12 @@ public class AlipayService { return alipayClient.sdkExecute(alipayRequest); } - public static void main(String[] args) throws Exception{ + /*public static void main(String[] args) throws Exception{ AlipayService alipayService = new AlipayService(); String orderNo = KeyUtil.generateUniqueKey(); AlipayTradeCreateResponse result = alipayService.startPay(orderNo, "1.00"); System.out.println(result.getBody()); - } + }*/ // https://api.xx.com/receive_notify.htm?gmt_payment=2015-06-11 22:33:59¬ify_id=42af7baacd1d3746cf7b56752b91edcj34&seller_email=testyufabu07@alipay.com¬ify_type=trade_status_sync&sign=kPbQIjX+xQc8F0/A6/AocELIjhhZnGbcBN6G4MM/HmfWL4ZiHM6fWl5NQhzXJusaklZ1LFuMo+lHQUELAYeugH8LYFvxnNajOvZhuxNFbN2LhF0l/KL8ANtj8oyPM4NN7Qft2kWJTDJUpQOzCzNnV9hDxh5AaT9FPqRS6ZKxnzM=&trade_no=2015061121001004400068549373&out_trade_no=21repl2ac2eOutTradeNo322&gmt_create=2015-06-11 22:33:46&seller_id=2088211521646673¬ify_time=2015-06-11 22:34:03&subject=FACE_TO_FACE_PAYMENT_PRECREATE中文&trade_status=TRADE_SUCCESS&sign_type=RSA2 public void handleCallback(HttpServletRequest request) {