You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Braintree GraphQL:如何从Transaction中获取支付方式枚举值?

从Braintree Transaction对象提取支付方式枚举值的方法

Hey there! 既然你在用Braintree的GraphQL API和JS版Drop-In UI,刚好我对这块熟得很,直接给你捋清楚怎么从Transaction对象里拿到对应支付方式的枚举值——

首先先明确你提到的四种支付方式对应的Braintree官方枚举值:

  • Credit Cardcredit_card
  • PayPalpaypal_account
  • Apple Payapple_pay_card
  • Google Paygoogle_pay_card

1. 通过GraphQL查询获取枚举值

当你通过Braintree GraphQL API查询交易记录时,只需要在查询字段中包含paymentMethodType,它会直接返回上述枚举值。举个查询示例:

query FetchTransaction($transactionId: ID!) {
  transaction(id: $transactionId) {
    id
    amount
    paymentMethodType  # 这个字段就是你要的支付方式枚举
    status
  }
}

调用这个查询后,返回的transaction.paymentMethodType就是对应支付方式的枚举字符串,直接用它判断即可。

如果你需要同时获取支付方式的具体细节(比如信用卡后四位、PayPal邮箱),还可以结合接口内联片段和__typename来判断类型,不过paymentMethodType是最直接的方式:

query FetchTransactionWithDetails($transactionId: ID!) {
  transaction(id: $transactionId) {
    id
    paymentMethodType
    paymentMethod {
      __typename
      ... on CreditCard {
        last4
        brand
      }
      ... on PayPalAccount {
        email
      }
      ... on ApplePayCard {
        last4
      }
      ... on GooglePayCard {
        last4
      }
    }
  }
}

这里的__typename返回的是首字母大写的类型名(比如CreditCard),和paymentMethodType是一一对应的。

2. 在Drop-In UI的回调中提取

当你用JS版Drop-In完成支付请求后,requestPaymentMethod的回调里会返回包含交易信息的payload,其中就有paymentMethodType字段,直接提取即可:

braintree.dropin.create({
  authorization: 'YOUR_CLIENT_AUTHORIZATION',
  container: '#dropin-container'
}, (createErr, instance) => {
  document.getElementById('submit-payment').addEventListener('click', () => {
    instance.requestPaymentMethod((requestErr, payload) => {
      if (requestErr) {
        console.error('支付请求失败:', requestErr);
        return;
      }

      // 提取支付方式枚举值
      const paymentType = payload.paymentMethodType;
      
      // 根据枚举值做后续逻辑
      switch(paymentType) {
        case 'credit_card':
          console.log('用户用信用卡支付');
          break;
        case 'paypal_account':
          console.log('用户用PayPal支付');
          break;
        case 'apple_pay_card':
          console.log('用户用Apple Pay支付');
          break;
        case 'google_pay_card':
          console.log('用户用Google Pay支付');
          break;
        default:
          console.log('未知支付方式');
      }

      // 这里可以把payload.nonce传给你的后端完成交易
    });
  });
});

小提示

不管是GraphQL查询结果还是Drop-In回调的payload,paymentMethodType的枚举值都是统一的,不用额外转换,直接判断字符串就行,非常省心。

内容的提问来源于stack exchange,提问作者hendra

火山引擎 最新活动