如何在iOS应用中使用Stripe Connect

时间:2013-11-08 18:02:55

标签: ios stripe-payments

使用Stripe连接iOS应用程序是否有人成功。我有几个问题:

我遵循这里的指南:https://stripe.com/docs/connect/getting-started

注册应用程序:这里很简单,没问题

然后再往下走一点:

将您的用户发送到Stripe:再次,这里没问题,我只是有一个按钮,可以打开UIWebView中的链接。我假设URL中的client_id很好吗?我的很多不确定性是我应该在应用程序中硬编码的ID /密钥

然后再往下走一点:

用户连接或创建Stripe帐户后,我们会将它们重定向回您在应用程序设置中使用代码参数或错误设置的redirect_uri。

我在这里做的是使用UIWebview的webView:shouldStartLoadWithReqest:navigationType委托方法来检查URL中的字符串“code =”。如果它找到了,那么我就能抓住“代码”参数。所以实际上,redirect_uri对我来说完全没必要。这是处理这个问题的正确方法吗?我应该在我的应用程序内还是在我的服务器上执行此操作?

收到代码后,我们应该进行POST调用以接收access_token。再次,这应该在应用程序内还是在服务器上完成?它需要使用secret_key,所以我猜服务器?如果需要将令牌发送到服务器,如何发送信用卡信息以及此令牌?我知道如何获得卡号,exp日期和CVV。但是将它传递给服务器(有或没有令牌)是我不确定的。

然后,当涉及到在服务器上实际编写PHP,Ruby或Python代码时,我完全失去了。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:27)

您应该设置一个小型Web应用程序来创建条带费用并为您存储客户授权代码。在您的网络应用中为redirect_uriwebhook_uri配置两条路线,并在Stripe Apps settings中添加网址。收费应该从服务器端应用程序创建,因为它需要secret_key / authorization_code,不应该存储在iPad应用程序中。否则他们可能会导致安全漏洞。我试图描述下面这个概念:

  1. 在您的应用中提供stripe connect button并将链接设置为在Safari中打开(不在网络视图中)。您应该在网址中添加一个state参数,其中id对您的用户来说是唯一的。

  2. 点击按钮后,您的用户将被重定向到Stripe,在那里他/她将被要求授权您的应用程序。授权后,条带会使用redirect_uri和您之前提供的authorization_code点击state。根据Stripe文档使用authorization_code进行发布后调用,以获得access_token。将access_token映射的state存储在数据库中。

  3. 在您的应用中定义自定义网址方案。从您的网络应用调用自定义网址。用户应该在移动游猎中打开网址。因此,调用自定义URL将重新打开您的应用程序。您可以传递其他参数以指示失败/成功。在您的应用中,根据此参数更新视图。

  4. 现在,您已准备好代表iPad用户在服务器上创建费用。使用条带iOS sdk从卡信息生成card_token。它需要您的条带publishable_key。然后在您的网络应用中定义一个api,其中包含3个参数:card_tokenuser_idamount。无论何时想要收费,都可以从iPad应用程序中调用此api。如果您担心使用任何标准加密方法的安全性,也可以使用密钥加密此信息。您可以在知道密钥的情况下轻松解密网络应用中的信息。

  5. 当从iPad应用程序调用此API时,您将收到user_id(之前保存为state),card_tokenamount。检索映射到access_token(或州)的user_id。然后,您可以使用access_tokencard_tokenamount代表用户收取费用。

  6. 您可以在服务器中使用ruby / php / python / node,因为Stripe为它们提供了sdk。我假设可以使用其他语言,还有REST接口。

    请注意,这只是一个概念。它应该像它一样工作,但我还没有实现它。我完成后,我会用示例代码更新这个答案。

答案 1 :(得分:1)

您可以使用UIWebView。您仍然需要使用重定向URL并使用委托“webView:shouldStartLoadWithRequest:navigationType:”监视重定向。