You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用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&currency=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请求报错。

修改步骤:

  1. 修正createOrderPayload中purchase_units的description字段,直接赋值ssk即可,去掉嵌套的value属性。
  2. 可选:给获取到的文本做首尾空格清理,避免空值或无效字符干扰。

修改后的核心代码片段:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:33:13