围绕myob的accountright api的python api。

pymyob的Python项目详细描述


子宫肌瘤

PyPI versionBuild Status

一个围绕MYOB's AccountRight Live API的python api。

此项目仅支持Python3。

开始前

向myob注册api密钥。你会找到详细的说明here

开始

安装:

pip install pymyob

创建一个PartnerCredentials实例,并提供在myob中设置的密钥、机密和重定向uri:

from myob.credentials import PartnerCredentials

cred = PartnerCredentials(
    consumer_key=<Key>,
    consumer_secret=<Secret>,
    callback_uri=<Redirect Uri>,
)

在某处缓存cred.state。稍后您将使用此命令重新生成PartnerCredentials实例。 将用户重定向到cred.url。在那里,他们需要登录myob并授权与您的应用程序合作。一旦这样做,它们将被重定向到您提供的重定向uri。

在重定向到的url处,重新生成PartnerCredentials,然后从请求中选择验证器并使用它来验证凭据。

from myob.credentials import PartnerCredentials

def myob_authorisation_complete_view(request):
    verifier = request.GET.get('code', None)
    if verifier:
        state = <cached_state_from_earlier>
        if state:
            cred = PartnerCredentials(**state)
            cred.verify(verifier)
            if cred.verified:
                messages.success(request, 'OAuth verification successful.')
            else:
                messages.error(request, 'OAuth verification failed: verifier invalid.')
        else:
            messages.error(request, 'OAuth verification failed: nothing to verify.')
    else:
        messages.error(request, 'OAuth verification failed: no verifier received.')

再次保存cred.state,但这一次您希望将其保存在永久存储中。所以把它放到数据库的某个地方。

通过您的应用程序与MYOB合作,您现在可以创建一个Myob实例,提供经过验证的凭据:

from myob import Myob
from myob.credentials import PartnerCredentials

cred = PartnerCredentials(**<persistently_saved_state_from_verified_credentials>)
myob = Myob(cred)

你快到了!MYOB有一个叫做公司档案的东西即使您现在已经针对某个用户进行了授权,您仍需要收集更多的凭据以进入公司文件。

companyfiles = myob.companyfiles.all()

# Each company file has the following attrs:
comp.id  # Company Id
comp.name  # Company Name
comp.data  # Remaining data as a raw dict.

呈现一个下拉列表供用户选择要使用的公司文件。通常情况下,他们的账户上只会有一个,但最好核对一下。选择后,提示他们输入该公司文件的用户名和密码保存如下:

cred.authenticate_companyfile(<company_id>, <username>, <password>)

将新的cred.state保存回永久存储。

现在你可以访问东西了!

from myob import Myob
from myob.credentials import PartnerCredentials

cred = PartnerCredentials(**<persistently_saved_state_from_verified_credentials>)
myob = Myob(cred)

# Obtain list of company files. Here you will also find their IDs, which you'll need to retrieve a given company file later.
company_files = myob.companyfiles.all()

# Obtain a specific company file. Use `call=False` to just prep it for calling other endpoints without actually making a call yet at this stage.
comp = myob.companyfiles.get(<company_id>, call=False)

# Obtain a list of customers (two ways to go about this).
customers = comp.contacts.all(Type='Customer')
customers = comp.contacts.customer()

# Obtain a list of sale invoices (two ways to go about this).
invoices = comp.invoices.all(InvoiceType='Item', orderby='Number desc')
invoices = comp.invoices.item(orderby='Number desc')

# Create an invoice.
comp.invoices.post_item(data=data)

# Obtain a specific invoice.
invoice = comp.invoices.get_item(uid=<invoice_uid>)

# Download PDF for a specific invoice.
invoice_pdf = comp.invoices.get_item(uid=<invoice_uid>, headers={'Accept': 'application/pdf'})

# Obtain a list of tax codes.
taxcodes = comp.general_ledger.taxcode()

# Obtain a list of inventory items.
inventory = comp.inventory.item()

如果你不知道你在找什么,大多数对象的代表(例如上面的myobcompcomp.invoices)都会给出可用的管理器/方法的信息。 每个方法对应一个对MYOB的API调用

注意,这里还没有涵盖所有端点;我们只是根据需要添加它们。如果你想添加一个特定的端点,请随意将其放入endpoint s.py文件并打开一个pr。所有的贡献都是受欢迎的,并将被迅速审查。:)

1:您的用户可以在https://secure.myob.com/查看他们的合作伙伴授权

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
struts如何在java工作包中创建日志文件?   java Restlet+嵌入式jetty+webapp   java Spring Oauth2自定义异常处理程序   Java通过相对路径加载DLL并将它们隐藏在jar中   java将ArrayList中每个条目中的字符按相反顺序排列   同一个包中的类的java ProcessBuilder给定程序错误“找不到符号”   找不到java AdapterView[微调器]   java Android应用程序启动前崩溃   创建hibernate 4会话时发生java异常   有没有办法将类对象转换为Java源字符串?   从Ibatis到MyBatis的java迁移   javascript使用jQuery关闭警报,获取警报文本   java创建具有不同请求类型的请求数据类   java如何使用意图在活动之间传递和操作对象   Java在声明后设置2Darray的数组大小   java在循环外存储while循环的输入   java添加另一代码中缺少的导入语句   如何在Java中从HashMap获取对象   java控制台。readline();不行