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

点击PayPal捐赠按钮后输入的捐赠金额存入数据库始终为0如何解决

问题修复方案

核心故障原因

  1. 表单action属性直接配置为PayPal官方地址,提交请求直接发送到PayPal服务,根本没有请求你本地的控制器接口,自然无法获取金额存入本地数据库
  2. 金额输入框的name属性为小写amount,和模型MoneyDonation里大写开头的Amount属性不匹配,就算请求发到本地接口,模型绑定也会失败,属性会被赋值为decimal类型的默认值0
  3. 现有逻辑没有做本地存库和跳转到PayPal支付的流程衔接,直接提交给第三方肯定拿不到本地需要的数据

具体修复步骤

  • 第一步:调整表单提交目标,先提交到你本地的控制器接口
    把原来的form标签替换为:
<form action="/你的控制器名称/Index" method="post">
  • 第二步:修正金额输入框的属性,匹配模型字段名,建议替换为强类型输入组件降低绑定出错概率,把原金额输入行替换为:
@Html.TextBoxFor(model => model.Amount)
@Html.LabelFor(model => model.Amount)
  • 第三步:修改控制器逻辑,存库成功后构造PayPal支付参数,重定向到PayPal支付页即可
    控制器修改后代码参考:
private ApplicationDbContext db = new ApplicationDbContext();
[HttpPost]
public ActionResult Index([Bind(Include = "Id,Amount,User_Id")] MoneyDonation moneyDonation)
{
    if(ModelState.IsValid && moneyDonation.Amount > 0)
    {
        moneyDonation.User_Id = User.Identity.GetUserId();
        db.moneydonation.Add(moneyDonation);
        db.SaveChanges();
        
        // 构造PayPal支付参数重定向
        var payPalParams = new Dictionary<string, string>
        {
            {"cmd", "_xclick"},
            {"business", "elias.odeh@hotmail.com"},
            {"notify_url", "http://你的域名/notifypage.aspx"},
            {"invoice", moneyDonation.Id.ToString()},
            {"item_name", "Donation"},
            {"item_number", "1"},
            {"amount", moneyDonation.Amount.ToString()},
            {"currency_code", "USD"},
            {"bn", "PP-BuyNowBF"}
        };
        var queryStr = string.Join("&", payPalParams.Select(kv => $"{kv.Key}={Uri.EscapeDataString(kv.Value)}"));
        return Redirect($"https://www.paypal.com/donate?{queryStr}");
    }
    ModelState.AddModelError("", "请输入有效的捐赠金额");
    return View(moneyDonation);
}
  • 可选优化:如果需要保证捐赠记录和实际支付结果一致,可以对接PayPal的IPN回调接口,收到官方的支付成功通知后再更新本地捐赠记录的支付状态,避免数据误差。

内容的提问来源于stack exchange,提问作者elias odeh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:39:04