用于存储信用卡的 Stripe 和 Parse SDK
Stripe and Parse SDK to store credit card
我正在尝试将用户信用卡存储到条带中。我有一个表格,所有设置都使用付款工具包 PTKView
。然后,一旦用户点击保存按钮,我就创建了 Stripe
所需的 STPToken
。生成令牌后,我尝试将带有用户 objectId 的令牌作为客户保存到 Stripe
。我确定问题出在服务器代码中。
一些背景知识,我正在使用 Parse SDK 的云代码作为我的服务器,所以我正在处理 javascript :(.
这里我从表单中获取信息,创建一个STPCard
,然后生成一个令牌。
PTKCard* card = self.cardView.card; // self.cardView is the PTKView
STPCard *stpcard = [[STPCard alloc] init];
stpcard.number = card.number;
stpcard.expMonth = card.expMonth;
stpcard.expYear = card.expYear;
stpcard.cvc = card.cvc;
[[STPAPIClient sharedClient] createTokenWithCard:stpcard
completion:^(STPToken *token, NSError *error) {
if (error) {
NSLog(@"error");
} else {
[self createBackendChargeWithToken:token];
}
}];
生成令牌后,我将其发送到 Parse,在那里我实现了服务器端代码来处理创建客户并将其保存到 Stripe。
- (void)createBackendChargeWithToken:(STPToken *)token
{
NSDictionary *productInfo = @{@"cardToken": [NSString stringWithFormat:@"%@",token],
@"objectId": [[PFUser currentUser] objectId]};
[PFCloud callFunctionInBackground:@"saveCardInformation"
withParameters:productInfo
block:^(id object, NSError *error) {
if (error) {
NSLog(@"error");
return ;
}
[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Success", @"Success")
message:nil
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK", @"OK")
otherButtonTitles:nil] show];
}];
}
现在我处理云代码中传递的令牌:
var Stripe = require('stripe');
Stripe.initialize(my_key);
Parse.Cloud.define("saveCardInformation", function(request, response) {
Stripe.Customers.create({
source: request.params.cardToken,
},{
success: function(httpResponse) {
response.success("Customer created!");
},
error: function(httpResponse) {
response.error(httpResponse.message);
}
});
});
然后我收到这样的回复:
Error: There is no token with ID tok_15afWSDOYfVZdgZvh6qSvmmm (test mode). (Code: 141, Version: 1.6.0)
为什么这么说?据我了解,我只是在创建一个用户,所以当然没有具有指定 ID 的令牌。我知道它主要在 javascript 云代码中,但我不确定如何处理这个...有人有任何想法吗?
好吧...我犯了一个小错误...显然我需要访问 STPTokens tokenId 属性...
NSDictionary *productInfo = @{@"cardToken": token.tokenId,
@"objectId": [[PFUser currentUser] objectId]};
需要真正彻底地阅读我的代码。
我正在尝试将用户信用卡存储到条带中。我有一个表格,所有设置都使用付款工具包 PTKView
。然后,一旦用户点击保存按钮,我就创建了 Stripe
所需的 STPToken
。生成令牌后,我尝试将带有用户 objectId 的令牌作为客户保存到 Stripe
。我确定问题出在服务器代码中。
一些背景知识,我正在使用 Parse SDK 的云代码作为我的服务器,所以我正在处理 javascript :(.
这里我从表单中获取信息,创建一个STPCard
,然后生成一个令牌。
PTKCard* card = self.cardView.card; // self.cardView is the PTKView
STPCard *stpcard = [[STPCard alloc] init];
stpcard.number = card.number;
stpcard.expMonth = card.expMonth;
stpcard.expYear = card.expYear;
stpcard.cvc = card.cvc;
[[STPAPIClient sharedClient] createTokenWithCard:stpcard
completion:^(STPToken *token, NSError *error) {
if (error) {
NSLog(@"error");
} else {
[self createBackendChargeWithToken:token];
}
}];
生成令牌后,我将其发送到 Parse,在那里我实现了服务器端代码来处理创建客户并将其保存到 Stripe。
- (void)createBackendChargeWithToken:(STPToken *)token
{
NSDictionary *productInfo = @{@"cardToken": [NSString stringWithFormat:@"%@",token],
@"objectId": [[PFUser currentUser] objectId]};
[PFCloud callFunctionInBackground:@"saveCardInformation"
withParameters:productInfo
block:^(id object, NSError *error) {
if (error) {
NSLog(@"error");
return ;
}
[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Success", @"Success")
message:nil
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK", @"OK")
otherButtonTitles:nil] show];
}];
}
现在我处理云代码中传递的令牌:
var Stripe = require('stripe');
Stripe.initialize(my_key);
Parse.Cloud.define("saveCardInformation", function(request, response) {
Stripe.Customers.create({
source: request.params.cardToken,
},{
success: function(httpResponse) {
response.success("Customer created!");
},
error: function(httpResponse) {
response.error(httpResponse.message);
}
});
});
然后我收到这样的回复:
Error: There is no token with ID tok_15afWSDOYfVZdgZvh6qSvmmm (test mode). (Code: 141, Version: 1.6.0)
为什么这么说?据我了解,我只是在创建一个用户,所以当然没有具有指定 ID 的令牌。我知道它主要在 javascript 云代码中,但我不确定如何处理这个...有人有任何想法吗?
好吧...我犯了一个小错误...显然我需要访问 STPTokens tokenId 属性...
NSDictionary *productInfo = @{@"cardToken": token.tokenId,
@"objectId": [[PFUser currentUser] objectId]};
需要真正彻底地阅读我的代码。