0

APIを介してBalancedに新しいマーチャントアカウントを作成しました。この口座に銀行口座を追加し、まったく同じ銀行口座をトークン化してから、もう一度追加しました。2番目のアソシエーションが409をスローして、アカウントを追加できなかったことを通知することを期待していました。

2つの質問があります:

  1. APIでまったく同じ銀行口座/カードをアカウントに2回追加できるのはなぜですか?
  2. どうすればこれを検出し、銀行口座/カードを口座に追加しないことができますか?

これは、Rubygemを介してアカウントに作成した2つの銀行口座の例です。

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
4

1 に答える 1

3
  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)
    
于 2012-07-20T15:50:51.050 に答える