Skip to content

Commit 067dfd5

Browse files
authored
Merge pull request #6 from CyberSource/v25.1.0
Release v25.1.0 supporting P12 authentication
2 parents e2c7b84 + 3f968e2 commit 067dfd5

File tree

47 files changed

+1415
-1195
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1415
-1195
lines changed

documentation/CJL/CJL.md

Lines changed: 424 additions & 443 deletions
Large diffs are not rendered by default.

documentation/sap-commerce.md

Lines changed: 592 additions & 596 deletions
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,167 @@
11
<%@ page trimDirectiveWhitespaces="true"%>
2+
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
23
<%@ taglib prefix="template" tagdir="/WEB-INF/tags/responsive/template"%>
34
<%@ taglib prefix="cms" uri="http://hybris.com/tld/cmstags"%>
45
<%@ taglib prefix="multi-checkout" tagdir="/WEB-INF/tags/responsive/checkout/multi"%>
5-
<%@ taglib prefix="b2b-multi-checkout" tagdir="/WEB-INF/tags/addons/b2bacceleratoraddon/responsive/checkout/multi" %>
66
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
77
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
8-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
98

109
<spring:url value="/checkout/multi/summary/placeOrder" var="placeOrderUrl"/>
1110
<spring:url value="/checkout/multi/termsAndConditions" var="getTermsAndConditionsUrl"/>
11+
1212
<%@ taglib prefix="ycommerce" uri="http://hybris.com/tld/ycommercetags" %>
13+
<%@ taglib prefix="isv" uri="/WEB-INF/tld/addons/isvpaymentaddon/isv.tld"%>
1314

1415
<%@ taglib prefix="fraud" tagdir="/WEB-INF/tags/addons/isvpaymentaddon/responsive/fraud" %>
16+
<%@ taglib prefix="visacheckout" tagdir="/WEB-INF/tags/addons/isvpaymentaddon/responsive/payment/visacheckout" %>
17+
<%@ taglib prefix="klarna" tagdir="/WEB-INF/tags/addons/isvpaymentaddon/responsive/payment/klarna" %>
18+
<%@ taglib prefix="wechat" tagdir="/WEB-INF/tags/addons/isvpaymentaddon/responsive/payment/wechat" %>
19+
<%@ taglib prefix="multi-checkout-isv" tagdir="/WEB-INF/tags/addons/isvpaymentaddon/responsive/checkout/multi"%>
20+
<%@ taglib prefix="shared" tagdir="/WEB-INF/tags/addons/isvpaymentaddon/responsive/shared" %>
21+
<%@ taglib prefix="isv3ds" tagdir="/WEB-INF/tags/addons/isvpaymentaddon/responsive/payment/3ds" %>
1522

1623
<template:page pageTitle="${pageTitle}" hideHeaderLinks="true">
1724

25+
<c:if test="${visaCheckoutEnabled}">
26+
<visacheckout:vcInit
27+
apiKey="${visaCheckoutAPIKey}"
28+
currency="${cartData.totalPriceWithTax.currencyIso}"
29+
total="${cartData.totalPriceWithTax.value}"/>
30+
</c:if>
31+
32+
<div class="row">
33+
<div class="col-sm-6">
34+
<div class="checkout-headline">
35+
<span class="glyphicon glyphicon-lock"></span>
36+
<spring:theme code="checkout.multi.secure.checkout" />
37+
</div>
38+
<multi-checkout:checkoutSteps checkoutSteps="${checkoutSteps}" progressBarId="${progressBarId}">
39+
<ycommerce:testId code="checkoutStepFour">
1840

