Skip to content

Commit

Permalink
Merge pull request #876 from stripe/danj/feature/connect-account-tokens
Browse files Browse the repository at this point in the history
Connect Account tokenization
  • Loading branch information
danj-stripe authored Jan 12, 2018
2 parents 28ac117 + 533ad2a commit 3da97ec
Show file tree
Hide file tree
Showing 20 changed files with 916 additions and 15 deletions.
38 changes: 37 additions & 1 deletion Stripe.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -349,9 +349,20 @@
8BD87B931EFB1C1E00269C2B /* STPSourceVerification+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BD87B911EFB1C1E00269C2B /* STPSourceVerification+Private.h */; };
8BD87B951EFB1CB100269C2B /* STPSourceVerificationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD87B941EFB1CB100269C2B /* STPSourceVerificationTest.m */; };
8BE5AE8B1EF8905B0081A33C /* STPCardParamsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE5AE8A1EF8905B0081A33C /* STPCardParamsTest.m */; };
B3302F462006FBA7005DDBE9 /* STPConnectAccountParamsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B3302F452006FBA7005DDBE9 /* STPConnectAccountParamsTest.m */; };
B3302F4C200700AB005DDBE9 /* STPLegalEntityParamsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B3302F4B200700AB005DDBE9 /* STPLegalEntityParamsTest.m */; };
B347DD481FE35423006B3BAC /* STPValidatedTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B347DD461FE35423006B3BAC /* STPValidatedTextField.h */; };
B347DD491FE35423006B3BAC /* STPValidatedTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = B347DD471FE35423006B3BAC /* STPValidatedTextField.m */; };
B382D6611FE8BEA0009B56AB /* STPValidatedTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = B347DD471FE35423006B3BAC /* STPValidatedTextField.m */; };
B3A241391FFEB57400A2F00D /* STPConnectAccountParams.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A241371FFEB57400A2F00D /* STPConnectAccountParams.h */; settings = {ATTRIBUTES = (Public, ); }; };
B3A2413A1FFEB57400A2F00D /* STPConnectAccountParams.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A241371FFEB57400A2F00D /* STPConnectAccountParams.h */; settings = {ATTRIBUTES = (Public, ); }; };
B3A2413B1FFEB57400A2F00D /* STPConnectAccountParams.m in Sources */ = {isa = PBXBuildFile; fileRef = B3A241381FFEB57400A2F00D /* STPConnectAccountParams.m */; };
B3A2413C1FFEB57400A2F00D /* STPConnectAccountParams.m in Sources */ = {isa = PBXBuildFile; fileRef = B3A241381FFEB57400A2F00D /* STPConnectAccountParams.m */; };
B3A99BC31FEAF2CA003F6ED3 /* STPLegalEntityParams.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A99BC11FEAF2CA003F6ED3 /* STPLegalEntityParams.h */; settings = {ATTRIBUTES = (Public, ); }; };
B3A99BC41FEAF2CA003F6ED3 /* STPLegalEntityParams.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A99BC11FEAF2CA003F6ED3 /* STPLegalEntityParams.h */; settings = {ATTRIBUTES = (Public, ); }; };
B3A99BC51FEAF2CA003F6ED3 /* STPLegalEntityParams.m in Sources */ = {isa = PBXBuildFile; fileRef = B3A99BC21FEAF2CA003F6ED3 /* STPLegalEntityParams.m */; };
B3A99BC61FEAF2CA003F6ED3 /* STPLegalEntityParams.m in Sources */ = {isa = PBXBuildFile; fileRef = B3A99BC21FEAF2CA003F6ED3 /* STPLegalEntityParams.m */; };
B3C9CF2D2004595A005502ED /* STPConnectAccountFunctionalTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B3C9CF2C2004595A005502ED /* STPConnectAccountFunctionalTest.m */; };
C1054F911FE197AE0033C87E /* STPPaymentContextSnapshotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C1054F901FE197AE0033C87E /* STPPaymentContextSnapshotTests.m */; };
C1080F491CBECF7B007B2D89 /* STPAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = C1080F471CBECF7B007B2D89 /* STPAddress.h */; settings = {ATTRIBUTES = (Public, ); }; };
C1080F4A1CBECF7B007B2D89 /* STPAddress.m in Sources */ = {isa = PBXBuildFile; fileRef = C1080F481CBECF7B007B2D89 /* STPAddress.m */; };
Expand Down Expand Up @@ -999,8 +1010,15 @@
8BD87B911EFB1C1E00269C2B /* STPSourceVerification+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "STPSourceVerification+Private.h"; sourceTree = "<group>"; };
8BD87B941EFB1CB100269C2B /* STPSourceVerificationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STPSourceVerificationTest.m; sourceTree = "<group>"; };
8BE5AE8A1EF8905B0081A33C /* STPCardParamsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STPCardParamsTest.m; sourceTree = "<group>"; };
B3302F452006FBA7005DDBE9 /* STPConnectAccountParamsTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = STPConnectAccountParamsTest.m; sourceTree = "<group>"; };
B3302F4B200700AB005DDBE9 /* STPLegalEntityParamsTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = STPLegalEntityParamsTest.m; sourceTree = "<group>"; };
B347DD461FE35423006B3BAC /* STPValidatedTextField.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STPValidatedTextField.h; sourceTree = "<group>"; };
B347DD471FE35423006B3BAC /* STPValidatedTextField.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = STPValidatedTextField.m; sourceTree = "<group>"; };
B3A241371FFEB57400A2F00D /* STPConnectAccountParams.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = STPConnectAccountParams.h; path = PublicHeaders/STPConnectAccountParams.h; sourceTree = "<group>"; };
B3A241381FFEB57400A2F00D /* STPConnectAccountParams.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = STPConnectAccountParams.m; sourceTree = "<group>"; };
B3A99BC11FEAF2CA003F6ED3 /* STPLegalEntityParams.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = STPLegalEntityParams.h; path = PublicHeaders/STPLegalEntityParams.h; sourceTree = "<group>"; };
B3A99BC21FEAF2CA003F6ED3 /* STPLegalEntityParams.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = STPLegalEntityParams.m; sourceTree = "<group>"; };
B3C9CF2C2004595A005502ED /* STPConnectAccountFunctionalTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = STPConnectAccountFunctionalTest.m; sourceTree = "<group>"; };
C1054F901FE197AE0033C87E /* STPPaymentContextSnapshotTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = STPPaymentContextSnapshotTests.m; sourceTree = "<group>"; };
C1080F471CBECF7B007B2D89 /* STPAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = STPAddress.h; path = PublicHeaders/STPAddress.h; sourceTree = "<group>"; };
C1080F481CBECF7B007B2D89 /* STPAddress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STPAddress.m; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1506,6 +1524,7 @@
04CDB5211A5F3A9300B854EE /* STPApplePayFunctionalTest.m */,
04CDB5221A5F3A9300B854EE /* STPBankAccountFunctionalTest.m */,
04CDB5241A5F3A9300B854EE /* STPCardFunctionalTest.m */,
B3C9CF2C2004595A005502ED /* STPConnectAccountFunctionalTest.m */,
C1CFCB6F1ED5E11500BE45DF /* STPFileFunctionalTest.m */,
C1CFCB711ED5E11500BE45DF /* STPPIIFunctionalTest.m */,
C1D7B5241E36C70D002181F5 /* STPSourceFunctionalTest.m */,
Expand Down Expand Up @@ -1537,7 +1556,9 @@
04CDB5251A5F3A9300B854EE /* STPCardTest.m */,
0438EF4A1B741B0100D506CC /* STPCardValidatorTest.m */,
04CDB5261A5F3A9300B854EE /* STPCertTest.m */,
B3302F452006FBA7005DDBE9 /* STPConnectAccountParamsTest.m */,
C1E4F8051EBBEB0F00E611F5 /* STPCustomerContextTest.m */,
F1303E1A1F90000700E670AE /* STPCustomerSourceTupleTest.m */,
C1D23FAC1D37F81F002FD83C /* STPCustomerTest.m */,
C1EEDCC51CA2126000A54582 /* STPDelegateProxyTest.m */,
04A488351CA34DC600506E53 /* STPEmailAddressValidatorTest.m */,
Expand All @@ -1547,6 +1568,7 @@
04CDB51F1A5F3A9300B854EE /* STPFormEncoderTest.m */,
C16F66AA1CA21BAC006A21B5 /* STPFormTextFieldTest.m */,
04827D171D257A6C002DB3E8 /* STPImageLibraryTest.m */,
B3302F4B200700AB005DDBE9 /* STPLegalEntityParamsTest.m */,
045A62AA1B8E7259000165CE /* STPPaymentCardTextFieldTest.m */,
0438EF4B1B741B0100D506CC /* STPPaymentCardTextFieldViewModelTest.m */,
8B013C881F1E784A00DD831B /* STPPaymentConfigurationTest.m */,
Expand All @@ -1570,7 +1592,6 @@
C15B02721EA176090026E606 /* StripeErrorTest.m */,
F1D3A25E1EB015B30095BFA9 /* UIImage+StripeTests.m */,
F1122A7D1DFB84E000A8B1AF /* UINavigationBar+StripeTest.m */,
F1303E1A1F90000700E670AE /* STPCustomerSourceTupleTest.m */,
);
name = Unit;
sourceTree = "<group>";
Expand Down Expand Up @@ -1876,11 +1897,15 @@
04CDE5BB1BC1F21500548833 /* STPCardParams.h */,
04CDE5B41BC1F1F100548833 /* STPCardParams.m */,
04EBC7511B7533C300A0E6AE /* STPCardValidationState.h */,
B3A241371FFEB57400A2F00D /* STPConnectAccountParams.h */,
B3A241381FFEB57400A2F00D /* STPConnectAccountParams.m */,
04B31DD21D08E6E200EF1631 /* STPCustomer.h */,
04B31DD31D08E6E200EF1631 /* STPCustomer.m */,
F1D3A2501EB0120F0095BFA9 /* STPFile.h */,
F1D3A2461EB012010095BFA9 /* STPFile.m */,
04F213301BCEAB61001D6F22 /* STPFormEncodable.h */,
B3A99BC11FEAF2CA003F6ED3 /* STPLegalEntityParams.h */,
B3A99BC21FEAF2CA003F6ED3 /* STPLegalEntityParams.m */,
C1D7B51E1E36C32F002181F5 /* STPSource.h */,
C1D7B51F1E36C32F002181F5 /* STPSource.m */,
F19491DD1E5F6B8C001E1FC2 /* STPSourceCardDetails.h */,
Expand Down Expand Up @@ -2016,6 +2041,7 @@
04EBC75A1B7533C300A0E6AE /* STPCardValidator.h in Headers */,
C159933D1D8808970047950D /* STPShippingMethodsViewController.h in Headers */,
F15232251EA9303800D65C67 /* STPURLCallbackHandler.h in Headers */,
B3A2413A1FFEB57400A2F00D /* STPConnectAccountParams.h in Headers */,
F1D3A2561EB012350095BFA9 /* STPMultipartFormDataPart.h in Headers */,
04F94DCD1D22A22F004FC826 /* UIViewController+Stripe_KeyboardAvoiding.h in Headers */,
C1BD9B3A1E39416700CEE925 /* STPSourceOwner.h in Headers */,
Expand Down Expand Up @@ -2098,6 +2124,7 @@
C15608DE1FE08F2E0032AE66 /* UIView+Stripe_SafeAreaBounds.h in Headers */,
049E84EC1A605EF0000B66CD /* StripeError.h in Headers */,
046FE9A31CE5608000DA6A7B /* STPPaymentActivityIndicatorView.h in Headers */,
B3A99BC41FEAF2CA003F6ED3 /* STPLegalEntityParams.h in Headers */,
F1DEB88B1E2047CA0066B8E8 /* STPCoreTableViewController.h in Headers */,
F1FA6F931E258F6800EB444D /* STPCoreViewController+Private.h in Headers */,
04793F571D1D9C0200B3C551 /* STPSourceProtocol.h in Headers */,
Expand Down Expand Up @@ -2153,6 +2180,7 @@
F1D3A24E1EB012010095BFA9 /* STPMultipartFormDataPart.h in Headers */,
C11810A71CC6EE840022FB55 /* STPBackendAPIAdapter.h in Headers */,
F12C8DC01D63DE9F00ADA0D7 /* STPPaymentContextAmountModel.h in Headers */,
B3A241391FFEB57400A2F00D /* STPConnectAccountParams.h in Headers */,
F19491DE1E5F6B8C001E1FC2 /* STPSourceCardDetails.h in Headers */,
0439B9871C454F97005A1ED5 /* STPPaymentMethodsViewController.h in Headers */,
04B31DF91D11AC6400EF1631 /* STPUserInformation.h in Headers */,
Expand Down Expand Up @@ -2235,6 +2263,7 @@
C15608DD1FE08F2E0032AE66 /* UIView+Stripe_SafeAreaBounds.h in Headers */,
F1852F931D80B6EC00367C86 /* STPStringUtils.h in Headers */,
049A3FAE1CC9AA9900F57DE7 /* STPAddressViewModel.h in Headers */,
B3A99BC31FEAF2CA003F6ED3 /* STPLegalEntityParams.h in Headers */,
C175B7941FE834A3009F5A0E /* STPCustomer+Private.h in Headers */,
F1D3A2651EBA5BAE0095BFA9 /* STPPaymentCardTextField+Private.h in Headers */,
0426B96E1CEADC98006AC8DD /* STPColorUtils.h in Headers */,
Expand Down Expand Up @@ -2667,6 +2696,7 @@
C127110A1DBA7E490087840D /* STPAddressViewModelTest.m in Sources */,
C17D24EE1E37DBAC005CB188 /* STPSourceTest.m in Sources */,
C1E4F8061EBBEB0F00E611F5 /* STPCustomerContextTest.m in Sources */,
B3302F4C200700AB005DDBE9 /* STPLegalEntityParamsTest.m in Sources */,
F14C872F1D4FCDBA00C7CC6A /* STPPaymentContextApplePayTest.m in Sources */,
C1BD9B1F1E390A2700CEE925 /* STPSourceParamsTest.m in Sources */,
C1D7B5251E36C70D002181F5 /* STPSourceFunctionalTest.m in Sources */,
Expand All @@ -2678,6 +2708,7 @@
C1FEE5991CBFF24000A7632B /* STPPostalCodeValidatorTest.m in Sources */,
8BD87B8B1EFB136F00269C2B /* STPSourceCardDetailsTest.m in Sources */,
C13538081D2C2186003F6157 /* STPAddCardViewControllerTest.m in Sources */,
B3302F462006FBA7005DDBE9 /* STPConnectAccountParamsTest.m in Sources */,
04415C671A6605B5001225ED /* STPAPIClientTest.m in Sources */,
045D71311CF514BB00F6CD65 /* STPBinRangeTest.m in Sources */,
C15B02731EA176090026E606 /* StripeErrorTest.m in Sources */,
Expand Down Expand Up @@ -2714,6 +2745,7 @@
04415C6F1A6605B5001225ED /* STPCertTest.m in Sources */,
04415C701A6605B5001225ED /* STPTokenTest.m in Sources */,
8B8DDBB31EF887A4004B141F /* STPBankAccountParamsTest.m in Sources */,
B3C9CF2D2004595A005502ED /* STPConnectAccountFunctionalTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -2773,8 +2805,10 @@
C159933A1D8808880047950D /* STPShippingAddressViewController.m in Sources */,
04F94DA41D229F1C004FC826 /* STPAddressViewModel.m in Sources */,
049880FF1CED5A2300EA4FFD /* STPPaymentConfiguration.m in Sources */,
B3A99BC61FEAF2CA003F6ED3 /* STPLegalEntityParams.m in Sources */,
C180211D1E3A58710089D712 /* STPSourcePoller.m in Sources */,
04F94DB91D229F86004FC826 /* STPApplePayPaymentMethod.m in Sources */,
B3A2413C1FFEB57400A2F00D /* STPConnectAccountParams.m in Sources */,
C1BD9B2B1E39406C00CEE925 /* STPSourceOwner.m in Sources */,
C1BD9B311E3940A200CEE925 /* STPSourceRedirect.m in Sources */,
04B31DE91D09D25F00EF1631 /* STPPaymentMethodsInternalViewController.m in Sources */,
Expand Down Expand Up @@ -2877,12 +2911,14 @@
C1BD9B241E393FFE00CEE925 /* STPSourceReceiver.m in Sources */,
04B31DD61D08E6E200EF1631 /* STPCustomer.m in Sources */,
0438EF351B7416BB00D506CC /* STPPaymentCardTextField.m in Sources */,
B3A2413B1FFEB57400A2F00D /* STPConnectAccountParams.m in Sources */,
F1D3A24F1EB012010095BFA9 /* STPMultipartFormDataPart.m in Sources */,
04827D121D2575C6002DB3E8 /* STPImageLibrary.m in Sources */,
04CDB5041A5F30A700B854EE /* STPFormEncoder.m in Sources */,
0426B96F1CEADC98006AC8DD /* STPColorUtils.m in Sources */,
C1D7B51C1E36B8B9002181F5 /* STPSourceParams.m in Sources */,
049880FE1CED5A2300EA4FFD /* STPPaymentConfiguration.m in Sources */,
B3A99BC51FEAF2CA003F6ED3 /* STPLegalEntityParams.m in Sources */,
046FE9A21CE55D1D00DA6A7B /* STPPaymentActivityIndicatorView.m in Sources */,
045D71221CEFA57000F6CD65 /* UIViewController+Stripe_Promises.m in Sources */,
C124A1721CCA968B007D42EE /* STPAnalyticsClient.m in Sources */,
Expand Down
24 changes: 23 additions & 1 deletion Stripe/PublicHeaders/STPAPIClient.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ NS_ASSUME_NONNULL_BEGIN
*/
static NSString *const STPSDKVersion = @"11.5.0";

