Skip to content

Commit 5e6fd1a

Browse files
Release 3.4.2
Release 3.4.2
2 parents 0abcc9d + 8c5abf3 commit 5e6fd1a

Some content is hidden

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

49 files changed

+1473
-477
lines changed

.github/workflows/pr.yml

+6-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
name: Lint
1515
runs-on: ubuntu-latest
1616
container:
17-
image: php:7.2-apache
17+
image: php:7.1-apache
1818
steps:
1919
-
2020
name: Checkout
@@ -39,7 +39,11 @@ jobs:
3939
php composer.phar --version
4040
-
4141
name: Check PHP sintax
42-
run: find . -name \*.php -exec php -l "{}" \;
42+
run: |
43+
find . -name \*.php -exec php -l "{}" \; | tee errors.log
44+
if grep -q "Sintax errors:" errors.log; then
45+
exit 1
46+
fi
4347
-
4448
name: Install project dependences
4549
run:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/* globals wc_pagarme_checkout */
2+
/* jshint esversion: 6 */
3+
const pagarmeCustomerFields = {
4+
billingDocumentId: 'billing_document',
5+
shippingDocumentId: 'shipping_document',
6+
blocksBillingDocumentId: 'billing-address-document',
7+
blocksShippingDocumentId: 'shipping-address-document',
8+
9+
documentMasks: [
10+
'000.000.000-009999',
11+
'00.000.000/0000-00'
12+
],
13+
documentMaskOptions: {
14+
onKeyPress: function (document, e, field, options) {
15+
const masks = pagarmeCustomerFields.documentMasks,
16+
mask = document.length > 14 ? masks[1] : masks[0];
17+
field.mask(mask, options);
18+
}
19+
},
20+
21+
applyDocumentMask() {
22+
jQuery('#' + this.billingDocumentId).mask(this.documentMasks[0], this.documentMaskOptions);
23+
jQuery('#' + this.shippingDocumentId).mask(this.documentMasks[0], this.documentMaskOptions);
24+
jQuery('#' + this.blocksBillingDocumentId).mask(this.documentMasks[0], this.documentMaskOptions);
25+
jQuery('#' + this.blocksShippingDocumentId).mask(this.documentMasks[0], this.documentMaskOptions);
26+
},
27+
28+
addEventListener() {
29+
jQuery(document.body).on('checkout_error', function () {
30+
const documentFieldIds = [
31+
pagarmeCustomerFields.billingDocumentId,
32+
pagarmeCustomerFields.shippingDocumentId,
33+
pagarmeCustomerFields.blocksBillingDocumentId,
34+
pagarmeCustomerFields.blocksShippingDocumentId
35+
];
36+
jQuery.each(documentFieldIds, function () {
37+
const documentField = '#' + this + '_field',
38+
isDocumentEmpty = jQuery('.woocommerce-error li[data-id="' + this + '"]').length,
39+
isDocumentInvalid = jQuery('.woocommerce-error li[data-pagarme-error="' + this + '"]').length;
40+
if (isDocumentEmpty || isDocumentInvalid) {
41+
jQuery(documentField).addClass('woocommerce-invalid');
42+
} else {
43+
jQuery(documentField).removeClass('woocommerce-invalid');
44+
}
45+
});
46+
});
47+
},
48+
49+
start: function () {
50+
this.addEventListener();
51+
52+
setTimeout(function() {
53+
pagarmeCustomerFields.applyDocumentMask();
54+
}, 5000);
55+
}
56+
};
57+
58+
pagarmeCustomerFields.start();

assets/javascripts/front/reactCheckout/payments/CreditCard/index.js

+25-3
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,46 @@ const { registerPaymentMethod } = window.wc.wcBlocksRegistry;
22

33
import PropTypes from "prop-types";
44
import Card from "../Card";
5+
import PagarmeGooglePayComponent from "../GooglePay";
56
import useCreditCard from "./useCreditCard";
7+
import pagarmeTokenStore from "../store/googlepay";
8+
import { useSelect } from "@wordpress/data";
69

710
const backendConfig = wc.wcSettings.getSetting(
811
"woo-pagarme-payments-credit_card_data",
912
);
13+
const googlePayBackendConfig = wc.wcSettings.getSetting(
14+
"woo-pagarme-payments-googlepay_data",
15+
);
1016

