BTVenmoAccountNonce.m 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #if __has_include(<Braintree/BraintreeVenmo.h>)
  2. #import <Braintree/BTVenmoAccountNonce.h>
  3. #import <Braintree/BraintreeCore.h>
  4. #else
  5. #import <BraintreeVenmo/BTVenmoAccountNonce.h>
  6. #import <BraintreeCore/BraintreeCore.h>
  7. #endif
  8. @interface BTVenmoAccountNonce ()
  9. @property (nonatomic, readwrite, copy) NSString *email;
  10. @property (nonatomic, readwrite, copy) NSString *externalId;
  11. @property (nonatomic, readwrite, copy) NSString *firstName;
  12. @property (nonatomic, readwrite, copy) NSString *lastName;
  13. @property (nonatomic, readwrite, copy) NSString *phoneNumber;
  14. @property (nonatomic, readwrite, copy) NSString *username;
  15. @end
  16. @implementation BTVenmoAccountNonce
  17. - (instancetype)initWithPaymentMethodNonce:(NSString *)nonce
  18. username:(NSString *)username
  19. isDefault:(BOOL)isDefault
  20. {
  21. if (self = [super initWithNonce:nonce type:@"Venmo" isDefault:isDefault]) {
  22. _username = username;
  23. }
  24. return self;
  25. }
  26. - (instancetype)initWithPaymentContextJSON:(BTJSON *)paymentContextJSON {
  27. BTVenmoAccountNonce *accountNonce = [[self.class alloc] initWithPaymentMethodNonce:[paymentContextJSON[@"data"][@"node"][@"paymentMethodId"] asString]
  28. username:[paymentContextJSON[@"data"][@"node"][@"userName"] asString] isDefault:NO];
  29. if (paymentContextJSON[@"data"][@"node"][@"payerInfo"]) {
  30. accountNonce.email = [paymentContextJSON[@"data"][@"node"][@"payerInfo"][@"email"] asString];
  31. accountNonce.externalId = [paymentContextJSON[@"data"][@"node"][@"payerInfo"][@"externalId"] asString];
  32. accountNonce.firstName = [paymentContextJSON[@"data"][@"node"][@"payerInfo"][@"firstName"] asString];
  33. accountNonce.lastName = [paymentContextJSON[@"data"][@"node"][@"payerInfo"][@"lastName"] asString];
  34. accountNonce.phoneNumber = [paymentContextJSON[@"data"][@"node"][@"payerInfo"][@"phoneNumber"] asString];
  35. }
  36. return accountNonce;
  37. }
  38. + (instancetype)venmoAccountWithJSON:(BTJSON *)venmoAccountJSON {
  39. return [[[self class] alloc] initWithPaymentMethodNonce:[venmoAccountJSON[@"nonce"] asString]
  40. username:[venmoAccountJSON[@"details"][@"username"] asString]
  41. isDefault:[venmoAccountJSON[@"default"] isTrue]];
  42. }
  43. @end