Stripe API通过iOS代码创建收费?

时间:2018-03-07 06:18:28

标签: ios objective-c stripe-payments

我一直在使用带有条纹的ApplePay,一切正常,直到用 PKPayment 获取条带标记这里所有人都提到将条带标记发送到服务器并收取金额。我不知道如何创建Web服务并将令牌发送到服务器。所以我计划通过iOS代码为卡充电。

创建费用文档:Link

curl https://api.stripe.com/v1/charges \
   -u sk_test_BQokikJOvBiI2HlWgH4olfQ2: \
   -d amount=999 \
   -d currency=usd \
   -d description="Example charge" \
   -d source=tok_IPLStrXFSITtr78XW5SyDWL8

这里我们不知道如何用密钥制作帖子数据。

NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:config];

    NSString *urlString = @"https://api.stripe.com/v1/charges";
    NSURL *url = [NSURL URLWithString:urlString];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
    request.HTTPMethod = @"POST";
    NSString *postBody = [NSString stringWithFormat:@"source=%@&amount=%@", sourceID, @1099];
    NSData *data = [postBody dataUsingEncoding:NSUTF8StringEncoding];

    NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request
                                                               fromData:data
                                                      completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                          NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
                                                          if (!error && httpResponse.statusCode != 200) {
                                                              error = [NSError errorWithDomain:StripeDomain
                                                                                          code:STPInvalidRequestError
                                                                                      userInfo:@{NSLocalizedDescriptionKey: @"There was an error connecting to your payment backend."}];
                                                          }
                                                          if (error) {
                                                              completion(STPBackendChargeResultFailure, error);
                                                          } else {
                                                              completion(STPBackendChargeResultSuccess, nil);
                                                          }
                                                      }];

    [uploadTask resume];

错误

You did not provide an API key. You need to provide your API key in the Authorization header, using Bearer auth (e.g. 'Authorization: Bearer YOUR_SECRET_KEY'). See https://stripe.com/docs/api#authentication for details, or we can help at https://support.stripe.com/.

我们看过类似的问题Apple Pay using Stripe send token to server and charge for purchase

提前致谢..

1 个答案:

答案 0 :(得分:1)

您永远不应该 *从不* 在您的iOS应用中创建费用。您需要使用密钥才能产生费用,从应用程序中存储秘密API密钥或在应用程序中检索密钥是不安全的。

您的公钥可以安全地存储在您的应用中以创建令牌,然后您可以将该令牌发送到后端以产生费用。这允许您的密钥安全地存储在您的服务器上。

这是Stripe在ruby中的示例后端,向您展示如何使用您创建的令牌创建费用: https://github.com/stripe/example-ios-backend