到目前为止,一切都很有效。用户登录网站,进入高级页面,可以通过Stripe Checkout选择要订购的包。客户完成订单后,将在条带仪表板上创建客户并注册订阅。大。
但是,我在使用订阅信息更新Meteor.users对象时遇到问题。这就是代码的外观:
initiateCustomer: function(email, token){
var email = email;
var token = token;
var newCustomer = new Future();
Meteor.call('createCustomer', token, email, function(error, stripeCustomer){
if (error) {
console.log(error);
} else {
var customerId = stripeCustomer.id;
var plan = "Premium";
Meteor.call('createSubscription', customerId, plan, function(error, response){
if (error) {
console.log(error);
} else {
try {
var currentUser = Meteor.userId();
var user = {
_id: currentUser
}
var subscription = {
customerId: customerId,
subscription: {
plan: {
name: plan,
used: 0
},
payment: {
card: {
type: stripeCustomer.sources.data[0].brand,
lastFour: stripeCustomer.sources.data[0].last4
},
nextPaymentDue: response.current_period_end
}
}
};
Meteor.users.update(user, {
$set: subscription
}, function(error, response){
if (error){
console.log(error);
} else {
newCustomer.return(user);
}
});
} catch(exception) {
newCustomer.return(exception);
}
}
});
}
});
return newCustomer.wait();
},
Meteor.users.update()
运算符给我带来了问题,因为它没有按照预期更新User对象。更新完成后,用户对象应该在users对象中包含_id,email和订阅信息。但是,方法调用完成后,订阅密钥永远不会添加到用户对象中。