paypal - 为可变金额和澳元创建一个 PayPal 按钮
问题描述
我正在使用 PHP 和 HTML 创建一个购物车,一切正常。但我希望能在创建一个 PayPal(PP) 按钮以适应可变金额(即购物车中的总额)并将货币更改为澳元 (AUD) 方面提供一些帮助。当我提交下面的代码时,只要我不尝试更改默认为美元的货币,它就可以正常工作。我还需要设置一个返回“感谢”URL 和一个“取消”URL。我已经用谷歌搜索了几个小时,但到目前为止还没有找到适合我的解决方案。
任何帮助将不胜感激,并在期待中感谢您。
<!-- now the button -->
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="xxxx@yyyy.com.au">
<input type="hidden" name="item_name" value="Item Description">
<input type="hidden" name="item_number" value="">
<input type="hidden" name="amount" value="$total">
<input type="hidden" name="handling" value="0.00">
<input type="hidden" name="shipping" value="0.00">
<!-- <input type="hidden" name="currency_code" value="AUD"> -->
<input type="hidden" name="lc" value="AU">
<input type="hidden" name="bn" value="PP-BuyNowBF">
<input type="image" src="https://www.paypalobjects.com/en_AU/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_AU/i/scr/pixel.gif" width="1" height="1">
<input type="hidden" name="add" value="1">
</form>
感谢 Preston PHX 的建议,我的代码现在看起来像这样,这很好,但是单击 PayPal 链接,即使它显示了手形图标,也不会去任何地方。请告诉我我做错了什么或错过了什么。谢谢你。
echo <<<DD1
<!-- DEVELOPMENT TEST!!!-->
<div id="smart-button-container" style="width: 60%; margin-left: 21%;">
<div style="text-align: left"><label class="checkout_form_mt_right v_align_top" for="description">Item: </label><input type="text" name="descriptionInput" id="description" size="40" value="Text here"></div>
<p id="descriptionError" style="visibility: hidden; color:red; text-align: center;">Please enter a description</p>
<div style="text-align: left"><label class="checkout_form_mt_right v_align_top" for="amount">Amount: </label><input name="amountInput" type="string" id="amount" value="$total"><span> AUD</span><span class='v_align_top white_text'><small><i> Australian dollars</i></small></span></div>
<p id="priceLabelError" style="visibility: hidden; color:red; text-align: center;">Please enter a price</p>
<div id="invoiceidDiv" style="text-align: center; display: none;"><label for="invoiceid"> </label><input name="invoiceid" maxlength="127" type="text" id="invoiceid" value="" ></div>
<p id="invoiceidError" style="visibility: hidden; color:red; text-align: center;">Please enter an Invoice ID</p>
<div style="text-align: center; margin-top: 0.625rem;" id="paypal-button-container"></div>
</div>
<script src="https://www.paypal.com/sdk/js?client-id=sb¤cy=AUD" data-sdk-integration-source="button-factory"></script>
<script>
function initPayPalButton() {
var description = document.querySelector('#smart-button-container #description');
var amount = document.querySelector('#smart-button-container #amount');
var descriptionError = document.querySelector('#smart-button-container #descriptionError');
var priceError = document.querySelector('#smart-button-container #priceLabelError');
var invoiceid = document.querySelector('#smart-button-container #invoiceid');
var invoiceidError = document.querySelector('#smart-button-container #invoiceidError');
var invoiceidDiv = document.querySelector('#smart-button-container #invoiceidDiv');
var elArr = [description, amount];
if (invoiceidDiv.firstChild.innerHTML.length > 1) {
invoiceidDiv.style.display = "block";
}
var purchase_units = [];
purchase_units[0] = {};
purchase_units[0].amount = {};
function validate(event) {
return event.value.length > 0;
}
paypal.Buttons({
style: {
color: 'gold',
shape: 'rect',
label: 'paypal',
layout: 'vertical',
},
onInit: function (data, actions) {
actions.disable();
if(invoiceidDiv.style.display === "block") {
elArr.push(invoiceid);
}
elArr.forEach(function (item) {
item.addEventListener('keyup', function (event) {
var result = elArr.every(validate);
if (result) {
actions.enable();
} else {
actions.disable();
}
});
});
},
onClick: function () {
if (description.value.length < 1) {
descriptionError.style.visibility = "visible";
} else {
descriptionError.style.visibility = "hidden";
}
if (amount.value.length < 1) {
priceError.style.visibility = "visible";
} else {
priceError.style.visibility = "hidden";
}
if (invoiceid.value.length < 1 && invoiceidDiv.style.display === "block") {
invoiceidError.style.visibility = "visible";
} else {
invoiceidError.style.visibility = "hidden";
}
purchase_units[0].description = description.value;
purchase_units[0].amount.value = amount.value;
if(invoiceid.value !== '') {
purchase_units[0].invoice_id = invoiceid.value;
}
},
createOrder: function (data, actions) {
return actions.order.create({
purchase_units: purchase_units,
});
},
onApprove: function (data, actions) {
return actions.order.capture().then(function (details) {
alert('Transaction completed by ' + details.payer.name.given_name + '!');
});
},
onError: function (err) {
console.log(err);
}
}).render('#paypal-button-container');
}
initPayPalButton();
</script>
<br /><br />
DD1; } // 结束开发
PayPal栏应该是提交按钮吗?如果是这样,我设置它的方式将无济于事。我确实有一个开发人员 API 密钥,但不知道是否/如何/在哪里合并它。我删除了表格 - 感谢您的建议。
同样,任何建议将不胜感激。
这是为黄色 PayPal 按钮生成的代码的屏幕截图。如前所述,我在其中看不到任何 HTML <a 链接?
[屏幕刮擦]
请注意,目前我正在尝试进入沙盒 - 尽管我注意到 Preston 提供的链接包括“开发者”,但可能有一个不同的链接来生成沙盒的按钮?
解决方案
推荐阅读
- docker - 连接到在 windows docker 容器中运行的服务器
- amazon-ec2 - CFN 采用最新的 AMI 并启动 EC2 实例
- java - 在 Lambda 表达式中从 main() 抛出 IOException
- javascript - 如果未单击单选按钮,则在提交按钮上显示错误消息
- php - scandir 函数的 PHP 问题
- angular - 在 Angular 7 中找不到名称“require”(打字稿 3.1.3)
- css - SASS 我可以用字符串和列表值组成变量名吗
- msbuild - 在 asp.net core 2.1 中使用选择性控制器生成包
- javascript - Reactjs试图制作下拉列表,如何不在列表中显示所选列表?
- linux - laravel ftp 适用于 windows 但不适用于 linux