19-
<div class="row">
20-
<div class="col-sm-6">
21-
<div class="checkout-headline">
22-
<span class="glyphicon glyphicon-lock"></span>
23-
<spring:theme code="checkout.multi.secure.checkout"></spring:theme>
24-
</div>
25-
26-
<multi-checkout:checkoutSteps checkoutSteps="${checkoutSteps}" progressBarId="${progressBarId}">
27-
<ycommerce:testId code="checkoutStepFour">
28-
29-
<c:if test="${cartData.paymentType.code == 'CARD'}">
30-
<c:choose>
31-
<c:when test="${paymentPciType == 'HOP'}">
32-
<c:url var="hopFormAction" value="/checkout/payment/sa/hop"/>
33-
<form:form id="hopRequestForm" name="hopRequestForm" action="${hopFormAction}"/>
34-
</c:when>
35-
<c:otherwise>
36-
<jsp:include page="/WEB-INF/views/addons/isvpaymentaddon/responsive/pages/checkout/multi/payment/checkoutCardPaymentDetails.jsp"/>
37-
<c:url var="sopFormAction" value="/checkout/payment/sa/sop"/>
38-
<div id="sopIframeCbox">
39-
<iframe id="sopRequestIframe" src="${sopFormAction}"></iframe>
40-
</div>
41-
</c:otherwise>
42-
</c:choose>
43-
</c:if>
41+
<jsp:include page="payment/checkoutPaymentModes.jsp"/>
4442

45-
<div class="checkout-review hidden-xs">
46-
<div class="checkout-order-summary">
47-
<multi-checkout:orderTotals cartData="${cartData}" showTaxEstimate="${showTaxEstimate}" showTax="${showTax}" subtotalsCssClasses="dark"/>
48-
</div>
43+
<c:if test="${klarnaEnabled}">
44+
<klarna:klarnaInit klarnaSDKURL="${klarnaSDKUrl}"/>
45+
</c:if>
46+
47+
<isv:pciStrategyType type="FLEX">
48+
<jsp:include page="payment/flexCardPaymentDetails.jsp"/>
49+
</isv:pciStrategyType>
50+
51+
<isv:pciStrategyType type="HOP">
52+
<c:url var="hopFormAction" value="/checkout/payment/sa/hop"/>
53+
<form:form id="hopRequestForm" name="hopRequestForm" action="${hopFormAction}"/>
54+
</isv:pciStrategyType>
55+
56+
<isv:pciStrategyType type="SOP">
57+
<jsp:include page="payment/checkoutCardPaymentDetails.jsp"/>
58+
<c:url var="sopFormAction" value="/checkout/payment/sa/sop"/>
59+
<div id="sopIframeCbox">
60+
<iframe id="sopRequestIframe" src="${sopFormAction}"></iframe>
4961
</div>
50-
<div class="place-order-form hidden-xs">
51-
<form:form action="${placeOrderUrl}" id="placeOrderForm1" modelAttribute="placeOrderForm">
52-
<div class="checkbox">
53-
<label> <form:checkbox id="Terms1" path="termsCheck" />
54-
<spring:theme code="checkout.summary.placeOrder.readTermsAndConditions" arguments="${getTermsAndConditionsUrl}"/>
62+
</isv:pciStrategyType>
63+
64+
<jsp:include page="payment/vcCardPaymentDetails.jsp"/>
65+
66+
<div class="checkout-review hidden-xs">
67+
<div class="checkout-order-summary">
68+
<multi-checkout:orderTotals cartData="${cartData}" showTaxEstimate="${showTaxEstimate}" showTax="${showTax}" subtotalsCssClasses="dark"/>
69+
</div>
70+
</div>
71+
72+
<div class="display-none">
73+
<div class="checkout-weChatPaymentDetails m-2">
74+
<div class="row m-2">
75+
<div class="col-xs-12 w-100 border-0">
76+
<iframe id="weChatPaymentQRIframe" src="" style="height: 304px;"></iframe>
77+
</div>
78+
</div>
79+
<div class="row m-2">
80+
<label class="weChatModalInstructions">
81+
<spring:theme code="checkout.summary.paymentMethod.weChat.modal.instructions"/>
82+
</label>
83+
</div>
84+
<div class="row m-2">
85+
<button type="submit" class="btn btn-primary btn-block btn-wechat-complete-payment">
86+
<spring:theme code="checkout.summary.paymentMethod.weChat.modal.submit" />
87+
</button>
88+
</div>
89+
<div class="row mb-2">
90+
<div class="confirm-wechat-payment-spinner" hidden="hidden">
91+
<img src="${contextPath}/_ui/responsive/common/images/spinner.gif"/>
92+
</div>
93+
</div>
94+
<div class="display-none">
95+
<label id="weChatModalTitle">
96+
<spring:theme code="checkout.summary.paymentMethod.weChat.modal.title"/>
5597
</label>
5698
</div>
99+
</div>
100+
</div>
101+
102+
<div class="place-order-form hidden-xs">
103+
<form:form action="${placeOrderUrl}" id="placeOrderForm1" modelAttribute="placeOrderForm">
104+
<div class="checkbox">
105+
<label> <form:checkbox id="Terms1" path="termsCheck" />
106+
<spring:theme code="checkout.summary.placeOrder.readTermsAndConditions" arguments="${getTermsAndConditionsUrl}" text="Terms and Conditions"/>
107+
</label>
108+
</div>
57109

