求助:如何用C#后台变量配置PayPal API的description字段
问题描述
我尝试通过C#后台字符串变量设置PayPal按钮的description字段,但只有在HTML嵌入的JavaScript中硬编码该字段时,按钮才能正常工作。
我的目标是实现固定金额、描述可变的支付功能,金额部分配置没问题,但description字段始终无法生效。按钮能正常渲染,但点击后会报错。
硬编码时功能正常:
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({ style: { color: "gold", shape: "rect", layout: "vertical" }, createOrder: (data, actions) => { 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); }, 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); }, onError: (err) => { console.log('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>
解决方案
问题出在purchase_units里的description格式错误——PayPal Orders API v2的description字段是直接字符串值,不是嵌套的{value: ...}对象。你硬编码时用的是字符串格式,动态获取时错误地套了对象结构,导致API请求报错。
修改步骤:
- 修正
createOrderPayload中purchase_units的description字段,直接赋值ssk即可,去掉嵌套的value属性。 - 可选:给获取到的文本做首尾空格清理,避免空值或无效字符干扰。
修改后的核心代码片段:
const createOrderPayload = { purchase_units: [{ description: ssk, // 直接赋值字符串,移除嵌套的value对象 amount: { value: num }, }], items: [{ name: "Dues Or Donation", unit_amount: { currency_code: 'USD', value: num, }, quantity: "1" }] };
文本清理代码(添加在获取ssk的行):
ssk = document.getElementById("WhyDonate").textContent.trim();
内容的提问来源于stack exchange,提问作者William Hinchman
相关产品推荐
相关产品推荐

