From df4733091b30b0434a04dacd0e844663114d4cfe Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 09 七月 2025 17:51:56 +0800 Subject: [PATCH] 修改支付宝支付和bug修改 --- cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java | 146 +++++++++++++++++++----------------------------- 1 files changed, 58 insertions(+), 88 deletions(-) diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java index 1450e74..870c561 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java +++ b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java @@ -3,10 +3,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.alipay.api.AlipayApiException; -import com.alipay.api.AlipayClient; -import com.alipay.api.CertAlipayRequest; -import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.*; import com.alipay.api.domain.*; import com.alipay.api.request.*; import com.alipay.api.response.*; @@ -76,45 +73,63 @@ private String certPath = "/usr/playpai/cert/weixin/apiclient_cert.p12";//微信证书 - public ResultUtil confirm(String smid,String code, String outTradeNo, String amount) { - AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", - aliAppid, - appPrivateKey, - "json", - "GBK", - alipay_public_key, - "RSA2"); + public ResultUtil confirm(String smid1,String code, String outTradeNo, String amount) throws AlipayApiException { + // 初始化SDK + AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig()); + + // 构造请求参数以调用接口 AlipayTradeSettleConfirmRequest request = new AlipayTradeSettleConfirmRequest(); - request.setBizContent("{" + - " \"out_request_no\":\""+code+"\"," + - " \"trade_no\":\""+outTradeNo+"\"," + - " \"settle_info\":{" + - " \"settle_detail_infos\":[" + - " {" + - " \"trans_in_type\":\"defaultSettle\"," + - " \"settle_entity_id\":\""+smid+"\"," + - " \"settle_entity_type\":\"SecondMerchant\"," + - " \"amount\":"+amount+"," + - " }" + - " ]" + - " }," + - " \"extend_params\":{" + - " \"royalty_freeze\":\"true\"" + - " }" + - "}"); - AlipayTradeSettleConfirmResponse response = null; - try { - response = alipayClient.execute(request); - } catch (AlipayApiException e) { - e.printStackTrace(); - } - if(response.isSuccess()){ + AlipayTradeSettleConfirmModel model = new AlipayTradeSettleConfirmModel(); + + // 设置确认结算请求流水号 + model.setOutRequestNo(code); + + // 设置支付宝交易号 + model.setTradeNo(outTradeNo); + + // 设置描述结算信息 + SettleInfo settleInfo = new SettleInfo(); + List<SettleDetailInfo> settleDetailInfos = new ArrayList<SettleDetailInfo>(); + SettleDetailInfo settleDetailInfos0 = new SettleDetailInfo(); + settleDetailInfos0.setAmount(amount); + settleDetailInfos0.setTransIn(smid1); + settleDetailInfos0.setSettleEntityType("SecondMerchant"); + settleDetailInfos0.setSettleEntityId(smid1); + settleDetailInfos0.setTransInType("defaultSettle"); + settleDetailInfos.add(settleDetailInfos0); + settleInfo.setSettleDetailInfos(settleDetailInfos); + model.setSettleInfo(settleInfo); + request.setBizModel(model); + System.err.println("结算金额"+amount); + // 第三方代调用模式下请设置app_auth_token + // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->"); + + AlipayTradeSettleConfirmResponse response = alipayClient.execute(request); + System.out.println("返回体"+response.getBody()); + + + if (response.isSuccess()) { System.out.println("调用成功"); - return ResultUtil.success(); } else { System.out.println("调用失败"); - return ResultUtil.error("出现问题啦"); + // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接 + // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response); + // System.out.println(diagnosisUrl); } + return ResultUtil.success(response.getBody()); + } + private static AlipayConfig getAlipayConfig() { + String privateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA=="; + String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB"; + AlipayConfig alipayConfig = new AlipayConfig(); + alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do"); + alipayConfig.setAppId("2021004105665036"); + alipayConfig.setPrivateKey(privateKey); + alipayConfig.setFormat("json"); + alipayConfig.setAlipayPublicKey(alipayPublicKey); + alipayConfig.setCharset("UTF-8"); + alipayConfig.setSignType("RSA2"); + return alipayConfig; } // 属于平台的运营商 因为无需分账不冻结资金 public ResultUtil confirm1(String smid,String code, String outTradeNo, String amount) { @@ -161,56 +176,6 @@ * 支付宝支付 */ public ResultUtil alipay(String smid,String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { -// //构造client -// CertAlipayRequest certAlipayRequest = new CertAlipayRequest (); -// //设置网关地址 -// certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do"); -// //设置应用Id -// certAlipayRequest.setAppId(aliAppid); -// //设置应用私钥 -// certAlipayRequest.setPrivateKey(appPrivateKey); -// //设置请求格式,固定值json -// certAlipayRequest.setFormat("json"); -// //设置字符集 -// certAlipayRequest.setCharset("UTF-8"); -// //设置签名类型 -// certAlipayRequest.setSignType("RSA2"); -// //设置应用公钥证书路径 -// certAlipayRequest.setCertPath(app_cert_path); -// //设置支付宝公钥证书路径 -// certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path); -// //设置支付宝根证书路径 -// certAlipayRequest.setRootCertPath(alipay_root_cert_path); -// //构造client -// AlipayClient alipayClient = null; -// try { -// alipayClient = new DefaultAlipayClient(certAlipayRequest); -// } catch (AlipayApiException e) { -// e.printStackTrace(); -// } -// //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay -// AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest (); -// //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。 -// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel (); -// model.setBody(body); -// model.setSubject (subject); -// model.setOutTradeNo (outTradeNo); -// model.setTimeoutExpress ("30m" ); -// model.setTotalAmount (amount); -// model.setProductCode ( "QUICK_MSECURITY_PAY" ); -// model.setPassbackParams(passbackParams);//自定义参数 -// request.setBizModel ( model ); -// request.setNotifyUrl (callbackPath + notifyUrl); -// try { -// //这里和普通的接口调用不同,使用的是sdkExecute -// AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); -// Map<String, String> map = new HashMap<>(); -// map.put("orderString", response.getBody()); -// System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。 -// return ResultUtil.success(map); -// } catch (AlipayApiException e ) { -// e.printStackTrace(); -// } //实例化客户端 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay @@ -236,6 +201,11 @@ SubMerchant subMerchant = new SubMerchant(); subMerchant.setMerchantId(smid); model.setSubMerchant(subMerchant); + if (!smid.equals("2088330203191220")){ + ExtendParams extendParams = new ExtendParams(); + extendParams.setRoyaltyFreeze("true"); + model.setExtendParams(extendParams); + } request.setBizModel(model); request.setNotifyUrl(callbackPath + notifyUrl); try { -- Gitblit v1.7.1