3

我已将 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 并失败时

4

0 回答 0