58-
<button id="placeOrder" type="submit" class="btn btn-primary btn-block btn-place-order btn-block btn-lg checkoutSummaryButton" disabled="disabled">
59-
<spring:theme code="checkout.summary.placeOrder"/>
110+
<div class="alert alert-danger tc-unchecked-alert" hidden="hidden">
111+
<spring:theme code="checkout.terms.and.conditions.unchecked.error"/>
112+
</div>
113+
114+
<div class="place-order-3ds-notification">
115+
<spring:theme code="checkout.summary.placeOrder.3ds.popup.notification"/>
116+
</div>
117+
118+
<div class="placeOrderBtnDiv">
119+
<div class="spinner-wrapper">
120+
<div class="spinner"></div>
121+
</div>
122+
<button id="placeOrder" type="button" class="btn btn-primary cs_btn-place-order btn-block">
123+
<spring:theme code="checkout.summary.placeOrder" text="Place Order"/>
60124
</button>
125+
</div>
61126

62-
<c:if test="${cartData.quoteData eq null}">
63-
<button id="scheduleReplenishment" type="button" class="btn btn-default btn-block scheduleReplenishmentButton checkoutSummaryButton" disabled="disabled">
64-
<spring:theme code="checkout.summary.scheduleReplenishment"/>
65-
</button>
127+
<div class="applePayBtnDiv" hidden="hidden">
128+
<a class="applePayBtn" role="link"></a>
129+
</div>
66130

67-
<b2b-multi-checkout:replenishmentScheduleForm/>
68-
</c:if>
69-
</form:form>
70-
</div>
131+
<div class="googlePayBtnDiv" hidden="hidden"></div>
132+
</form:form>
71133

72-
<script type="application/javascript">
73-
var isvB2BPaymentMethod = '${cartData.paymentType.code}';
74-
</script>
134+
<c:if test="${visaCheckoutEnabled}">
135+
<visacheckout:vcButton imageUrl="${visaCheckoutImageUrl}" locale="${locale}"/>
136+
</c:if>
137+
</div>
75138

76-
</ycommerce:testId>
77-
</multi-checkout:checkoutSteps>
78-
</div>
139+
</ycommerce:testId>
140+
</multi-checkout:checkoutSteps>
141+
</div>
79142

80-
<div class="col-sm-6">
81-
<b2b-multi-checkout:checkoutOrderSummary cartData="${cartData}" showDeliveryAddress="true" showPaymentInfo="true" showTaxEstimate="true" showTax="true" />
82-
</div>
143+
<div class="col-sm-6">
144+
<multi-checkout-isv:checkoutOrderSummary cartData="${cartData}" showDeliveryAddress="true" showPaymentInfo="true" showTaxEstimate="true" showTax="true" />
145+
</div>
83146

84-
<div class="col-sm-12 col-lg-12">
85-
<br class="hidden-lg">
86-
<cms:pageSlot position="SideContent" var="feature" element="div" class="checkout-help">
87-
<cms:component component="${feature}"/>
88-
</cms:pageSlot>
89-
</div>
147+
<c:if test="${visaCheckoutEnabled}">
148+
<visacheckout:vcLoadSDK sdkUrl="${visaCheckoutSDKUrl}"/>
149+
</c:if>
150+
151+
<div class="col-sm-12 col-lg-12">
152+
<br class="hidden-lg">
153+
<cms:pageSlot position="SideContent" var="feature" element="div" class="checkout-help">
154+
<cms:component component="${feature}"/>
155+
</cms:pageSlot>
90156
</div>
157+
</div>
91158

