首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net上下文中的弹出窗口不显示Paypal屏幕

.Net上下文中的弹出窗口不显示Paypal屏幕
EN

Stack Overflow用户
提问于 2016-09-09 21:19:27
回答 1查看 187关注 0票数 1

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

代码语言:javascript
复制
<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>

上下文中的签出概述描述了以下步骤:

要使用PayPal签出,买方单击PayPal签出按钮。 作为对按钮单击的响应,这些操作将发生: 在上下文JavaScript打开一个弹出窗口,并等待您的表单提交,以创建一个快速结帐付款。成功的create返回您在后续步骤中使用的HATEOAS链接。使用来自响应的重定向URL将买方重定向到PayPal URL。如果您正确地集成了上下文中的JavaScript,弹出窗口将管理重定向.

对于我的OnLoad事件,我将使用以下方法进行测试:

代码语言:javascript
复制
    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:

代码语言:javascript
复制
<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(链接)的调用基本相同。希望这能有所帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-13 21:07:32

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

我的问题被修正了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39419850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档