【问题标题】:Capture PayPal Order捕获 PayPal 订单
【发布时间】:2021-01-14 08:50:29
【问题描述】:

当与 PayPal 的 V2 订单 API using the NodeJS SDK 集成时,何时是完成订单的正确时间(例如,将产品运送给客户)。

async function captureOrder(orderId) {
    try {
        const request = new checkoutNodeJssdk.orders.OrdersCaptureRequest(orderId);
        request.requestBody({});
        const response = await payPalClient.client().execute(request);
        // Is it safe to assume, if the above line didn't reject, the order has been successfully captured?...or do we need to verify the status of the order / capture etc.
        return response;
    }
    catch (e) {
        console.log(e)
    }
}

【问题讨论】:

    标签: node.js paypal paypal-rest-sdk


    【解决方案1】:

    如果您想在发货前进行肯定检查,您可以检查COMPLETED 中的status,这是API 参考中记录的成功https://developer.paypal.com/docs/api/orders/v2/#orders_capture 中的值

    INSTRUMENT_DECLINED的可追回资金失败问题,以及任何不可追回的情况,应按照https://developer.paypal.com/demo/checkout/#/pattern/server中的逻辑处理

    【讨论】:

    • 我想我的问题是,我是否需要对COMPLETEDstatus 进行肯定检查——即如果在捕获期间发生“INSTRUMENT_DECLINED”(或任何其他故障),我应该期望执行调用拒绝?
    • 另外,我问这个问题的原因是因为我们有一个状态为“已完成”但捕获状态为“已拒绝”的 PayPal 订单,所以我想弄清楚了解它是如何/为什么进入这种状态的。
    • 这似乎是不正确的,因为 PayPal 文档对 order.status 这么说——“已完成:付款已授权或已为订单获取授权付款。”
    • 有两种状态,顶级订单状态和purchase_units[0].captures.status,您可以在右侧的示例响应中看到。您需要检查后者,该捕获 ID 是用于会计目的的 PayPal 交易 ID。
    • 所以即使订单“已完成”,即“已授权付款或已为该订单获取授权付款。”,这并不一定意味着已获取付款?
    猜你喜欢
    • 2020-10-24
    • 2018-01-26
    • 2011-12-14
    • 2016-03-20
    • 2019-08-03
    • 2021-01-20
    • 2020-12-17
    • 2020-02-10
    • 2020-01-04
    相关资源
    最近更新 更多