使用云功能的braintree节点js

Posted

技术标签:

【中文标题】使用云功能的braintree节点js【英文标题】:braintree node js using cloud functions 【发布时间】:2018-07-27 15:07:38 【问题描述】:

Braintree 使用客户 ID 查找客户返回一个响应对象,其中包含作为 getgateway(key) 的值的函数......并且 firebase 拒绝将响应推送到数据库中......

有错误

错误:Firebase.set 失败:第一个参数包含一个函数 财产 'Wallets.qN5RmUgatwbianIuYYHmLX6GGrC3.Accountdetails.creditCards.0.getGateway' 内容: () => 网关

有人遇到过这个问题并解决了吗?这是我的代码:

find braintree user result:  Customer 
  id: '185946869',
  merchantId: 'hjctjwrqxh6t3qhf',
  firstName: 'kayak@gmail.com',
  lastName: '',
  company: '',
  email: 'kayak@gmail.com',
  phone: '',
  fax: '',
  website: '',
  createdAt: '2018-02-16T10:28:47Z',
  updatedAt: '2018-02-16T10:29:15Z',
  customFields: '',
  creditCards: 
   [ CreditCard 
       bin: '411111',
       cardType: 'Visa',
       cardholderName: null,
       commercial: 'Unknown',
       countryOfIssuance: 'Unknown',
       createdAt: '2018-02-16T10:29:15Z',
       customerId: '185946869',
       customerLocation: 'US',
       debit: 'Unknown',
       default: true,
       durbinRegulated: 'Unknown',
       expirationMonth: '02',
       expirationYear: '2019',
       expired: false,
       healthcare: 'Unknown',
       imageUrl: 'https://assets.braintreegateway.com/payment_method_logo/visa.png?environment=sandbox',
       issuingBank: 'Unknown',
       last4: '1111',
       payroll: 'Unknown',
       prepaid: 'Unknown',
       productId: 'Unknown',
       subscriptions: [],
       token: 'fbm3yx',
       uniqueNumberIdentifier: '1077b77aa2b0c0821e51ad010e31ee93',
       updatedAt: '2018-02-16T10:29:17Z',
       venmoSdk: false,
       verifications: [],

       getGateway: [Function],

       maskedNumber: '411111******1111',
       expirationDate: '02/2019'  ],
  addresses: [],
  getGateway: [Function],
  paymentMethods: 
   [ CreditCard 
       bin: '411111',
       cardType: 'Visa',
       cardholderName: null,
       commercial: 'Unknown',
       countryOfIssuance: 'Unknown',
       createdAt: '2018-02-16T10:29:15Z',
       customerId: '185946869',
       customerLocation: 'US',
       debit: 'Unknown',
       default: true,
       durbinRegulated: 'Unknown',
       expirationMonth: '02',
       expirationYear: '2019',
       expired: false,
       healthcare: 'Unknown',
       imageUrl: 'https://assets.braintreegateway.com/payment_method_logo/visa.png?environment=sandbox',
       issuingBank: 'Unknown',
       last4: '1111',
       payroll: 'Unknown',
       prepaid: 'Unknown',
       productId: 'Unknown',
       subscriptions: [],
       token: 'fbm3yx',
       uniqueNumberIdentifier: '1077b77aa2b0c0821e51ad010e31ee93',
       updatedAt: '2018-02-16T10:29:17Z',
       venmoSdk: false,
       verifications: [],
       getGateway: [Function],
       maskedNumber: '411111******1111',
       expirationDate: '02/2019'  ] 

过去几天我一直遇到 Braintree respose 对象的问题。我的 API 调用有问题吗?或者 API 服务发生了一些变化。

【问题讨论】:

您使用的是哪个版本的 Braintree 的 Node SDK?您最近是否对依赖版本或对 Braintree 的 API 调用进行了任何更改? “braintree”:“^2.3.0”。不,我没有对依赖项进行任何更改,在braintree api调用失败后进行了一些调试并发现这是问题所在。如果响应是简单的对象,那么我正在对数据进行规范化,但这个响应似乎有点复杂。感谢您的回复。 【参考方案1】:

你是对的......我们最近遇到了同样的问题并联系了 Braintree。您的电话没有问题...更改在Braintree node package 中,尽管没有记录。

不幸的是,没有标志可以用来指示 Braintree API 不要将 getGateway 属性作为transaction.sale() 结果对象的一部分发回。

和您一样,我们正在开发的解决方案是遍历结果对象并过滤掉任何属于 typeof function 的属性。

据推测,Braintree 目前正在考虑从响应对象中完全删除 getGateway 方法,尽管他们没有对此更改的坚定承诺或时间表。

【讨论】:

以上是关于使用云功能的braintree节点js的主要内容,如果未能解决你的问题,请参考以下文章

Braintree 中的付款方式令牌无效

使用Braintree进行iOS订阅

如何在 Braintree 中启动新的计费圈

如何区分我的 BrainTree 商户账号?

使用 Github 包作为 npm 节点模块时的 Firebase 云功能部署问题

Magento 2 - 在 Braintree 信用卡表格中添加自动填充