New to the community? Welcome! Please read our Community Rules and Guidelines
If you want to report illegal content under the EU Digital Services Act, please do so here
I have recently tried implementing smart buttons using code based on the code generated from the smart buttons code generator. I was previously using the old pay now button. I am getting a lot of refused payments, especially if my customer is using a PayPal account. This includes customers I have dealt with who have known good accounts. I appear to be losing roughly 30% of my transactions. Here is an example of my code:
Near the start of my page:
<script src="https://www.paypal.com/sdk/js?client-id={ID removed}¤cy=GBP"></script>
This code is called after my customer agrees to terms and conditions:
paypal.Buttons({
style: {
shape: 'rect',
color: 'silver',
layout: 'vertical',
label: 'pay',
},
createOrder: function(data, actions) {
JL().info("Creating order");
return actions.order.create({
purchase_units: [{
amount: {value: '60'},
custom_id: '38539',
}],
});
},
onApprove: function(data, actions) {
JL().info("Approving order 38539");
JL().info(data);
showLoading();
try{
return actions.order.capture().then(function(details) {
JL().info(details);
JL().info("Success");
appender.sendBatch();
alert("Transaction completed successfully");
window.location.href = 'somewhere';
});
}catch(err)
{
JL().info(actions);
hideLoading();
alert(err.message);
throw(err);
}
}
}).render('#paypal-button-container');
The JL stuff is jsnlog which I put in later to try to debug the problem. showLoading and hideLoading show/hide a progress throbber.
When the transaction fails I get an exception that contains the really helpful message "Script error"