首页 > 解决方案 > billing_agreement.cancel() 的问题。('cancel() 缺少 1 个必需的位置参数:'attributes')

问题描述

SDK/库版本:1.13.1

环境:沙盒

PayPal-Debug-ID 值:无

语言、语言版本和操作系统:Python、Ubuntu

问题描述:我在尝试取消结算协议时收到以下错误。

错误:

TypeError: cancel() missing 1 required positional argument: 'attributes'

我的代码:

billing_agreement = BillingAgreement.find(billing_id)
    if billing_agreement.cancel():
        print(billing_agreement)
    else:
        flash('We are having some difficulties canceling your subscription, please try again later.', 'fails')
        return redirect(url_for('settings.settingspage'))

我收到错误是因为我需要属性值中的某些内容,但我不知道应该为变量分配什么。

GitHub问题:https ://github.com/paypal/PayPal-Python-SDK/issues/297

标签: python-3.xpaypalpaypal-rest-sdkpaypal-subscriptions

解决方案


经过一番挖掘和查看文档示例后,我找到了一个关于取消选项的示例,我需要分配给属性值的是cancel_note.

编码:

cancel_note = {"note": "Canceling the agreement"}
user = Users.query.filter_by(id=ID).first()
billing_id = Subscriptions.query.filter_by(email=user.email).filter_by(active=1).first().order_id
billing_agreement = BillingAgreement.find(billing_id)
if billing_agreement.cancel(cancel_note):
    flash('Subscription canceled with success.', 'success')
    return redirect(url_for('settings.settingspage'))
else:
    flash('We are having some difficulties canceling your subscription, please try again later.', 'fails')
    return redirect(url_for('settings.settingspage'))

文档样本


推荐阅读