我已将 Stripe 集成添加到我们的应用程序中,当用户首次添加卡片时我遇到了问题。该卡已成功添加,但是当我尝试更新默认源时出现错误No such source: card-xxxxxxxxxxxx
,但如果我返回“添加卡”视图并重新选择已添加的同一张卡,则 defaultSource 更新有效,我可以进行付款。
我的 attachSourceToCustomer 如下:
-(void)attachSourceToCustomer:(id<STPSource>)source completion:(STPErrorBlock)completion {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setRequestSerializer:[AFJSONRequestSerializer serializer]];
[[SBCommon sharedInstance].currentAccount addAuthorization:manager.requestSerializer];
NSString * sourceId = source.stripeID;
NSDictionary * params =@{@"stripeSource": sourceId};
[manager POST:[NSString stringWithFormat:kSBBaseAPIURL,@"StripeCustomerSource"] parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@ success: %@",NSStringFromClass([self class]),operation.responseObject);
completion(nil);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@ failed: %@",NSStringFromClass([self class]),operation.responseObject);
completion(error);
}];
}
和我的 selectDefaultCustomer 如下
-(void)selectDefaultCustomerSource:(id<STPSource>)source completion:(STPErrorBlock)completion {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setRequestSerializer:[AFJSONRequestSerializer serializer]];
[[SBCommon sharedInstance].currentAccount addAuthorization:manager.requestSerializer];
NSString * sourceId = source.stripeID;
NSDictionary * params =@{@"stripeSource": sourceId};
[manager POST:[NSString stringWithFormat:kSBBaseAPIURL,@"StripeCustomerDefaultSource"] parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@ success: %@",NSStringFromClass([self class]),operation.responseObject);
completion(nil);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@ failed: %@",NSStringFromClass([self class]),operation.responseObject);
completion(error);
}];
}
当用户添加卡片时,我必须遗漏一些我需要做的事情,但我无法从文档中看到我遗漏的任何内容
更新 如果您使用 Connect,SDK 似乎不起作用,返回给 selectDefaultCustomer 的 card_id 实际上与 Connect 帐户拥有的在 Customer 上创建的卡不匹配。paymentContext 无法更新,因此当使用不正确的 card_id 发出 paymentRequest 并失败时