From 93d1ef580d9efde47bfe8bbdc844310bf93491ec Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Mon, 23 Dec 2024 09:36:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9capture=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/paypal/config/PaypalConfig.java | 37 +++++++++++-------- .../paypal/controller/PaypalController.java | 2 +- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/peanut/modules/pay/paypal/config/PaypalConfig.java b/src/main/java/com/peanut/modules/pay/paypal/config/PaypalConfig.java index 27fce940..13ace79a 100644 --- a/src/main/java/com/peanut/modules/pay/paypal/config/PaypalConfig.java +++ b/src/main/java/com/peanut/modules/pay/paypal/config/PaypalConfig.java @@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONObject; import com.peanut.modules.common.entity.BuyOrder; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; - import java.io.*; import java.net.HttpURLConnection; import java.net.URL; @@ -116,20 +115,26 @@ public class PaypalConfig { } //用户授权支付成功,进行扣款操作 - public JSONObject capture(String paypalOrderId) throws Exception{ - URL url = new URL(String.format(modeUrl+captureURL,paypalOrderId)); - HttpURLConnection httpConn = (HttpURLConnection) url.openConnection(); - httpConn.setRequestMethod("POST"); - httpConn.setRequestProperty("Content-Type", "application/json"); - httpConn.setRequestProperty("Authorization", "Bearer " + getAccessToken().get("access_token")); + public JSONObject capture(String paypalOrderId){ + try { + URL url = new URL(String.format(modeUrl+captureURL,paypalOrderId)); + HttpURLConnection httpConn = (HttpURLConnection) url.openConnection(); + httpConn.setRequestMethod("POST"); + httpConn.setRequestProperty("Content-Type", "application/json"); + httpConn.setRequestProperty("Authorization", "Bearer " + getAccessToken().get("access_token")); - InputStream responseStream = httpConn.getResponseCode() / 100 == 2 - ? httpConn.getInputStream() - : httpConn.getErrorStream(); - Scanner s = new Scanner(responseStream).useDelimiter("\\A"); - String response = s.hasNext() ? s.next() : ""; - log.info(">>>>>>>>>>>palypal扣款返回的信息是 result = {}", response); - return JSONObject.parseObject(response); + InputStream responseStream = httpConn.getResponseCode() / 100 == 2 + ? httpConn.getInputStream() + : httpConn.getErrorStream(); + Scanner s = new Scanner(responseStream).useDelimiter("\\A"); + String response = s.hasNext() ? s.next() : ""; + log.info(">>>>>>>>>>>palypal扣款返回的信息是 result = {}", response); + return JSONObject.parseObject(response); + }catch (Exception e) { + log.error(">>>>>>>>>>:PayPal扣款失败 reason = {}", e.getMessage()); + e.printStackTrace(); + return JSONObject.parseObject("{'error':'PayPal扣款失败,请联系管理员'}"); + } } //下单 @@ -156,8 +161,8 @@ public class PaypalConfig { JSONObject applicationContext = new JSONObject(); applicationContext.put("user_action", "PAY_NOW");//付款按钮显示立即付款 applicationContext.put("shipping_preference", "NO_SHIPPING");//从 PayPal 网站编辑送货地址。推荐用于数字商品。 - applicationContext.put("return_url", "");//客户批准付款后重定向到客户的 URL - applicationContext.put("cancel_url", "");//客户取消付款后,客户被重定向的 URL + applicationContext.put("return_url", returnUrl);//客户批准付款后重定向到客户的 URL + applicationContext.put("cancel_url", cancelUrl);//客户取消付款后,客户被重定向的 URL JSONObject jsonObject = new JSONObject(); jsonObject.put("intent","CAPTURE");// 用户付款了,商户立即收款 jsonObject.put("purchase_units",purchase_units); diff --git a/src/main/java/com/peanut/modules/pay/paypal/controller/PaypalController.java b/src/main/java/com/peanut/modules/pay/paypal/controller/PaypalController.java index 83216fbf..3b778012 100644 --- a/src/main/java/com/peanut/modules/pay/paypal/controller/PaypalController.java +++ b/src/main/java/com/peanut/modules/pay/paypal/controller/PaypalController.java @@ -86,7 +86,7 @@ public class PaypalController { @RequestMapping("/capture") @Transactional - public R capture(@RequestBody Map params) throws Exception{ + public R capture(@RequestBody Map params){ JSONObject res = paypalConfig.capture(params.get("paypalId").toString()); if (res.containsKey("status")&&"COMPLETED".equals(res.get("status").toString())){ PayPaypalOrder payPaypalOrder = payPaypalOrderService.getOne(new LambdaQueryWrapper()