使用测试数据,我可以创建一个客户并附加一种付款方式,但我的所有订阅都处于这种状态。这是我目前创建订阅的代码:
// StripeCreateSubscription create a new subscription with fixed price for user
func StripeCreateSubscription(w http.ResponseWriter, r *http.Request) {
if r.Method != "POST" {
SendResponse(w, utils.MakeError("you can only POST to the stripe create customer route"), http.StatusMethodNotAllowed)
return
}
// Decode the JSON payload
type requestPayload struct {
PaymentMethodID string `json:"paymentMethodId"`
PriceID string `json:"priceId"`
}
var payload requestPayload
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil {
sendSystemError(w, fmt.Errorf("decode request payload: %v", err))
return
}
// Get the user from the context of who made the request
uid := r.Context().Value("user_id").(int)
u := models.User{}
if err := u.FindByID(uid); err != nil {
sendSystemError(w, fmt.Errorf("find user by id: %v", err))
return
}
if u.StripeCustomerID == "" {
sendSystemError(w, errors.New("no customer for the user"))
return
}
// Attach the payment method to the customer
paymentParams := &stripe.PaymentMethodAttachParams{
Customer: stripe.String(u.StripeCustomerID),
}
pm, err := paymentmethod.Attach(
payload.PaymentMethodID,
paymentParams,
)
if err != nil {
sendSystemError(w, fmt.Errorf("attaching payment method failed: %v", err))
}
// Check if the user has any active subscriptions, and cancel the others if they're adding one.
listParams := &stripe.SubscriptionListParams{
Customer: u.StripeCustomerID,
Status: "all",
}
我需要做什么才能让我的订阅完成付款?
缥缈止盈
相关分类