当前位置: 首页 > 知识库问答 >
问题:

Paypal Express结账后重新加载页面

顾嘉纳
2023-03-14

添加了快速结账按钮到我的页面,并使用客户端代码设置服务器端进程:

<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
    var CREATE_PAYMENT_URL = "<create_payment_url>";
    var EXECUTE_PAYMENT_URL = "<execute_payment_url>";

    paypal.Button.render({
        env: "sandbox",
        payment: function (resolve, reject) {
            return paypal.request.post(CREATE_PAYMENT_URL)
                .then(function (data) {
                    resolve(data.id);
                })
                .catch(function (err) {
                    reject(err);
                });
        },
        onAuthorize: function (data) {
            return paypal.request.post(EXECUTE_PAYMENT_URL, { paymentID: data.paymentID, payerID: data.payerID })
                .then(function (data) {
                    document.querySelector('#paypal-button').innerText = 'Payment Complete!';
                    console.log("Success", data);
                })
                .catch(function (err) {
                    console.log("Error", err);
                });
        }
    }, "#paypal-button");
</script>

我使用服务器端。NET SDK通过通用处理程序创建和处理支付,它工作正常,但是在调用支付执行后,整个页面被重新加载。

我想通过执行监听器处理结果/错误-paypal。要求post(执行付款URL…)使用定义的回调。然后()和。catch()方法。

用于贝宝的互动演示https://developer.paypal.com/demo/checkout/#/pattern/server 监听器按预期工作。

谢谢你的建议。

共有1个答案

童琪
2023-03-14

问题是我在我的创建付款处理程序(create_payment_URL)中使用了默认的重定向_URL,因为我不需要它们——响应由JavaScript侦听器处理。但redirect_URL是支付对象的必需参数。然而,这些重定向和取消URL似乎不需要是正确的,只有服务器端口应该响应。

我的服务器端代码如下所示:

Dictionary<string, string> config = ConfigManager.Instance.GetProperties();
string accessToken = new OAuthTokenCredential(config).GetAccessToken();
APIContext apiContext = new APIContext(accessToken);
Payer payer = new Payer()
{
    payment_method = "paypal"
};
RedirectUrls redirUrls = new RedirectUrls()
{
    cancel_url = "http://localhost:<correct_port>/some_cancel.ashx",
    return_url = "http://localhost:<correct_port>/some_return.ashx"
};
ItemList itemList = new ItemList()
{
    items = new List<Item>() {
    // Some items
}
};
Amount amount = new Amount()
{
    currency = "EUR",
    total = "##.##",
};
List<Transaction> transList = new List<Transaction>()
{
    new Transaction() {
        amount=amount,
        description="Desc...",
        invoice_number="#####",
        item_list=itemList
    }
};
Payment payment = new Payment()
{
    intent = "sale",
    payer = payer,
    transactions = transList,
    redirect_urls = redirUrls
};
Payment createdPayment = payment.Create(apiContext);
context.Response.Write(/*<Serialized response>*/);

还有一个问题我想问。当我通过沙盒买家Paypal帐户登录时,我不能更改付款方式,只有Paypal余额可用。但是,当我尝试演示(https://developer.paypal.com/demo/checkout/#/pattern/server),有可能改变付款方式到绑定到Paypal帐户的信用卡。我使用相同的沙盒帐户为两个测试。

谢谢

 类似资料:
  • 嗨,伙计们,我是一个平均堆栈开发的初学者,我试图在注销后刷新页面。我尝试了;但它不起作用告诉我可能的代码页面重载在这种情况下

  • 我想在注销后刷新/重新加载页面(屏幕上的消息在5秒钟内可见)。当前代码不会刷新它,所以我仍然在标题中看到用户名,而不是像登录按钮这样的东西。 我已经检查了这篇文章,但没有什么变化。

  • 在添加优惠券代码后,我需要重新加载整个WooCommerce结账页面 我尝试了以下代码,但没有重新加载。 我需要此函数的原因是: 在添加优惠券代码后,审阅表的价格变为defalut语言价格 当我刷新页面时,它会显示翻译语言的价格,因此我需要重新加载它。 请告诉我如何重新加载好吗? 在签出页面中添加了以下代码: 订单审查表: 申请优惠券:

  • 问题内容: 成功的ajax调用后,我在重定向/重新加载时遇到一些问题。情况如下: 我有要删除的项目保存在数组中。当我单击一个按钮时,它将通过ajax调用PHP文件,成功后,我需要重新加载页面。但是我在这样做时有一些问题。我在互联网上搜索,找不到有效的解决方案。 我有PHP文件,该文件通过数组从数据库中逐项删除。 另外,我有jQuery部分: 我的意思是,该代码有效,但效果不佳。它会删除项目,但不是

  • 请考虑以下代码: 忽略所有axios请求: login.js 此页面通过将loggedIn更改为true并将currentUser更改为“fa”来更新GlobalContext。 profile.js 这将获取状态并记录它。 下面是reducer.js和globalcontext.js: 一切工作都很好,一旦我登录,我就会被重定向到主页,就像我应该做的那样,正确的状态正在被记录。 但是,一旦我刷新

  • 我想重新加载页面。我该怎么做?