我正在尝试使用 C# 代码隐藏中的字符串变量来设置描述字段。除非我对 HTML 代码中嵌入的 Javascript 中的描述进行硬编码,否则我无法让按钮正常工作。
目标是建立具有可变描述的单一支付金额。我已经计算出了金额,但似乎无法获取描述字段。按钮呈现,但单击时我只收到错误消息。
如果我使用它确实有效:
Description: "Hard Code Info"
我是 Javascript 新手 - 任何帮助将不胜感激。
<script src="https://www.paypal.com/sdk/js?client-id=xx¤cy=USD&intent=capture"></script>
<script>
var num
var apr
var ssk
const paypalButtonsComponent = paypal.Buttons({
// optional styling for buttons
// https://developer.paypal.com/docs/checkout/standard/customize/buttons-style-guide/
style: {
color: "gold",
shape: "rect",
layout: "vertical"
},
// set up the transaction
createOrder: (data, actions) => {
// pass in any options from the v2 orders create call:
// https://developer.paypal.com/api/orders/v2/#orders-create-request-body
num = document.getElementById("MyAmount").textContent;
ssk = document.getElementById("WhyDonate").textContent;
const createOrderPayload = {
purchase_units: [{
description: {
value: ssk
},
amount: {
value: num
},
}],
items: [{
name: "Dues Or Donation",
unit_amount: {
currency_code: 'USD',
value: num,
},
quantity: "1"
}]
};
return actions.order.create(createOrderPayload);
},
// finalize the transaction
onApprove: (data, actions) => {
const captureOrderHandler = (details) => {
const payerName = details.payer.name.given_name;
document.getElementById("MyAmount").textContent = apr;
document.getElementById('<%=ClearSession.ClientID %>').click();
};
return actions.order.capture().then(captureOrderHandler);
console.log(Details);
},
// handle unrecoverable errors
onError: (err) => {
console.log('An error prevented the buyer from checking out with PayPal');
// alert('An error prevented the buyer from checking out with PayPal');
}
});
paypalButtonsComponent
.render("#paypal-button-container")
.catch((err) => {
console.log('PayPal Buttons failed to render');
});
</script>
actions.order.create
和 .capture
已弃用,不应用于任何新集成;支持将在未来被取消和删除。
相反,从后端(不是浏览器 JS)创建并捕获订单 - 并从您拥有的 JS 获取这些路由。
请参阅标准集成指南了解详细信息和示例。该示例使用 Node.js 作为后端,但当然这些后端路由可以在任何环境/语言中实现;无论您的服务器使用什么。