From 6ac4a735f64af25ab6ab3967ca1a9739693875ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8C=80=ED=99=98?= Date: Wed, 14 Oct 2026 11:07:54 +0900 Subject: [PATCH] =?UTF-8?q?Stripe=20key=20db=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ordr/ordr/service/BOOrdrService.java | 2 +- .../gcone/ordr/pay/service/BOPayService.java | 31 +++++++++++++++++++ .../service/BORtngudrefndService.java | 4 +-- .../ordr/controller/OrdrController.java | 10 ++---- .../stripe/controller/StripeController.java | 17 +++++----- .../gcone/goods/purchs/BOPurchsMapper.xml | 3 ++ 6 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java index bc34fe5c..03010e3c 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java @@ -5651,7 +5651,7 @@ public class BOOrdrService{ /* =============================================== 결제 API >> DB select로 진행함 ================================================== */ - StripeClient stripeClient = new StripeClient("sk_test_51TyR73GgW2hla0lOFbAPuSlGp3nDswNX54tikyI2OxFDtUU8LDC6ooahlgfV5qXPMD2y3V035UKhzz3LA1RcaF6700Lck9uPVR"); + StripeClient stripeClient = payService.createStripeClient(payVO.getSopmalCd()); int installmentCount = 0; PaymentIntent paymentIntent = stripeClient.v1() .paymentIntents() diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/pay/service/BOPayService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/pay/service/BOPayService.java index e3b8c83e..a32d0129 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/pay/service/BOPayService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/pay/service/BOPayService.java @@ -20,6 +20,10 @@ import java.util.Map; import java.util.stream.Collectors; import com.nimbusds.jose.shaded.gson.Gson; +import com.stripe.StripeClient; +import com.stripe.exception.StripeException; +import com.stripe.model.Event; +import com.stripe.net.Webhook; import com.wb.domainserver.domain.gcone.goods.purchs.mapper.BOPurchsMapper; import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrLogService; import com.wb.domainserver.exception.WnbtRestException; @@ -1744,5 +1748,32 @@ public class BOPayService{ } + + /** + * stripeClient 생성 + * @param sopmalCd + */ + public StripeClient createStripeClient(String sopmalCd) throws StripeException { + String stripeSecretKey = selectPayLink(sopmalCd).get("stripeSecretKey").toString(); + StripeClient stripeClient = new StripeClient(stripeSecretKey); + + return stripeClient; + } + /** + * stripe WebhookEvent 생성 + * @param payload + * @param sigHeader + */ + public Event createWebhookEvent(String payload, String sigHeader, String sopmalCd) throws StripeException { + String stripeWebhookKey = selectPayLink(sopmalCd).get("stripeWebhookKey").toString(); + Event event = Webhook.constructEvent( + payload, + sigHeader, + stripeWebhookKey + ); + + return event; + } + } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/rtngudrefnd/service/BORtngudrefndService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/rtngudrefnd/service/BORtngudrefndService.java index aa2a898a..eb431772 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/rtngudrefnd/service/BORtngudrefndService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/rtngudrefnd/service/BORtngudrefndService.java @@ -1157,13 +1157,13 @@ public class BORtngudrefndService { } else if ("stripe".equals(setle.getPgCmpnyNm())) { log.debug("stripe 취소 진입"); - StripeClient client = new StripeClient("sk_test_51TyR73GgW2hla0lOFbAPuSlGp3nDswNX54tikyI2OxFDtUU8LDC6ooahlgfV5qXPMD2y3V035UKhzz3LA1RcaF6700Lck9uPVR"); + StripeClient stripeClient = payService.createStripeClient(sopmalCd); RefundCreateParams params = RefundCreateParams.builder() .setPaymentIntent(setle.getPgInnb()) .setAmount(Long.valueOf(cancelAmt)) .build(); - Refund refund = client.v1().refunds().create(params); + Refund refund = stripeClient.v1().refunds().create(params); String resultCode = refund.getStatus(); if ("succeeded".equals(resultCode)) { diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java index 5453509f..ef0a83e6 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java @@ -1564,17 +1564,13 @@ public class OrdrController { * @return OrdrRspnsKiwoomPayR.jsp */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertStripeSetle") - public ResponseEntity insertStripeSetle(@RequestBody String payload, @RequestHeader("Stripe-Signature") String sigHeader) { + @RequestMapping(value="/{sopmalCd}/insertStripeSetle") + public ResponseEntity insertStripeSetle(@RequestBody String payload, @RequestHeader("Stripe-Signature") String sigHeader, @PathVariable String sopmalCd) { try { log.info("insertStripeSetle webhook start ::: "); - Event event = Webhook.constructEvent( - payload, - sigHeader, - "whsec_CIdNAlgsnKjudtjCYY5i3QSUiXHZzXxt" - ); + Event event = payService.createWebhookEvent(payload, sigHeader, sopmalCd); if ("checkout.session.completed".equals(event.getType())) { Session session = (Session) event diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/stripe/controller/StripeController.java b/src/main/java/com/wb/domainserver/domain/sopmal/stripe/controller/StripeController.java index 2837c5f3..1bb3b248 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/stripe/controller/StripeController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/stripe/controller/StripeController.java @@ -7,6 +7,7 @@ import com.stripe.model.checkout.Session; import com.stripe.param.checkout.SessionCreateParams; import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService; import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO; +import com.wb.domainserver.domain.gcone.ordr.pay.service.BOPayService; import com.wb.domainserver.response.WnbtResponse; import com.wb.domainserver.response.WnbtResponseBody; import com.wb.domainserver.security.authentication.AnonymousUser; @@ -37,6 +38,8 @@ import java.util.Map; public class StripeController { @Autowired private BOMaSopmalService boMaSopmalService; + @Autowired + private BOPayService payService; private Util utilClass; @@ -53,11 +56,11 @@ public class StripeController { String domnAdres = sopmalInfo.get("pcDomnAdres").toString(); // domnAdres = "http://loc.soju1sake1.com:18500"; - StripeClient stripeClient = new StripeClient("sk_test_51TyR73GgW2hla0lOFbAPuSlGp3nDswNX54tikyI2OxFDtUU8LDC6ooahlgfV5qXPMD2y3V035UKhzz3LA1RcaF6700Lck9uPVR"); + StripeClient stripeClient = payService.createStripeClient(request.getParameter("sopmalCd")); SessionCreateParams.Builder paramsBuilder = SessionCreateParams.builder() .setMode(SessionCreateParams.Mode.PAYMENT) - .setSuccessUrl(domnAdres + "/sopmal/stripe/stripeSuccess?sessionId={CHECKOUT_SESSION_ID}") - .setCancelUrl(domnAdres + "/sopmal/stripe/stripeCancel?sessionId={CHECKOUT_SESSION_ID}") + .setSuccessUrl(domnAdres + "/sopmal/stripe/stripeSuccess?sessionId={CHECKOUT_SESSION_ID}&sopmalCd=" + request.getParameter("sopmalCd")) + .setCancelUrl(domnAdres + "/sopmal/stripe/stripeCancel?sessionId={CHECKOUT_SESSION_ID}&sopmalCd=" + request.getParameter("sopmalCd")) .setAdaptivePricing( SessionCreateParams.AdaptivePricing.builder() .setEnabled(false) @@ -151,8 +154,8 @@ public class StripeController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/stripeSuccess") - public String stripeSuccess(ModelMap model, @RequestParam("sessionId") String sessionId) throws StripeException { - StripeClient stripeClient = new StripeClient("sk_test_51TyR73GgW2hla0lOFbAPuSlGp3nDswNX54tikyI2OxFDtUU8LDC6ooahlgfV5qXPMD2y3V035UKhzz3LA1RcaF6700Lck9uPVR"); + public String stripeSuccess(ModelMap model, @RequestParam("sessionId") String sessionId, @RequestParam("sopmalCd") String sopmalCd) throws StripeException { + StripeClient stripeClient = payService.createStripeClient(sopmalCd); Session session = stripeClient.v1().checkout().sessions().retrieve(sessionId); String status = session.getStatus(); @@ -194,8 +197,8 @@ public class StripeController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/stripeCancel") - public String stripeCancel(ModelMap model, @RequestParam("sessionId") String sessionId) throws StripeException { - StripeClient stripeClient = new StripeClient("sk_test_51TyR73GgW2hla0lOFbAPuSlGp3nDswNX54tikyI2OxFDtUU8LDC6ooahlgfV5qXPMD2y3V035UKhzz3LA1RcaF6700Lck9uPVR"); + public String stripeCancel(ModelMap model, @RequestParam("sessionId") String sessionId, @RequestParam("sopmalCd") String sopmalCd) throws StripeException { + StripeClient stripeClient = payService.createStripeClient(sopmalCd); Session session = stripeClient.v1().checkout().sessions().retrieve(sessionId); String status = session.getStatus(); diff --git a/src/main/resources/mybatis/xml/mapper/gcone/goods/purchs/BOPurchsMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/goods/purchs/BOPurchsMapper.xml index d9fb4434..67c512b8 100644 --- a/src/main/resources/mybatis/xml/mapper/gcone/goods/purchs/BOPurchsMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/gcone/goods/purchs/BOPurchsMapper.xml @@ -2683,6 +2683,9 @@ FROM ( , FPL.OLD_TOSS_CLNT_KEY , FPL.OLD_TOSS_SECRET_KEY , FPL.OLD_TOSS_PUBLIC_KEY + , FPL.STRIPE_CLNT_KEY + , FPL.STRIPE_SECRET_KEY + , FPL.STRIPE_WEBHOOK_KEY , FPL.DUE_DT FROM GC_PAY_LINK FPL INNER JOIN GC_PAY_INFO FPI ON FPI.SETLE_SETUP_INNB = FPL.SETLE_SETUP_INNB