菜鸟教程小白 发表于 2022-12-12 14:22:37

ios - Stripe 和 Parse SDK 存储信用卡


                                            <p><p>我正在尝试将用户信用卡存储到 strip 中。我有一个使用支付工具包 <code>PTKView</code> 设置的表单。然后,一旦用户点击保存按钮,我就会创建 <code>Stripe</code> 所需的 <code>STPToken</code>。生成 token 后,我尝试将带有用户 objectId 的 token 保存到 <code>Stripe</code> 作为客户。我确定问题出在服务器代码中。</p>

<p>一些背景知识,我使用 Parse SDK 的云代码作为我的服务器,所以我正在处理 javascript :(.</p>

<p>这里我从表单中获取信息,创建一个<code>STPCard</code>,然后生成一个 token 。 </p>

<pre><code>PTKCard* card = self.cardView.card; // self.cardView is the PTKView
STPCard *stpcard = [ init];
stpcard.number = card.number;
stpcard.expMonth = card.expMonth;
stpcard.expYear = card.expYear;
stpcard.cvc = card.cvc;

[ createTokenWithCard:stpcard
                                    completion:^(STPToken *token, NSError *error) {
                                          if (error) {
                                              NSLog(@&#34;error&#34;);
                                          } else {
                                              ;
                                          }
                                    }];
</code></pre>

<p>生成 token 后,我将其发送到 Parse,在那里我实现了服务器端代码来处理创建客户并将其保存到 Stripe。</p>

<pre><code>- (void)createBackendChargeWithToken:(STPToken *)token
{

    NSDictionary *productInfo = @{@&#34;cardToken&#34;: ,
                                  @&#34;objectId&#34;: [ objectId]};


    [PFCloud callFunctionInBackground:@&#34;saveCardInformation&#34;
                     withParameters:productInfo
                              block:^(id object, NSError *error) {
                                    if (error) {
                                        NSLog(@&#34;error&#34;);
                                        return ;
                                    }

                                    [[ initWithTitle:NSLocalizedString(@&#34;Success&#34;, @&#34;Success&#34;)
                                                                message:nil
                                                               delegate:nil
                                                      cancelButtonTitle:NSLocalizedString(@&#34;OK&#34;, @&#34;OK&#34;)
                                                      otherButtonTitles:nil] show];

                              }];
}
</code></pre>

<p>现在我处理云代码中传递的 token :</p>

<pre><code>var Stripe = require(&#39;stripe&#39;);
Stripe.initialize(my_key);


Parse.Cloud.define(&#34;saveCardInformation&#34;, function(request, response) {

    Stripe.Customers.create({
      source: request.params.cardToken,
    },{
      success: function(httpResponse) {
      response.success(&#34;Customer created!&#34;);
      },
      error: function(httpResponse) {
      response.error(httpResponse.message);
      }
    });

});
</code></pre>

<p>然后我收到回复说:</p>

<pre><code>Error: There is no token with ID tok_15afWSDOYfVZdgZvh6qSvmmm (test mode). (Code: 141, Version: 1.6.0)
</code></pre>

<p>为什么这么说?据我了解,我只是在创建一个用户,所以当然没有具有指定 ID 的 token 。我知道它主要在 javascript 云代码中,但我不确定如何处理这个......有人有什么想法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>好的...我犯了一个小错误...显然我需要访问 STPTokens tokenId 属性...</p>

<pre><code>NSDictionary *productInfo = @{@&#34;cardToken&#34;: token.tokenId,
                              @&#34;objectId&#34;: [ objectId]};
</code></pre>

<p>需要彻底阅读我的代码。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Stripe 和 Parse SDK 存储信用卡,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28757557/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28757557/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Stripe 和 Parse SDK 存储信用卡