@class STPBankAccount, STPBankAccountParams, STPCard, STPCardParams, STPSourceParams, STPToken, STPPaymentConfiguration;
@class STPBankAccount, STPBankAccountParams, STPCard, STPCardParams, STPConnectAccountParams, STPSourceParams, STPToken, STPPaymentConfiguration;

/**
A top-level class that imports the rest of the Stripe SDK.
Expand Down Expand Up @@ -127,6 +127,28 @@ static NSString *const STPSDKVersion = @"11.5.0";

@end

#pragma mark Connect Accounts

/**
Stripe extensions for working with Connect Accounts
*/
@interface STPAPIClient (ConnectAccounts)


/**
Converts an `STPConnectAccountParams` object into a Stripe token using the Stripe API.
This allows the connected account to accept the Terms of Service, and/or send Legal Entity information.
@param account The Connect Account parameters. Cannot be nil.
@param completion The callback to run with the returned Stripe token (and any errors that may have occurred).
*/
- (void)createTokenWithConnectAccount:(STPConnectAccountParams *)account completion:(__nullable STPTokenCompletionBlock)completion;

@end

#pragma mark Upload

/**
STPAPIClient extensions to upload files.
*/
Expand Down
4 changes: 3 additions & 1 deletion Stripe/PublicHeaders/STPAddress.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@

