Skip to content

Commit 1313e0e

Browse files
authored
Merge pull request #34 from davidchin/method_return_url
PAYMENTS-889 Forward returnUrl of order instead of payment object if possible
2 parents 1aba0ad + 5cfe022 commit 1313e0e

File tree

5 files changed

+28
-8
lines changed

5 files changed

+28
-8
lines changed

src/payment/mappers/map-to-payment.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export default function mapToPayment(data) {
1515
device_info: quoteMeta.request ? quoteMeta.request.deviceSessionId : null,
1616
gateway: mapToId(paymentMethod),
1717
notify_url: order.callbackUrl,
18-
return_url: order.payment ? order.payment.returnUrl : null,
18+
return_url: paymentMethod.returnUrl || (order.payment ? order.payment.returnUrl : null),
1919
};
2020

2121
const nonce = payment.nonce || paymentMethod.nonce;

src/payment/offsite-mappers/map-to-payload.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export default function mapToPayload(data) {
2626
page_title: document.title,
2727
payment_method_id: mapToId(paymentMethod),
2828
reference_id: toString(order.orderId),
29-
return_url: order.payment ? order.payment.returnUrl : null,
29+
return_url: paymentMethod.returnUrl || (order.payment ? order.payment.returnUrl : null),
3030
},
3131
mapToBillingAddress(data),
3232
mapToCustomer(data),

test/mocks/payment-request-data.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,6 @@ const paymentRequestDataMock = {
4545
integerAmount: 500,
4646
},
4747
orderId: '123',
48-
payment: {
49-
returnUrl: '/checkout',
50-
},
5148
shipping: {
5249
integerAmount: 1000,
5350
},
@@ -71,6 +68,7 @@ const paymentRequestDataMock = {
7168
paymentMethod: {
7269
id: 'paypalprous',
7370
type: API,
71+
returnUrl: '/checkout',
7472
},
7573
quoteMeta: {
7674
request: {

test/payment/mappers/map-to-payment.spec.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import omit from 'lodash/omit';
12
import merge from 'lodash/merge';
23
import * as mapToCreditCardModule from '../../../src/payment/mappers/map-to-credit-card';
34
import mapToPayment from '../../../src/payment/mappers/map-to-payment';
@@ -20,7 +21,7 @@ describe('mapToPayment', () => {
2021
device_info: data.quoteMeta.request.deviceSessionId,
2122
gateway: data.paymentMethod.id,
2223
notify_url: data.order.callbackUrl,
23-
return_url: data.order.payment.returnUrl,
24+
return_url: data.paymentMethod.returnUrl,
2425
});
2526
});
2627

@@ -40,7 +41,17 @@ describe('mapToPayment', () => {
4041
device_info: data.quoteMeta.request.deviceSessionId,
4142
gateway: data.paymentMethod.id,
4243
notify_url: data.order.callbackUrl,
43-
return_url: data.order.payment.returnUrl,
44+
return_url: data.paymentMethod.returnUrl,
4445
});
4546
});
47+
48+
it('should use the return URL contained in the order object as a fallback', () => {
49+
data = merge({}, data, {
50+
paymentMethod: omit(data.paymentMethod, 'returnUrl'),
51+
});
52+
53+
const output = mapToPayment(data);
54+
55+
expect(output.return_url).toEqual(data.paymentMethod.returnUrl);
56+
});
4657
});

test/payment/offsite-mappers/map-to-payload.spec.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import omit from 'lodash/omit';
12
import merge from 'lodash/merge';
23
import * as mapToBillingAddressModule from '../../../src/payment/offsite-mappers/map-to-billing-address';
34
import * as mapToCustomerModule from '../../../src/payment/offsite-mappers/map-to-customer';
@@ -42,9 +43,19 @@ describe('mapToPayload', () => {
4243
page_title: document.title,
4344
payment_method_id: data.paymentMethod.id,
4445
reference_id: data.order.orderId,
45-
return_url: data.order.payment.returnUrl,
46+
return_url: data.paymentMethod.returnUrl,
4647
shippingAddress: 'shippingAddress',
4748
store: 'store',
4849
});
4950
});
51+
52+
it('should use the return URL contained in the order object as a fallback', () => {
53+
data = merge({}, data, {
54+
paymentMethod: omit(data.paymentMethod, 'returnUrl'),
55+
});
56+
57+
const output = mapToPayload(data);
58+
59+
expect(output.return_url).toEqual(data.paymentMethod.returnUrl);
60+
});
5061
});

0 commit comments

Comments
 (0)