1117
const PagarmeCreditCardComponent = (props) => {
18+
const googleCards = useSelect((select) => {
19+
return select(pagarmeTokenStore).getToken();
20+
});
1221
const { emitResponse, eventRegistration } = props;
13-
useCreditCard(backendConfig, emitResponse, eventRegistration);
22+
const googleActive = googlePayBackendConfig.enabled;
23+
const hasSubscriptionInCart = googlePayBackendConfig.hasSubscriptionInCart;
1424

25+
useCreditCard(backendConfig, emitResponse, eventRegistration, googleCards);
1526
return (
16-
<Card {...props} backendConfig={backendConfig} cardIndex={1} />
27+
<div>
28+
{googleActive && !hasSubscriptionInCart && (
29+
<div>
30+
<PagarmeGooglePayComponent {...props} />
31+
<div className="pagarme_creditcard_divider">
32+
<p>Ou pague com cartão</p>
33+
</div>
34+
</div>
35+
)}
36+
{!googleCards && (
37+
<Card {...props} backendConfig={backendConfig} cardIndex={1} />
38+
)}
39+
</div>
1740
);
1841
};
1942

2043
const PagarmeCreditCardLabel = ({ components }) => {
2144
const { PaymentMethodLabel } = components;
22-
2345
return <PaymentMethodLabel text={backendConfig.label} />;
2446
};
2547

assets/javascripts/front/reactCheckout/payments/CreditCard/useCreditCard.js

+18-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import TokenizeException from "../Card/token/tokenizeException";
44
import tokenizeMultiCards from "../Card/token/tokenizeMultiCards";
55
import { useDispatch, useSelect } from "@wordpress/data";
66
import { useEffect } from "@wordpress/element";
7+
import pagarmeTokenStore from "../store/googlepay";
78

