Programmatically manage customer profiles

Install and import our client

For this recipe, we will use the Python SDK, which you can install using pip install getopenpay or poetry add getopenpay

from getopenpay.client import ApiKeys, OpenPayClient

OP_PUBLISHABLE_TOKEN = 'TODO_YOUR_PUBLISHABLE_TOKEN'
OP_SECRET_TOKEN = 'TODO_YOUR_SECRET_TOKEN'

api_keys = ApiKeys(publishable_key=OP_PUBLISHABLE_TOKEN, secret_key=OP_SECRET_TOKEN)

# sandbox/staging environment
sandbox_host = 'https://connto.openpaystaging.com'

# production environment
production_host = 'https://connto.getopenpay.com'

Customer buying more of the same price

new_quantity = 2
update_request = UpdateSubscriptionRequest(
  items=[
    InlineSubscriptionItemUpdate(
      id='TARGET_SUBSCRIPTION_ID', quantity=new_quantity
    )
  ],
) 
# Execute the update
update_response = client.subscriptions.update_subscription(sub_created.id, update_request)

Customer upgrading prices

update_request = UpdateSubscriptionRequest(
  items=[
    InlineSubscriptionItemUpdate(
      id='TARGET_SUBSCRIPTION_ID', price_id='TARGET_PRICE_ID'
    )
  ],
) 

# Execute the update
update_response = client.subscriptions.update_subscription(sub_created.id, update_request)

List customer payment methods

pm_methods = client.customers.list_customer_payment_methods('TARGET_CUSTOMER_ID',
                                                            CustomerPaymentMethodQueryParams()).data

List invoices

invoice_resp = client.invoices.list_invoices(
  invoice_query_params=InvoiceQueryParams(customer_id='TARGET_CUSTOMER_ID')
)