#import <Foundation/Foundation.h>
#import <PassKit/PassKit.h>

#import "STPAPIResponseDecodable.h"
#import "STPFormEncodable.h"

@class CNContact;

Expand Down Expand Up @@ -64,7 +66,7 @@ extern STPContactField const STPContactFieldName;
/**
STPAddress Contains an address as represented by the Stripe API.
*/
@interface STPAddress : NSObject<STPAPIResponseDecodable>
@interface STPAddress : NSObject<STPAPIResponseDecodable, STPFormEncodable>

/**
The user's full name (e.g. "Jane Doe")
Expand Down
72 changes: 72 additions & 0 deletions Stripe/PublicHeaders/STPConnectAccountParams.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
//
// STPConnectAccountParams.h
// Stripe
//
// Created by Daniel Jackson on 1/4/18.
// Copyright © 2018 Stripe, Inc. All rights reserved.
//

#import <Foundation/Foundation.h>

#import "STPFormEncodable.h"

@class STPLegalEntityParams;

NS_ASSUME_NONNULL_BEGIN

/**
Parameters for creating a Connect Account token.
*/
@interface STPConnectAccountParams : NSObject<STPFormEncodable>

/**
Optional boolean indicating that the Terms Of Service were shown to the user &
the user accepted them.
*/
@property (nonatomic, nullable, readonly) NSNumber *tosShownAndAccepted;

