贝宝结帐按钮-客户端/服务器通信

时间:2020-07-09 14:38:43

标签: paypal paypal-ipn

我正在集成Paypal的智能结帐功能。我不了解javascript部分希望从服务器返回什么。这就是我在JS中得到的

...
...
createOrder: function(data, actions) {
    return fetch('/paypal/sandbox/createOrder', {
        method: 'post',
        headers: {
            'content-type': 'application/json'
        }
    }).then(function(res) {
        return res.json();
    }).then(function(data) {
        return data.orderID;
    });
},
...
...

这就是当/ paypal / sandbox / createOrder'被称为…时服务器端所做的事情……

$request = new OrdersCreateRequest();
$request->prefer('return=representation');
$request->body = $this->buildRequestBody();

$response = $this->PayPalClient->execute($request);

我在任何地方都找不到的东西:我应该如何应对?我尝试将其简单地回显,将其作为JSON回显,但是我总是会收到“预期订单ID”之类的错误

我需要响应客户的请求吗?

1 个答案:

答案 0 :(得分:0)

您定义的是createOrder前端JS与后端服务器路由(依次称为PayPal API)之间的通信结构。它可以很简单,也可以很复杂。您可以根据需要来回发送任意数量的参数。您可以使用JSON,XML,摩尔斯电码,RFC 1149或任何您想要的在客户端和服务器之间进行传输的方式。

唯一需要的信息是订单ID,您的服务器端代码又从PayPal API v2 / checkout / orders调用(响应中为id)获取订单ID,以及您的createOrder函数一旦获得,就必须传播回其调用者,在示例代码中发生在这里:

    ...
    return data.orderID;

一个非常简单的实现是回显整个v2 / checkout / orders API响应,而不仅仅是id,并将上述客户端代码更改为return data.id,以便它读取该键名