Version 2.8.0 March 26, 2018
- Implement API v2.10 Changes #231
Upgrade Notes
1. InvoiceCollection
When creating invoices or using mark_failed(), we now return an InvoiceCollection object rather than an Invoice. If you wish to upgrade your application without changing functionality, we recommend that you use the charge_invoice on the InvoiceCollection. Example:
# Change This:
invoice = account.invoice()
# To this
collection = account.invoice()
invoice = collection.charge_invoiceCalls that now return InvoiceCollection instead of Invoice:
Purchase#invoice()Purchase#preview()Purchase#authorize()Account#invoice()Account#build_invoice()
Furthermore, Invoice#mark_failed() no longer updates the invoice but rather returns a new InvoiceCollection object:
# Change This:
invoice.mark_failed()
# To this
collection = invoice.mark_failed()
failed_invoice = collection.charge_invoice2. Invoice#original_invoice removed
Invoice#original_invoice was removed in favor of Invoice#original_invoices. If you want to maintain functionality, change your code grab the first invoice from that endpoint:
# Change this
original_invoice = invoice.original_invoice()
# To this
original_invoice = invoice.original_invoices()[0]3. Invoice subtotal_* changes
We have renamed two of the invoice subtotal fields to more clearly reflect their values:
- Renamed
subtotal_in_centstosubtotal_before_discount_in_cents - Renamed
subtotal_after_discount_in_centstosubtotal_in_cents
4. Invoice Refund -- refund_apply_order changed to refund_method
If you were using Invoice#refund or Invoice#refund_amount and explicitly setting the second refund_apply_order parameter, then you may need to change value to fit the new refund_method format. The values for this have changed from (credit, transaction) to (credit_first, transaction_first)
If you don't explicitly set the refund_apply_order like in these two calls, no change is needed:
invoice.refund(line_items);
invoice.refund_amount(1000);If you do set the second param, you'll need to change:
credittocredit_firsttransactiontotransaction_first
Examples:
# Change `credit`:
invoice.refund(line_items, 'credit');
invoice.refund_amount(1000, 'credit');
# To `credit_first`
invoice.refund(line_items, 'credit_first');
invoice.refund_amount(1000, 'credit_first');
# Change `transaction`
invoice.refund(line_items, 'transaction');
invoice.refund_amount(1000, 'transaction');
# To `transaction_first`
invoice.refund(line_items, 'transaction_first');
invoice.refund_amount(1000, 'transaction_first');5. Invoice States
If you are checking Invoice#state anywhere, you will want to check that you have the new correct values. collected has changed to paid and open has changed to pending. Example:
# Change this
if invoice.state == 'collected':
#To this
if invoice.state == 'paid':# Change this
if invoice.state == 'open':
# To this
if invoice.state == 'pending':This also affects the Invoice.all_collected and Invoice.all_open functions. Example:
# Change this
Invoice.all_collected()
# To this
Invoice.all_paid()# Change this
Invoice.all_open()
# To this
Invoice.all_pending()