mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-08-30 05:00:51 +08:00
70 lines
1.6 KiB
JavaScript
70 lines
1.6 KiB
JavaScript
import { useEffect, useState } from '@wordpress/element';
|
|
import useButtonStyles from './useButtonStyles';
|
|
|
|
const useGooglepayApiToGenerateButton = (
|
|
componentDocument,
|
|
namespace,
|
|
buttonConfig,
|
|
ppcpConfig,
|
|
googlepayConfig,
|
|
buttonAttributes
|
|
) => {
|
|
const [ googlepayButton, setGooglepayButton ] = useState( null );
|
|
|
|
const buttonStyles = useButtonStyles(
|
|
buttonConfig,
|
|
ppcpConfig,
|
|
buttonAttributes
|
|
);
|
|
|
|
useEffect( () => {
|
|
if (
|
|
! componentDocument?.defaultView ||
|
|
! buttonConfig ||
|
|
! googlepayConfig
|
|
) {
|
|
return;
|
|
}
|
|
|
|
const api = componentDocument.defaultView.google?.payments?.api;
|
|
if ( ! api ) {
|
|
return;
|
|
}
|
|
|
|
const paymentsClient = new api.PaymentsClient( {
|
|
environment: 'TEST',
|
|
} );
|
|
|
|
const googlePayButtonOptions = {
|
|
allowedPaymentMethods: googlepayConfig.allowedPaymentMethods,
|
|
buttonColor: buttonConfig.buttonColor || 'black',
|
|
buttonType: buttonConfig.buttonType || 'pay',
|
|
buttonLocale: buttonConfig.buttonLocale || 'en',
|
|
buttonSizeMode: 'fill',
|
|
buttonRadius: parseInt( buttonStyles?.Default?.borderRadius ),
|
|
onClick: ( event ) => {
|
|
event.preventDefault();
|
|
},
|
|
};
|
|
|
|
const button = paymentsClient.createButton( googlePayButtonOptions );
|
|
|
|
setGooglepayButton( button );
|
|
|
|
return () => {
|
|
setGooglepayButton( null );
|
|
};
|
|
}, [ namespace, buttonConfig, ppcpConfig, googlepayConfig, buttonStyles ] );
|
|
|
|
// Return both the button and the styles needed for the container
|
|
return {
|
|
button: googlepayButton,
|
|
containerStyles: {
|
|
height: buttonStyles?.Default?.height
|
|
? `${ buttonStyles.Default.height }px`
|
|
: '',
|
|
},
|
|
};
|
|
};
|
|
|
|
export default useGooglepayApiToGenerateButton;
|