我已经为订阅创建了一堆端点,例如修改、取消和创建 Customer.create,所有这些都采用一个元数据参数,该参数将在钩子事件中可用,除非我使用
stripe.Customer.create
时我收到一条错误消息
Received unknown parameter: metadata
这是我的代码的简化版本:
@routes.post("/company_management/resume-subscription")
async def resume_subscription(request):
try:
data = await request.json()
subscription_id = data.get("subscription_id")
user = await get_user(request)
if not user:
return web.json_response({"error": "Not found"}, status=404)
# update the user status
async with request.app["db"].acquire() as conn:
async with conn.cursor(aiomysql.DictCursor) as cur:
user_id = user.get("user_id")
await stripe.Subscription.resume(
subscription_id,
billing_cycle_anchor='unchanged',
metadata={"user_id": user_id}
)
return web.json_response({"message": "Subscription resumed successfully", "status": "success"})
except Exception as e:
return web.json_response({"error": str(e)}, status=400)
我知道我可以使用订阅恢复订阅。修改如下:
await stripe.Subscription.modify(
subscription_id,
pause_collection='',
metadata={"user_id": user_id}
)
我想将此作为最后的手段,并使用 Resume 方法,因为它可能会触发
Subscription.resumed
webhook。
一些额外的问题,修改方法,如果用于暂停订阅它只会触发
Subscription.updated
webhook,如何触发Subscription.paused
?
stripe.Customer.create
您的意思是
stripe.Subscription.resume
?
如果是这样,恢复订阅端点不会将订阅的所有属性作为参数,这就是为什么您无法使用它更新
metadata
等字段。如果您想恢复订阅并在同一调用中修改它,您应该使用:
await stripe.Subscription.modify(
subscription_id,
pause_collection='',
metadata={"user_id": user_id}
)