【问题标题】:Balanced duplicate bank account detection平衡的重复银行账户检测
【发布时间】:2024-01-08 22:24:01
【问题描述】:

我已经通过 API 在 Balanced 上创建了一个新的商家帐户。我向该帐户添加了一个银行帐户,然后标记了完全相同的银行帐户,然后再次添加。我期待第二个关联会抛出 409,告诉我无法添加该帐户。

我有两个问题:

  1. 为什么 API 允许我将完全相同的银行账户/卡添加到一个账户两次?
  2. 我怎样才能检测到这一点而不将银行帐户/卡添加到帐户中?

这是我通过 Ruby gem 在一个帐户上创建的两个银行帐户的示例:

irb(main):029:0> @bank_accounts.items.each { |a| 
  puts "#{a["bank_name"]} #{a["bank_code"]} created-#{a["created_at"]} #{a["last_four"]} uri=#{a["uri"]} id=#{a["id"]}"
}; nil
123456789 created-2012-07-11T23:36:57.290555Z 2333 uri=/v1/marketplaces/TEST-MP4Z4RaRDF6TWqeupiVUSu8m/accounts/AC2tip2eDhi92THXXEkIdys1/bank_accounts/BA2mP9GtEPVB3v9DzWJ7ZH8B id=BA2mP9GtEPVB3v9DzWJ7ZH8B
123456789 created-2012-07-11T23:37:22.655007Z 2333 uri=/v1/marketplaces/TEST-MP4Z4RaRDF6TWqeupiVUSu8m/accounts/AC2tip2eDhi92THXXEkIdys1/bank_accounts/BA2PlMIVFyMSSzo2zzUZb2XA id=BA2PlMIVFyMSSzo2zzUZb2XA
=> nil

【问题讨论】:

    标签: balanced-payments


    【解决方案1】:
    1. 添加重复的银行账户和银行卡没有任何限制。这是一个允许开发人员减轻编写代码以捕获重复银行账户的负担的决定。我们会注意到并感谢您的反馈。
    2. 您可以索引与用户关联的卡或银行帐户,Balanced 不会返回完整的卡号,但通过比较 last_four、到期时间和名称,您可以判断卡是否匹配,类似的字段可用于银行帐户,但与 bank_code(路由号码)交换到期。

      在 Ruby 中执行此类操作的代码如下:

      require 'balanced'
      
      Balanced.configure 'e1c5ad38d1c711e1b36c026ba7e239a9'
      
      # duplicate cards
      card1 =  Balanced::Card.new(:card_number=>"4111111111111111", :expiration_month=>"12", :expiration_year=>"2020").save()  # original card
      card2 =  Balanced::Card.new(:card_number=>"4111111111111111", :expiration_month=>"12", :expiration_year=>"2020").save()  # our duplicate card
      card3 =  Balanced::Card.new(:card_number=>"4111111111111111", :expiration_month=>"12", :expiration_year=>"2021").save()  # a different card
      
      # create a new account
      buyer = Balanced::Account.new(:email_address => '%d@example.org' % Time.now).save()
      buyer.add_card(card1.uri)
      
      # helper function
      def has_card(cards, card)
         cards.map { |c| c.last_four == card.last_four && c.expiration_month == card.expiration_month && c.expiration_year == card.expiration_year }.include? true
      end
      
      puts 'buyer already has this card' if has_card(buyer.cards, card2)
      puts 'buyer does not have this card' if not has_card(buyer.cards, card3)
      

    【讨论】:

    • Balanced 刚刚为卡片推出了 hash parameter。这将在不久的将来追溯推出银行账户。您可以通过查询卡片端点/v1/marketplaces/M123/cards?hash=XXX 来使用它来搜索重复项
    最近更新 更多