8-
const useCreditCard = (backendConfig, emitResponse, eventRegistration) => {
9+
const useCreditCard = (backendConfig, emitResponse, eventRegistration, googleCards) => {
910
const { reset } = useDispatch(pagarmeCardsStore);
10-
11+
const { reset: resetGoogleToken } = useDispatch(pagarmeTokenStore);
1112
const { onPaymentSetup } = eventRegistration;
1213

1314
const cards = useSelect((select) => {
@@ -21,6 +22,20 @@ const useCreditCard = (backendConfig, emitResponse, eventRegistration) => {
2122
useEffect(() => {
2223
return onPaymentSetup(async () => {
2324
try {
25+
if (googleCards) {
26+
resetGoogleToken();
27+
return {
28+
type: emitResponse.responseTypes.SUCCESS,
29+
meta: {
30+
paymentMethodData: {
31+
pagarme: JSON.stringify({
32+
['googlepay']: {'googlepay': {['payload']: googleCards}}
33+
}),
34+
payment_method: 'googlepay',
35+
},
36+
},
37+
};
38+
}
2439
let hasErrors = false;
2540
if (typeof cards === 'object') {
2641
hasErrors = Object.values(cards).some((card) => {
@@ -60,14 +75,13 @@ const useCreditCard = (backendConfig, emitResponse, eventRegistration) => {
6075
if (e instanceof TokenizeException) {
6176
errorMesage = e.message;
6277
}
63-
6478
return {
6579
type: emitResponse.responseTypes.ERROR,
6680
message: errorMesage,
6781
};
6882
}
6983
});
70-
}, [onPaymentSetup, cards, backendConfig]);
84+
}, [onPaymentSetup, cards, backendConfig, googleCards]);
7185
};
7286

7387
export default useCreditCard;
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,19 @@
1-
import PropTypes from "prop-types";
21
import GooglePayButton from "@google-pay/button-react";
3-
import useGooglepay from "./useGooglepay";
4-
import { useDispatch, useSelect } from "@wordpress/data";
2+
import { useDispatch } from "@wordpress/data";
53
import pagarmeTokenStore from "../store/googlepay"
6-
7-
const { registerPaymentMethod } = window.wc.wcBlocksRegistry;
8-
9-
const backendConfig = wc.wcSettings.getSetting(
10-
"woo-pagarme-payments-googlepay_data",
11-
);
12-
13-
const environment = backendConfig.isSandboxMode ? "TEST" : "PRODUCTION";
4+
import validateBilling from "./validateBilling";
145

156
const PagarmeGooglePayComponent = (props) => {
16-
const { emitResponse, eventRegistration } = props;
17-
18-
useGooglepay(emitResponse, eventRegistration, backendConfig);
7+
const backendConfig = wc.wcSettings.getSetting(
8+
"woo-pagarme-payments-googlepay_data",
9+
);
1910

11+
const environment = backendConfig.isSandboxMode ? "TEST" : "PRODUCTION";
12+
const billingAddress = props?.billing?.billingAddress;
2013
const {
2114
setToken
2215
} = useDispatch(pagarmeTokenStore);
23-
16+
2417
return (
2518

2619
<GooglePayButton
@@ -35,7 +28,7 @@ const PagarmeGooglePayComponent = (props) => {
3528
type: "CARD",
3629
parameters: {
3730
allowedAuthMethods: ["PAN_ONLY"],
38-
allowedCardNetworks: ["MASTERCARD", "VISA", "ELO"],
31+
allowedCardNetworks: backendConfig.allowedGoogleBrands,
3932
},
4033
tokenizationSpecification: {
4134
type: "PAYMENT_GATEWAY",
@@ -59,37 +52,14 @@ const PagarmeGooglePayComponent = (props) => {
5952
},
6053
}}
6154
onLoadPaymentData={(paymentRequest) => {
62-
let googleToken = paymentRequest.paymentMethodData.tokenizationData.token;
63-
setToken(googleToken);
55+
if(validateBilling(billingAddress)) {
56+
let googleToken = paymentRequest.paymentMethodData.tokenizationData.token;
57+
setToken(googleToken);
58+
}
6459
jQuery(".wc-block-components-checkout-place-order-button").click();
6560
}}
6661
/>
6762
);
6863

6964
};
70-
71-
const PagarmeGooglePayLabel = ({ components }) => {
72-
const { PaymentMethodLabel } = components;
73-
return <PaymentMethodLabel text={backendConfig.label} />;
74-
};
75-
76-
PagarmeGooglePayComponent.propTypes = {
77-
emitResponse: PropTypes.object,
78-
eventRegistration: PropTypes.object,
79-
};
80-
81-
PagarmeGooglePayLabel.propTypes = {
82-
components: PropTypes.object,
83-
};
84-
85-
86-
const pagarmeGooglePayPaymentMethod = {
87-
name: backendConfig.name,
88-
label: <PagarmeGooglePayLabel />,
89-
content: <PagarmeGooglePayComponent />,
90-
edit: <PagarmeGooglePayComponent />,
91-
canMakePayment: () => true,
92-
ariaLabel: backendConfig.ariaLabel,
93-
};
94-
95-
registerPaymentMethod(pagarmeGooglePayPaymentMethod);
65+
export default PagarmeGooglePayComponent;

assets/javascripts/front/reactCheckout/payments/GooglePay/useGooglepay.js

-39
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
function validateBilling(billing) {
3+
4+
const requiredFields = [
5+
'first_name',
6+
'last_name',
7+
'email',
8+
'phone',
9+
'address_1',
10+
'city',
11+
'postcode',
12+
'state',
13+
'country'
14+
];
15+
for (const field of requiredFields) {
16+
if (!billing[field]) {
17+
return false;
18+
}
19+
}
20+
return true;
21+
}
22+
23+
export default validateBilling;

assets/javascripts/front/reactCheckout/payments/store/googlepay.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,12 @@ const pagarmeTokenStore = createReduxStore("pagarme-googlepay", {
3838
reducer(state = DEFAULT_STATE, action) {
3939
switch (action.type) {
4040
case "SET_PROPERTY_VALUE":
41-
// console.log(action);
4241
if (!action.propertyName) {
4342
return state;
4443
}
4544
return {
4645
...state,
47-
[action.propertyName]: action.value,
46+
[action.propertyName]: action.value
4847
};
4948
case "RESET":
5049
return DEFAULT_STATE;

assets/stylesheets/front/style.css

+7-6
Original file line numberDiff line numberDiff line change
@@ -94,26 +94,27 @@
9494
font-style: italic;
9595
}
9696

97-
#payment .pagarme_creditcard_divider {
97+
.pagarme_creditcard_divider{
9898
margin: 1em 0 0;
9999
}
100100

101-
#payment .pagarme_creditcard_divider p {
101+
.pagarme_creditcard_divider p {
102102
display: flex;
103103
flex-direction: row;
104104
}
105105

106-
#payment .pagarme_creditcard_divider p:after ,
107-
#payment .pagarme_creditcard_divider p:before {
106+
.pagarme_creditcard_divider p:after,
107+
.pagarme_creditcard_divider p:before {
108108
content: "";
109109
flex: 1 1;
110110
border-bottom: 1px solid;
111111
margin: auto;
112112
}
113-
#payment .pagarme_creditcard_divider p:after {
113+
.pagarme_creditcard_divider p:after {
114114
margin-left: 0.5em;
115115
}
116-
#payment .pagarme_creditcard_divider p:before {
116+
117+
.pagarme_creditcard_divider p:before {
117118
margin-right: 0.5em;
118119
}
119120

build/credit_card.asset.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<?php return array('dependencies' => array('react', 'react-dom', 'wp-data', 'wp-element'), 'version' => '568464aca724c57656dd');
1+
<?php return array('dependencies' => array('react', 'react-dom', 'wp-data', 'wp-element'), 'version' => '4df6da733d92f5ffc390');

build/credit_card.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "pagarme/woocommerce-pagarme-payments",
33
"description": "Pagar.me module for Woocommerce",
44
"type": "wordpress-plugin",
5-
"version": "3.4.0",
5+
"version": "3.4.2",
66
"license": "GPL",
77
"autoload": {
88
"psr-4": {

0 commit comments

Comments
 (0)