.Net 上下文弹出窗口不显示在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结账按钮。

作为对按钮单击的响应,发生以下操作:

In-Context JavaScript打开一个弹出窗口,等待你的表单提交以创建Express Checkout付款。一次成功的创作payment调用返回后续步骤中使用的HATEOAS链接。使用响应中的重定向URL将购买者重定向到贝宝的URL。如果你已经正确地集成了In-Context

对于我的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);
            }
        }
    }

如果我将action属性添加到<form>,则弹出窗口将填充该操作。我期待的弹出窗口与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(链接)执行基本相同的调用。

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

我的问题是更新与修复。

相关内容

  • 没有找到相关文章

最新更新