Jquery 创建一个贝宝捐赠按钮,使用智能按钮选择价格或填写自己的价格
当我输入自己想要的价格时,paypal支付平台会弹出良好的窗口,但我的问题是当我点击选项价格时,paypal似乎没有检测到价格值。 这就是我在下面所做的。当我点击这些单独的价格。贝宝似乎没有得到价格的价值。该值出现在输入字段中,但paypal无法识别,除非我手动输入所需的值 请我需要这个,我在做一个项目。这需要动态工作。javascript有什么问题吗?请告诉我。同时告诉我一个更好的方法Jquery 创建一个贝宝捐赠按钮,使用智能按钮选择价格或填写自己的价格,jquery,paypal,Jquery,Paypal,当我输入自己想要的价格时,paypal支付平台会弹出良好的窗口,但我的问题是当我点击选项价格时,paypal似乎没有检测到价格值。 这就是我在下面所做的。当我点击这些单独的价格。贝宝似乎没有得到价格的价值。该值出现在输入字段中,但paypal无法识别,除非我手动输入所需的值 请我需要这个,我在做一个项目。这需要动态工作。javascript有什么问题吗?请告诉我。同时告诉我一个更好的方法 <table border="0" cellpadding=&quo
<table border="0" cellpadding="10" cellspacing="0" align="center">
<img src="https://www.paypalobjects.com/digitalassets/c/website/marketing/apac/C2/logos-buttons/optimize/26_Blue_PayPal_Pill_Button.png" alt="PayPal" /></table>
<h4 class="text-style-news">Paypal Payment Platform</h4>
<button id="Paypal1" class="btn btn-sm btn-danger" style="margin-right: 15px;">$10</button>
<button id="Paypal2" class="btn btn-sm btn-danger" style="margin-right: 15px;">$20</button>
<button id="Paypal3" class="btn btn-sm btn-danger" style="margin-right: 15px;">$50</button>
<button id="Paypal4" class="btn btn-sm btn-danger">$100</button>
<label style="float: left;" for="amount" class="mb-2"><p class="support-p"><strong>Any Amount*</strong></p></label>
<br> <br>
<input type="number" id="amount" class="form-control mb-4" placeholder="in $USD" onchange="Pay()">
<br>
<!-- Set up a container element for the button -->
<div id="paypal-button-container"></div>
<!-- Include the PayPal JavaScript SDK -->
<script src="https://www.paypal.com/sdk/js?client-id=sb¤cy=USD">
</script>
<script>
var amount = 0;
function Pay() {
// body...
amount = document.getElementById("amount").value;
}
// Render the PayPal button into #paypal-button-container
paypal.Buttons({
// Set up the transaction
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: amount
}
}]
});
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
// Show a success message to the buyer
alert('Donation completed by ' + details.payer.name.given_name + '!');
location.replace("https://www.example.com/completed_success.php");
});
}
}).render('#paypal-button-container');
</script>
<script>
$("#Paypal1").click(function () {
$("#amount").val("10");
});
$("#Paypal2").click(function () {
$("#amount").val("20");
});
$("#Paypal3").click(function () {
$("#amount").val("50");
});
$("#Paypal4").click(function () {
$("#amount").val("100");
});
</script>
贝宝支付平台
$10
$20
$50
$100
任何金额*
风险价值金额=0;
职能薪酬(){
//身体。。。
金额=document.getElementById(“金额”).value;
}
//将PayPal按钮渲染到#PayPal按钮容器中
贝宝,按钮({
//设置事务
createOrder:函数(数据、操作){
return actions.order.create({
购买单位:[{
金额:{
价值:金额
}
}]
});
},
//完成交易
onApprove:功能(数据、操作){
返回actions.order.capture().then(函数(详细信息){
//向买家显示成功消息
警报(“+details.payer.name.given_name+”!”完成的捐赠);
位置。替换(“https://www.example.com/completed_success.php");
});
}
}).render(“#贝宝按钮容器”);
$(“#Paypal1”)。单击(函数(){
美元(“金额”).val(“10”);
});
$(“#Paypal2”)。单击(函数(){
美元(“金额”).val(“20”);
});
$(“#Paypal3”)。单击(函数(){
美元(“金额”).val(“50”);
});
$(“#Paypal4”)。单击(函数(){
美元(“金额”).val(“100”);
});
您可以通过使用一个单击
功能简化您的代码
,并在HTML按钮中添加属性,还可以向按钮添加一个类
,用于调用单击事件
我们只需将数据id
分配给每个按钮,每个按钮都有相应的金额,单击按钮时,我们使用jQuery数据
获取id
和分配给id
的值,该值将为金额
此外,我将仅使用jQuery
或纯JS
进行修改。它不希望两者都混淆,因此没有混淆
要获得金额,只需在Pay()
函数中使用.val()
函数即可
我还建议使用以下函数将字符串
转换为数字
(整数)。我相信paypal希望数字是金额
,而不是字符串值
贝宝的完整工作演示:
运行下面的代码段以查看它是否正常工作。(您可以将PayPal配置添加回代码中,如果我添加它,这里的代码段会阻止它。)
//一键取数功能(金额)
$(“.Paypal”)。单击(函数(){
$('#amount').val($(this.data('id'))
//再次调用pay函数,以便paypal的值也会更新。
支付
});
风险价值金额=0;
职能薪酬(){
//得到数量
amount=parseInt($('#amount').val()//使用parseInt获取int值
console.log(金额)
}
贝宝支付平台
$10
$20
$50
$100
任何金额*
如果我帮您解答了这个问题,您介意接受我的工作答案吗。让我知道。你好,谢谢你的回答,我不在家。很抱歉,我回信晚了。但我认为我的库存仍然充足。PayPal似乎将这些值视为一个字符串。仍然存在相同的问题,仅在手动输入值时有效。如何使用parseInt()?我已经更新了答案,以获取数值。请参见支付
功能amount=parseInt($('#amount').val())
我会这样做,稍后给你反馈。如果我仍然遇到问题,我还能对代码做些什么?我发现了问题所在。当您单击自定义金额等按钮时,根本没有调用Pay()
函数。它只适用于手动输入的原因是您的输入中有onchange=“Pay()”
。我在您的单击函数中也添加了Pay()
函数,因此当您单击按钮时会调用该函数,当您手动键入金额时也会调用该函数。我在下面编辑了我的答案。