我想下载每张发票,以便我们搜索/报告数据。然后单击按钮,刷新每张发票的状态。
我没有每个发票ID。
我可以让Invoice.all()
工作,但它似乎要么是错误的,要么我不知道如何使用它。
我有350张发票,200张是页面上的最大值,所以我尝试了这张发票来获取所有发票:
Invoice.all({page_size=200, page=1})
Invoice.all({page_size=200, page=2})
这会收到400张发票。 第一页似乎很好。这是200个不同的索引。 第二页与第一页相同,约为98%。
我实际上通过30页运行它,它总是会找到记录但不能确定地以任何特定顺序返回结果。到第30页,我可能有90%的发票。
我没有看到如何在此处应用订单或范围。
作为计划B,我试图使用Invoice.search()
方法。
我想我可以通过dict一次抓一个月(invoice_create_start / end)甚至使用“数字”。发票都是0001到0350,所以这是一个简单的拉动。
我无法进行搜索工作。
Invoice.find("AAAA-BBBB-CCCC-DDDD")
是唯一似乎按照我的预期工作的东西,但这假设我已经拥有此ID。
以下是我的代码示例。 .all
示例有效,但并不像我期望的那样。 .search
示例根本不起作用,这就是为什么有一堆代码试图询问结果的原因。我已尝试将搜索参数与.all
一起使用,但这些将被忽略。
@staticmethod
def get_invoices(page=1, mode='live'):
import paypalrestsdk
page_limit = 100
c = 0
paypalrestsdk.configure({
"mode": mode, # sandbox or live
"client_id": "client id",
"client_secret": "secret code" })
# history = paypalrestsdk.Invoice.all()
history = paypalrestsdk.Invoice.all({"page": page, "page_size": page_limit})
for invoice in history.invoices:
c += 1
print 'p{} record: {}. {}'.format(page, c, invoice)
print 'page {} done. records: {}'.format(page, c)
if c == page_limit:
return True
return False
@staticmethod
def get_invoice(invoice_number, mode='live'):
import paypalrestsdk
paypalrestsdk.configure({
"mode": mode, # sandbox or live
"client_id": "Client Id",
"client_secret": "Client secret" })
from paypalrestsdk import Invoice, ResourceNotFound
import logging
logging.basicConfig(level=logging.INFO)
page_size = 200
try:
search_attributes = {
"number": invoice_number,
}
all = Invoice.search(search_attributes)
# print("Got Invoice Details for Invoice[%s]" % (all.invoices.id))
print 'invoice: {}'.format(all.invoices)
# print 'count: {}'.format(all.invoices.c)
i = page*page_size - page_size
for invoice in all.invoices:
i += 1
print '{}: [{}] {}'.format(i, invoice.number, invoice)
except ResourceNotFound as error:
print("Invoice Not Found")