PayPal-Mock-Response 不起作用(nodejs、paypal 负面测试)

问题描述 投票:0回答:2

我正在编写代码来涵盖卡被拒绝等类似的负面情况。 根据文档,对订单执行此操作的唯一方法是使用标头 PayPal-Mock-Response https://developer.paypal.com/tools/sandbox/negative-testing/request-headers/

但是,它对我不起作用,每次我尝试添加带有任何错误的“PayPal-Mock-Response”标头时,我都会收到 403 错误和空响应,根本无法使其工作

示例,请求:

POST https://api-m.sandbox.paypal.com/v2/checkout/orders
params:
{
    "method": "post",
    "headers": {
        "Content-Type": "application/json",
        "Authorization": "Bearer A21[reducted]",
        "PayPal-Mock-Response": "{\"mock_application_codes\":\"DUPLICATE_INVOICE_ID\"}"
    },
    "body": "{\"intent\":\"CAPTURE\",\"purchase_units\":[{\"custom_id\":89534,\"description\":\"my item name\",\"reference_id\":648,\"amount\":{\"currency_code\":\"USD\",\"value\":\"5.01\"}}]}"
}

回应:

{
  "statusCode": 403,
  "responseText": ""
}

我正在使用nodejs,node-fetch包,身份验证令牌是正确的,因为我已经得到了积极的场景工作,只有当我添加“PayPal-Mock-Response”标头时才会抛出403错误。

我做错了什么或者有其他方法可以在沙箱上付款失败吗?

node.js testing paypal checkout node-fetch
2个回答
2
投票

DUPLICATE_INVOICE_ID
不是模拟 /v2/checkout/orders creation API 调用的有效错误...

发布到 https://api-m.sandbox.paypal.com/v2/checkout/orders

然而,对于 v2 订单capture API 调用来说,这是一个有效错误:

发布到 https://api.sandbox.paypal.com/v2/checkout/orders/:id/capture

这个示例是您引用的文档中实际给出的。

--

从概念上讲,发票 ID 将在捕获时进行检查。您可以为给定的发票 ID 创建任意数量的订单(用于结账尝试),在对同一 ID 重试审批时不会出现重复问题。重复发票错误是指尝试捕获已导致为该帐户创建成功交易的 ID(使用该 ID 创建交易)时出现的错误。重点是防止重复付款,而不是防止尚未创建付款的重复结帐尝试。

--

如果您想阻止尝试创建新订单 ID,请在创建调用中设置

PayPal-Request-Id
标头。使用相同的标头重复调用将返回与之前相同的信息。


0
投票

我仍然有同样的问题。负面测试处于活动状态,我使用了以下标题:

Debugger Screenshot with Reponse code

def create_order(self, payload: dict) -> dict:
    access_token = self.get_access_token()
    response = requests.post(
        self.get_endpoint("/checkout/orders/", version="v2"),
        headers={
            "Authorization": f"Bearer {access_token}",
            "Accept-Language": get_language(),
            "Content-Type": "application/json",
            "Prefer": "return=representation",
            "PayPal-Request-Id": self.hash_data(payload),
            "PayPal-Mock-Response": '{"mock_application_codes": "AUTHENTICATION_FAILURE"}',
        },
        json=payload,
    )

    response = response.json()
    return response

API 仍在响应 403。当我删除标头时,会响应新订单。

© www.soinside.com 2019 - 2024. All rights reserved.