|
|
@@ -198,18 +198,130 @@
|
|
|
|
|
|
}
|
|
|
|
|
|
+#pragma mark - Validation
|
|
|
+
|
|
|
+- (BOOL)validateForm {
|
|
|
+ // 验证账户名称
|
|
|
+ if (self.accountNameTextField.text.length == 0) {
|
|
|
+ [self makeToast:self.accountNameTextField.placeholder];
|
|
|
+ return NO;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 验证账户号码
|
|
|
+ if (self.accountNumberTextField.text.length == 0) {
|
|
|
+ [self makeToast:self.accountNumberTextField.placeholder];
|
|
|
+ return NO;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 验证开户行
|
|
|
+ if (self.bankNameTextField.text.length == 0) {
|
|
|
+ [self makeToast:self.bankNameTextField.placeholder];
|
|
|
+ return NO;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 验证银行卡正面照片
|
|
|
+ if (self.frontURL.length == 0) {
|
|
|
+ [self makeToast:self.frontCardSubtitleLabel.text];
|
|
|
+ return NO;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 验证银行卡反面照片
|
|
|
+ if (self.backURL.length == 0) {
|
|
|
+ [self makeToast:self.backCardSubtitleLabel.text];
|
|
|
+ return NO;
|
|
|
+ }
|
|
|
+
|
|
|
+ return YES;
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark - Public Methods
|
|
|
+
|
|
|
+- (BOOL)canGoNext {
|
|
|
+ return [self validateForm];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)goNext {
|
|
|
+ if ([self validateForm]) {
|
|
|
+ [super goNext];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
#pragma mark - Actions
|
|
|
|
|
|
- (void)frontCardTapped:(UITapGestureRecognizer *)gesture {
|
|
|
- // TODO: 实现银行卡正面图片选择功能
|
|
|
- NSLog(@"Bank card front upload tapped");
|
|
|
+ WeakSelf
|
|
|
+ [self pickImageWithCompletion:^(UIImage *image) {
|
|
|
+ weakSelf.frontCardImageView.image = image;
|
|
|
+
|
|
|
+ // 上传图片到服务器
|
|
|
+ [weakSelf uploadImage:image completion:^(NSString *url) {
|
|
|
+ weakSelf.frontURL = url;
|
|
|
+ }];
|
|
|
+ }];
|
|
|
}
|
|
|
|
|
|
- (void)backCardTapped:(UITapGestureRecognizer *)gesture {
|
|
|
- // TODO: 实现银行卡反面图片选择功能
|
|
|
- NSLog(@"Bank card back upload tapped");
|
|
|
+ WeakSelf
|
|
|
+ [self pickImageWithCompletion:^(UIImage *image) {
|
|
|
+ weakSelf.backCardImageView.image = image;
|
|
|
+
|
|
|
+ // 上传图片到服务器
|
|
|
+ [weakSelf uploadImage:image completion:^(NSString *url) {
|
|
|
+ weakSelf.backURL = url;
|
|
|
+ }];
|
|
|
+ }];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark - MerchantEnrollParametersDataSource
|
|
|
+- (NSDictionary *)getMerchantEnrollParameters {
|
|
|
+ return @{
|
|
|
+ @"bank_card_number": self.accountNumberTextField.text ?: @"",
|
|
|
+ @"bank_card_name": self.accountNameTextField.text ?: @"",
|
|
|
+ @"bank_opening_account": self.bankNameTextField.text ?: @"",
|
|
|
+ @"bank_front_photo": self.frontURL ?: @"",
|
|
|
+ @"bank_back_photo": self.backURL ?: @"",
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark - MerchantEnrollDataFillDelegate
|
|
|
+- (void)fillWithData:(NSDictionary *)data {
|
|
|
+ if (!data) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 填充文本字段
|
|
|
+ self.accountNameTextField.text = data[@"bank_card_name"] ?: @"";
|
|
|
+ self.accountNumberTextField.text = data[@"bank_card_number"] ?: @"";
|
|
|
+ self.bankNameTextField.text = data[@"bank_opening_account"] ?: @"";
|
|
|
+
|
|
|
+ // 填充图片URL
|
|
|
+ self.frontURL = data[@"bank_front_photo"] ?: @"";
|
|
|
+ self.backURL = data[@"bank_back_photo"] ?: @"";
|
|
|
+
|
|
|
+ // 如果有图片URL,可以考虑异步加载图片
|
|
|
+ if (self.frontURL.length > 0) {
|
|
|
+ [self loadImageFromURL:self.frontURL forImageView:self.frontCardImageView];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (self.backURL.length > 0) {
|
|
|
+ [self loadImageFromURL:self.backURL forImageView:self.backCardImageView];
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+- (void)loadImageFromURL:(NSString *)urlString forImageView:(UIImageView *)imageView {
|
|
|
+ if (urlString.length == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ NSURL *url = [NSURL URLWithString:urlString];
|
|
|
+ if (!url) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ [imageView setImageURL:url];
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
#pragma mark - Lazy Loading
|
|
|
|
|
|
- (UIView *)warningView {
|
|
|
@@ -284,6 +396,10 @@
|
|
|
UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kRealValue(16), kRealValue(48))];
|
|
|
_accountNameTextField.rightView = rightView;
|
|
|
_accountNameTextField.rightViewMode = UITextFieldViewModeAlways;
|
|
|
+
|
|
|
+ // 设置键盘返回键类型
|
|
|
+ _accountNameTextField.returnKeyType = UIReturnKeyNext;
|
|
|
+ _accountNameTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
|
|
|
}
|
|
|
return _accountNameTextField;
|
|
|
}
|
|
|
@@ -317,7 +433,7 @@
|
|
|
_accountNumberTextField.layer.cornerRadius = kRealValue(8);
|
|
|
_accountNumberTextField.layer.borderWidth = 1;
|
|
|
_accountNumberTextField.layer.borderColor = [UIColor colorWithHexString:@"#E5E5E5"].CGColor;
|
|
|
- _accountNumberTextField.keyboardType = UIKeyboardTypeNumberPad;
|
|
|
+ _accountNumberTextField.keyboardType = UIKeyboardTypeDecimalPad;
|
|
|
|
|
|
// 设置内边距
|
|
|
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kRealValue(16), kRealValue(48))];
|
|
|
@@ -327,6 +443,7 @@
|
|
|
UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kRealValue(16), kRealValue(48))];
|
|
|
_accountNumberTextField.rightView = rightView;
|
|
|
_accountNumberTextField.rightViewMode = UITextFieldViewModeAlways;
|
|
|
+ _accountNumberTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
|
|
|
}
|
|
|
return _accountNumberTextField;
|
|
|
}
|
|
|
@@ -369,6 +486,10 @@
|
|
|
UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kRealValue(16), kRealValue(48))];
|
|
|
_bankNameTextField.rightView = rightView;
|
|
|
_bankNameTextField.rightViewMode = UITextFieldViewModeAlways;
|
|
|
+
|
|
|
+ // 设置键盘返回键类型
|
|
|
+ _bankNameTextField.returnKeyType = UIReturnKeyDone;
|
|
|
+ _bankNameTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
|
|
|
}
|
|
|
return _bankNameTextField;
|
|
|
}
|