小编Ed *_*yko的帖子

Stripe 结帐会话缺少元数据

我一直在尝试stripe.checkout.Session.create()像这样传递元数据:

stripe.api_key = STRIPE_SECRET_KEY

payments_blueprint = Blueprint('payments', __name__, url_prefix='/payments')


@payments_blueprint.route('/checkout', methods=['POST'])
def create_checkout_session():

    try:
        checkout_session = stripe.checkout.Session.create(
            metadata=dict(key='val'),
            payment_method_types=['card'],
            line_items=request.form.get("lineItems", LINE_ITEMS),
            success_url=f'{request.environ["HTTP_ORIGIN"]}/success',
            cancel_url=f'{request.environ["HTTP_ORIGIN"]}/cancel',
            mode='payment'
        )

        return redirect(checkout_session.url, code=HTTPStatus.SEE_OTHER)

    except stripe.error.InvalidRequestError as err:
        return redirect(f'{request.environ["HTTP_ORIGIN"]}/error', code=HTTPStatus.MOVED_PERMANENTLY)
Run Code Online (Sandbox Code Playgroud)

来自 stripe 的响应和通过我的 webhook 的事件都不包含任何元数据,即使 stripe 控制台中请求和响应的事件日志都包含:

  "metadata": {
    "key": "val"
  },...
Run Code Online (Sandbox Code Playgroud)

我正在监听所有使用的事件,stripe listen --forward-to localhost:8000/hooks/ --print-json并且 /hooks 处的端点所做的就是将事件打印到标准输出。没有其他的。

我希望此元数据通过我的一系列预订验证网络钩子传递。参考这个:

https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-metadata

基本上我正在关注这些文档,通过调用发送元数据checkout.Session.create(),然后看不到此元数据。我尝试过使用dict()构造函数,使用字典语法代替({"key":"val"}),创建一个变量并将其设置为该字典,然后再将其传递给函数,以及我能想到的所有其他方式来传递此元数据字典,但我还没有尝试过从 stripe 中获取它。

这是我设置的用于转发这些事件的钩子:

class TestHook(Resource):

    def post(self):
        event = stripe.Event.construct_from(
            json.loads(request.data),
            stripe.api_key
        ).to_dict() …
Run Code Online (Sandbox Code Playgroud)

python flask stripe-payments

10
推荐指数
2
解决办法
6354
查看次数

标签 统计

flask ×1

python ×1

stripe-payments ×1