Node.js Paypal sdk:签证卡不起作用

Posted

技术标签:

【中文标题】Node.js Paypal sdk:签证卡不起作用【英文标题】:Node.js Paypal sdk: visa card is not working 【发布时间】:2020-07-01 21:29:36 【问题描述】:

我正在尝试在 node.js 中使用 PayPal 处理信用卡 使用主卡,以下代码适用于具有201 状态代码的沙盒帐户。 但是,不能使用“签证”、“美国运通”。 使用“visa”、“amex”卡,我收到500 状态码,但找不到错误详细信息。 谁见过这个案例?

var paypal = require('paypal-rest-sdk');

paypal.configure(
    'mode': 'sandbox',
    'client_id': 'CLIENT_ID',
    'client_secret': 'CLIENT_SECRET_KEY'
);

var payment = 
    "intent": "authorize",
    "payer": 
        "payment_method": "credit_card",
        "funding_instruments": [
            "credit_card": 
                "type": "visa",//visa//mastercard//amex
                "expire_month": 1,
                "expire_year": 2022,
                "cvv2": "VISA_CCV2",
                "number": "VISA_NUMBER"
            
        ]
    ,
    "redirect_urls": 
        "return_url": "http://127.0.0.1:3000/success",
        "cancel_url": "http://127.0.0.1:3000/err"
    ,
    "transactions": [
        "item_list": 
            "items": [
                "name": "media dvd",
                "sku": "001",
                "price": "1.00",
                "currency": "USD",
                "quantity": 1
            ]
        ,
        "amount": 
            "total": 1.00,
            "currency": "USD"
        ,
        "description": " a book on mean stack "
    ]


paypal.payment.create(payment,  timeout: 10000 , function (err, payment) 
    if (err) 
        console.log(err, payment);


    
    else 
        console.log(payment);
    
); 

【问题讨论】:

您以文本形式将信用卡号传递给 PayPal?阅读 developer.paypal.com 上的文档 此集成未启用以供实时使用。你不应该整合它。它不受支持且无法使用。 【参考方案1】:

发件人:https://developer.paypal.com/docs/api/payments/v1/

重要提示:使用 PayPal REST /payments API 接受信用卡付款受到限制。相反,您可以使用 Braintree Direct 接受信用卡付款。

(Braintree direct 将是一个完整的网关帐户,需要帐户批准并且仅适用于企业in certain countries.)

由于您试图将旧的东西与旧的 SDK 集成,并且无法在实际环境中使用 - 这是最好的 PayPal 替代方案:

使用受支持的新 v2 Checkout-NodeJS-SDK

使用带有黑色借记卡/信用卡按钮的 PayPal Checkout 前端:https://developer.paypal.com/demo/checkout/#/pattern/server

【讨论】:

【参考方案2】:

直接付款仅限于从信用卡到贝宝。 因此,您可以使用 Braintree Direct 实现支付集成。

const braintree = require("braintree");

const gateway = new braintree.BraintreeGateway(
   environment: braintree.Environment.Sandbox, // Sandbox or Production
   merchantId: "Your_merchatn_id",
   publicKey: "Your_public key",
   privateKey: "Your_private_key"
);

您可以使用 merchantId、publicKey、privateKey 进行身份验证。

gateway.transaction.sale(
        amount: `10`,
        paymentMethodNonce: "fake-valid-nonce",
        options: 
          submitForSettlement: true,
          storeInVaultOnSuccess: true
        
      , function (err, result) 
        if (err) 
          console.error(err);
        
      
        if (result.success) 
          console.log('Transaction ID: ' + result.transaction.id);
          console.log('Customer ID: ' + result.transaction.customer.id);
            var customer_id = result.transaction.customer.id;
            let creditCardParams = 
                customer_id,
                number: `4111111111111111`,
                expirationDate: `04/2022`,
                cvv: `133`
              ;
              
              gateway.creditCard.create(creditCardParams, (err, response) => 
                  if(err) 
                      console.log(err.message);
                   else 
                      console.log(response);
                  
              );
          else 
             console.error(result);
         
     );

【讨论】:

以上是关于Node.js Paypal sdk:签证卡不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Paypal rest sdk 400 error (node.js) 关于 VALIDATION ERROR 的事情(错误写在描述中)

如何在 paypal node.js 中获取交易 ID 反应?

如何在 node.js 中的 paypal 中创建可变的定期付款

JS 语音合成到 Node.JS 可读流

paypal rest api 测试信用卡号码

Paypal 批量支付在节点 js api 中不起作用