92-
<fraud:deviceFingerPrint deviceFingerPrint="${deviceFingerPrint}"/>
159+
<fraud:deviceFingerPrint deviceFingerPrint="${deviceFingerPrint}"/>
93160

94161
</template:page>
162+
163+
<%--Tags below will render with 'ACC.config' JS namespace available--%>
164+
165+
<shared:jsInit/>
166+
167+
<isv3ds:cardinalCommerce/>

hybris/bin/b2b/isvb2bpaymentaddon/src/isv/sap/payment/addon/b2b/helper/DefaultB2bPaymentAuthorizationHelper.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static isv.sap.payment.model.IsvMerchantPaymentConfigurationModel.PAYMENTCHANNEL;
2222
import static isv.sap.payment.model.IsvMerchantPaymentConfigurationModel.PAYMENTTYPE;
2323
import static isv.sap.payment.model.IsvMerchantPaymentConfigurationModel.SITE;
24+
import org.apache.commons.text.StringEscapeUtils;
2425

2526
public class DefaultB2bPaymentAuthorizationHelper implements B2bPaymentAuthorizationHelper
2627
{
@@ -52,8 +53,9 @@ private IsvPaymentTransactionEntryModel authorizePayment(final IsvPaymentTransac
5253
final CartModel cart,
5354
final String authServiceCommerceIndicator)
5455
{
55-
final String subscriptionId = subscriptionEntry.getProperties().get(SUBSCRIPTION_ID_KEY);
56-
final String merchantId = subscriptionEntry.getProperties().get(MERCHANT_ID_KEY);
56+
57+
final String subscriptionId = StringEscapeUtils.escapeHtml4(subscriptionEntry.getProperties().get(SUBSCRIPTION_ID_KEY));
58+
final String merchantId = StringEscapeUtils.escapeHtml4(subscriptionEntry.getProperties().get(MERCHANT_ID_KEY));
5759

5860
final PaymentServiceRequest request = new AuthorizationRequestBuilder()
5961
.addParam("order", cart)

hybris/bin/b2b/isvpayment/external-dependencies.xml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<dependency>
2727
<groupId>com.google.code.gson</groupId>
2828
<artifactId>gson</artifactId>
29-
<version>2.10.1</version>
29+
<version>2.12.0</version>
3030
</dependency>
3131
<dependency>
3232
<groupId>org.hdrhistogram</groupId>
@@ -136,7 +136,7 @@
136136
<dependency>
137137
<groupId>com.cybersource</groupId>
138138
<artifactId>cybersource-rest-client-java</artifactId>
139-
<version>0.0.58</version>
139+
<version>0.0.73</version>
140140
<scope>runtime</scope>
141141
<exclusions>
142142
<exclusion>
@@ -148,12 +148,12 @@
148148
<dependency>
149149
<groupId>com.cybersource</groupId>
150150
<artifactId>AuthenticationSdk</artifactId>
151-
<version>0.0.28</version>
151+
<version>0.0.34</version>
152152
</dependency>
153153
<dependency>
154154
<groupId>com.nimbusds</groupId>
155155
<artifactId>nimbus-jose-jwt</artifactId>
156-
<version>9.37.2</version>
156+
<version>10.0.2</version>
157157
</dependency>
158158
<dependency>
159159
<groupId>com.squareup.okio</groupId>
@@ -209,6 +209,16 @@
209209
<groupId>org.owasp.encoder</groupId>
210210
<artifactId>encoder</artifactId>
211211
<version>1.2.3</version>
212+
</dependency>
213+
<dependency>
214+
<groupId>org.apache.santuario</groupId>
215+
<artifactId>xmlsec</artifactId>
216+
<version>4.0.3</version>
217+
</dependency>
218+
<dependency>
219+
<groupId>org.apache.commons</groupId>
220+
<artifactId>commons-text</artifactId>
221+
<version>1.12.0</version>
212222
</dependency>
213223
</dependencies>
214224
</project>
-59.3 KB
Binary file not shown.
65.1 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
-277 KB
Binary file not shown.

0 commit comments

Comments
 (0)