【问题标题】:.Net In-Context Popup Window Doesn't present Paypal screen.Net 上下文弹出窗口不显示 Paypal 屏幕
【发布时间】:2016-09-09 21:19:27
【问题描述】:

我已按照 Paypal 开发者网站上的建议添加了代码。

<form id="myPaymentContainer" method="post"></form>
<script type="text/javascript">
    window.paypalCheckoutReady = function () {
        paypal.checkout.setup('XUM4RANUNKG4U',
        {
            environment: 'sandbox',
            container: 'myPaymentContainer'
        });
    };
</script>
<script type="text/javascript" src="//www.paypalobjects.com/api/checkout.js" async></script>

In-Context Checkout Overview 描述了该步骤:

要使用 PayPal 结账,买家点击 PayPal Check out 按钮。

响应按钮单击,会发生以下操作:

In-Context JavaScript 会打开一个弹出窗口并等待您的 表单提交以创建 Express Checkout 付款。成功的创作 付款调用会返回您在后续步骤中使用的 HATEOAS 链接。 使用响应中的重定向 URL 将买家重定向到 贝宝网址。 如果您已正确集成 In-Context JavaScript,弹出窗口管理重定向。

对于我的 OnLoad 事件,我正在测试:

    var config = ConfigManager.Instance.GetProperties();
    if (Page.IsPostBack)
    {
        var accessToken = new OAuthTokenCredential(config).GetAccessToken();
        var apiContext = new APIContext(accessToken);



        var transaction = new Transaction()
        {
            amount = new Amount()
            {
                currency = "USD",
                total = "20"
            },
            description = "My product description",
            item_list = new ItemList()
            {
                items = new List<Item>()
                {
                    new Item()
                    {
                        name="The Product",
                        currency="USD",
                        price="20",
                        quantity = "1"
                    }
                }
            },
            invoice_number = "123"
        };

        var payer = new Payer()
        {
            payment_method = "paypal"
        };

        var payment = new Payment()
        {
            intent = "sale",
            transactions = new List<Transaction>() { transaction },
            payer = payer,
            redirect_urls = new RedirectUrls
            {
                cancel_url = "/Home.aspx",
                return_url = "/Checkout.aspx",
            }
        };

        var createdPayment = payment.Create(apiContext);
        var paypalLinks = createdPayment.links;

        if (paypalLinks != null)
        {
            var redirectLink = paypalLinks.FirstOrDefault(lnk => lnk.method == "REDIRECT");
            if (redirectLink != null)
            {
                Response.Redirect(redirectLink.href);
            }
        }
    }

如果我将动作属性添加到我的&lt;form&gt;,弹出窗口会填充动作。我期待弹出窗口使用 Paypal HTML 填充,以便用户可以登录。如果我删除表单上的操作,托管按钮的同一页面将呈现在弹出窗口中。

更新

我确实让这个工作正常。我没有使用表单标签,而是使用了 div:

<div id="myPaymentContainer" />
<script type="text/javascript">
    window.paypalCheckoutReady = function () {
        paypal.checkout.setup('XUM4RANUNKG4U',
        {
            environment: 'sandbox',
            container: 'myPaymentContainer'
        });
    };
</script>
<script type="text/javascript" src="//www.paypalobjects.com/api/checkout.js" async></script>

我稍微重构了逻辑,但它对 Response.Redirect(link) 的调用基本相同。希望这会有所帮助。

【问题讨论】:

    标签: .net paypal paypal-sandbox


    【解决方案1】:

    我发布这个并设置为我的答案,以防人们看到一个问题有一个实际的答案。

    我的问题已通过修复更新。

    【讨论】:

      猜你喜欢
      • 2022-12-14
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      相关资源
      最近更新 更多