/**
Required property with information about the legal entity for this account.
At least one field in the legalEntity must have a value, otherwise the create token
call will fail.
*/
@property (nonatomic, readonly) STPLegalEntityParams *legalEntity;

/**
`STPConnectAccountParams` cannot be directly instantiated, use `initWithTosShownAndAccepted:legalEntity:`
or `initWithLegalEntity:`
*/
- (instancetype)init __attribute__((unavailable("Cannot be directly instantiated")));

/**
Initialize `STPConnectAccountParams` with tosShownAndAccepted = YES
This method cannot be called with `wasAccepted == NO`, guarded by a `NSParameterAssert()`.
Use this init method if you want to set the `tosShownAndAccepted` parameter. If you
don't, use the `initWithLegalEntity:` version instead.
@param wasAccepted Must be YES, but only if the user was shown & accepted the ToS
@param legalEntity data about the legal entity
*/
- (instancetype)initWithTosShownAndAccepted:(BOOL)wasAccepted
legalEntity:(STPLegalEntityParams *)legalEntity;

/**
Initialize `STPConnectAccountParams` with the `STPLegalEntityParams` provided.
This init method cannot change the `tosShownAndAccepted` parameter. Use
`initWithTosShownAndAccepted:legalEntity:` instead if you need to do that.
These two init methods exist to avoid the (slightly awkward) NSNumber box that would
be needed around `tosShownAndAccepted` if it was optional/nullable, and to enforce
that it is either nil or YES.
@param legalEntity data to send to Stripe about the legal entity
*/
- (instancetype)initWithLegalEntity:(STPLegalEntityParams *)legalEntity;

@end

NS_ASSUME_NONNULL_END
Loading

0 comments on commit 3da97ec

Please sign in to comment.