【问题标题】:paypal not redirecting to the paypal site but inks are getting in the response in Meteor贝宝没有重定向到贝宝网站,但墨迹正在流星的响应中
【发布时间】:2020-07-23 10:37:24
【问题描述】:

我是 Meteor 和集成 Paypal 的新手(我从未做过)。

from Client side in meteor - 

我在点击按钮时调用方法。

<MDBBtn onClick={(e) => callPaypal(e)} color="primary" type="submit">
                Add and Continue to PayPal
</MDBBtn>

还有这个 callpaypal() 方法 ->

import { Link as ReactRouterLink } from 'react-router-dom'

  const callPaypal = (e) => {
    e.preventDefault();
    Meteor.call('createPayalPayment', (err, res) => {
      console.log(res[1].href)                                  **FIRST CONSOLE**
      if (res) {
        let link = res[1];
        if (link.href) {
          return <ReactRouterLink to={`${link.href}`} />
        }
      }
    })
  }

从服务器调用 createPayalPayment 方法 ->

import { Config } from "./paypal_config";

createPayalPayment() {
    var data = {
      "intent": "sale",
      "payer": {
        "payment_method": "paypal"
      },
      "redirect_urls": {
        // "return_url": `${Meteor.absoluteUrl('/execute'), { "replaceLocalhost": "true" }}`,
        "return_url": "http://127.0.0.1:3000/execute",
        "cancel_url": "http://172.20.10.5:3000/cancel"
      },
      "transactions": [{
        "amount": {
          "currency": "USD",
          "total": "1.00"
        },
        "description": "This is the payment description."
      }]
    };

    paypal.configure(Config);
    var ppCreate = Meteor.wrapAsync(paypal.payment.create.bind(paypal.payment));
    var ppExecute = Meteor.wrapAsync(paypal.payment.execute.bind(paypal.payment));
    var response = ppCreate(data);
    if (response.state !== 'created') {
      console.log('not created!!!!!!!!!!!!!!!!')
    }
    else {
    console.log(response);                                             **SECOND CONSOLE**
    return response.links;
    }
  }

这是我的 Paypal 配置 ->

export const Config = {
  'mode': 'sandbox',
  'client_id': 'client_Id',
  'client_secret': 'secret'
};

第一个控制台 --> 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&amp;token=EC-1HR12649X9688931M'

第二个控制台 -->>

{ id: 'PAYID-L2IJO4I8GE24787GF168351L',
   intent: 'sale',
   state: 'created',
   payer: { payment_method: 'paypal' },


   transactions: 
    [ { amount: [Object],
        description: 'This is the payment description.',
        related_resources: [] } ],
   create_time: '2020-04-10T15:57:37Z',

   links: 
    [ { href: 'https://api.sandbox.paypal.com/v1/payments/payment/PAYID-L2IJO4I8GE24787GF168351L',
        rel: 'self',
        method: 'GET' },
      { href: 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-1HR12649X9688931M',
        rel: 'approval_url',
        method: 'REDIRECT' },
      { href: 'https://api.sandbox.paypal.com/v1/payments/payment/PAYID-L2IJO4I8GE24787GF168351L/execute',
        rel: 'execute',
        method: 'POST' } ],


   httpStatusCode: 201 
}

因为 links[2].href 是 URL,paypal 应该被重定向到这里并且用户可以登录到帐户。但它不是重定向。所以我在First console 下方的callPaypal() 方法 中手动重定向到此链接。 但是路由器仍然无法重定向到链接,可能是外部域问题,或者即使它没有显示错误。 请问有什么办法可以让paypal自己重定向到paypal登录?我已经在这上面浪费了我的 2 天时间,但仍然一无所获。 谢谢。

我在我的 paypal 开发者帐户中为这个项目添加了重定向 URL。

【问题讨论】:

标签: meteor paypal


【解决方案1】:

您似乎在使用旧的、基于重定向的 PayPal 集成,所以我的建议是尝试新的上下文体验:https://developer.paypal.com/demo/checkout/#/pattern/server

请注意对 '/demo/..' 占位符的两个 fetch 调用,它们需要替换为服务器上的实际路由。第一个应该返回一个 PayID(或更新的 v2/orders ID),第二个应该执行/捕获该 ID。

这种集成非常出色,因为您的网站在后台保持加载,买家无需“离开”即可结账和付款。


在服务器端,您可能正在使用旧的已弃用 v1 PayPal-node-SDK,没有理由为新的集成这样做。相反,请使用 v2 Checkout-NodeJS-SDK

【讨论】:

  • 嗨普雷斯顿,感谢您的帮助。让我告诉你应用程序的动机,我(管理员)只想通过 paypal sdk 使用我的贝宝在他们的贝宝帐户中向注册到我的应用程序的用户支付美元。那么,这是正确的做法吗?还是我需要一些别的东西?我从来没有用过贝宝,所以真的很困惑。
  • 如果您向某人汇款,则不需要结帐。您可以在 www.paypal.com 中使用“汇款”界面手动完成。如果您需要大批量或自动批量操作,您可以申请 PayPal Payouts,它有一个 API developer.paypal.com/docs/payouts/integrate/prerequisites
  • 我上面的代码有效。虽然我使用的是 sdk 的旧 v1,但它仍然可以正常工作。我面临的主要问题是它不会自动重定向到贝宝登录链接(即响应中的链接[2].href)。因此,我通过将此链接返回到客户端并使用windows.location.href = links[2].href 手动完成此操作,并且它有效。现在它重定向到贝宝登录窗口。你能建议我比这一步普雷斯顿更好吗?所以,将来如果有人面临同样的问题,他们可以有更好的解决方案。感谢您的帮助。
猜你喜欢
  • 2012-03-17
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 2014-10-22
  • 2012-11-27
  • 2013-06-01
相关资源
最近更新 更多