标签: xero-api

按订单号检索“Shopify Payments”费用以与会计 + 银行存款进行对账?

在会计系统内对存款进行核对,从运行 Shopify Payments(或其他方式)的 Shopify 商店进入 Shopify 用户的银行帐户,这似乎是人们经常根据数字偶然发现 \xe2\x80\x94 的事情之一有关 Shopify 支持社区论坛上的主题的请求,例如: https: //community.shopify.com/c/Shopify-APIs-SDKs/Fees-charged-by-Shopify-via-API/mp/265261 /

\n\n

问题(对于会计)是 Shopify Payments在将交易余额存入店主的账户之前删除了费用金额(有关费用的完整列表,请参阅:https: //www.shopify.com/pricing )银行账户。

\n\n

Shopify 费用通常如下所示2.6% of transaction value + $0.30

\n\n

根据上述内容计算应收取的费用非常简单(对费用表进行硬编码),直到这些费用在未来某个时候发生变化。

\n\n

这对集成有何影响?

\n\n

对于许多可用的简单集成,这会导致打入银行帐户的发票金额与我们根据通过 Shopify 轻松检索的 Shopify 发票金额“预期”打入银行帐户的金额之间存在差异。的 API 由许多此类解决方案提供。

\n\n

这种差异意味着基于会计的用户有必要手动推断哪个 Shopify 发票与哪个传入银行存款 \xe2\x80\x94\xc2\xa0 相关联,然后手动添加一个负行项目来计算差额/余额图书。

\n\n
\n

这是几个不同的会计系统/软件供应商(特别是 Xero 和 Quickbooks)在被问及他们的客户如何解决上述问题时提出的建议方法。

\n
\n\n

我知道有一些解决方案试图解决上述所有问题(取得了不同程度的成功),但由于我目前的情况涉及大量的配套工作,这些解决方案都无法充分解决我们业务所需的其他功能。

\n\n
\n

我们需要能够找到费用(或者自己计算)并将这些费用添加到发票中,以便我们的会计系统期望正确的资金金额打入我们的银行帐户 \xe2\x80\x94 因此问题:如何我们可以检索当前帐户的“Shopify Payments”费用/费率吗?

\n
\n\n

理想情况下,我希望避免对这些信息进行硬编码,因为 Shopify 可能会更改费用(可能只发出少量通知),这意味着到那时我们的集成就会中断。最好能够通过 API 请求检索给定帐户的费用表,从而避免费用发生变化时出现问题。

\n\n

我有多个客户也面临同样的问题 \xe2\x80\x94\xc2\xa0so 我认为值得检查一下是否有人遇到/解决了问题,并讨论我当前的解决方案

\n\n

Shopify 说什么?

\n\n …

shopify quickbooks-online xero-api

3
推荐指数
1
解决办法
1121
查看次数

Xero API 403 - 身份验证不成功错误

我将 Xero Api 与 Nodejs 和 xero-node 库一起使用。

我已完成 oAuth 流程并将令牌保存到数据库中。我现在遇到的问题是,当尝试从 Xero 获取任何内容(联系人、帐户或用户)时,不断收到 403 禁止错误。示例代码如下

我可以毫无问题地让租户满意,但其他任何方法都行不通。我已经检查了范围,以确保在设置客户端时它们是正确的。

var getStuff = async(tokenSet) => {
  await xero.setTokenSet(tokenSet);
  const tenants = await xero.updateTenants();

  const xeroTenantId = tenants[0].id  // {String} Xero identifier for Tenant
  const ifModifiedSince = new Date("2020-02-06T12:17:43.202-08:00");
  const where =  'IsSubscriber==true';  // {String} Filter by an any element
  const order =  'LastName ASC';  // {String} Order by an any element

  console.log(tenants);
  try {
    const response  = await xero.accountingApi.getUsers(xeroTenantId, ifModifiedSince, where, order);
    console.log(response.body || …
Run Code Online (Sandbox Code Playgroud)

node.js xero-api

3
推荐指数
1
解决办法
3581
查看次数

从本地主机连接到 Xero OAuth2 给 CORS Erros

我使用软件包通过 Angular 7 应用程序连接到 Xero oauth 服务器“ https://login.xero.com/identity/connect/authorizeangular-oauth2-oidc

在我的 authConfig 我有以下属性

export const authConfig: AuthConfig = {
  issuer: 'https://login.xero.com/identity/connect/authorize',
  redirectUri: 'http://127.0.0.1:2114/xerocallback',
  clientId: 'XXXXXXXXXX647C2ABBAXXXXXXXXXX',
  scope: 'openid profile email offline_access',
  responseType: 'code',
};
Run Code Online (Sandbox Code Playgroud)

但是,一旦我初始化 oauth 服务

import { OAuthService } from 'angular-oauth2-oidc';
this.oauthService.configure(authConfig);
Run Code Online (Sandbox Code Playgroud)

我收到以下 CORS 错误

Access to XMLHttpRequest at 'https://login.xero.com/identity/connect/authorize/.well-known/openid-configuration' from origin 'http://localhost:2114' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)

任何我做错了什么的想法,任何建议都会受到欢迎

oauth-2.0 xero-api angular-oauth2-oidc angular7

2
推荐指数
1
解决办法
747
查看次数

PhpStorm 没有对大文件进行代码完成

我刚刚安装了这个库。PhpStorm 会执行通常的代码补全(类除外)\XeroAPI\XeroPHP\Api\AccountingApi\XeroAPI\XeroPHP\Api\IdentityApi同一文件夹中的类工作得很好。

该文件相当大 - 2,560KB。如果我从类中删除大约 65,000 行中的一半(并且无论是前半部分还是后半部分都有效),那么我会恢复代码完成状态。事实上,我可以只删除最后 3,000 行左右(将文件减小到 2,499KB)并且它可以工作。

我还尝试了快速正则表达式查找/替换来删除所有@throwsPHPDoc 注释。这使得文件减少到 2,491KB,嘿,很快,代码完成就可以正常工作了。

如果我不得不猜测,我会说它不会对超过 2.5MB 的源文件或其他文件进行代码完成,但我找不到任何相关设置。

有什么方法可以让该文件完成代码,而不需要从中删除内容(无论如何,下次我进行 Composer 更新时都会恢复这些内容)?

filesize code-completion vendor phpstorm xero-api

2
推荐指数
1
解决办法
244
查看次数

通过联系人ID查询发票时,Xero API不返回值

我需要通过联系人ID获取联系人的发票,因此我编写了类似于Qusery 3(用于付款)的查询1。我的目标是从与它关联的对象Contact所属的字段查询发票。但是查询1返回0结果。

然后,我尝试了查询发票的方式,即按属于发票的字段进行查询。我指的是GitHub中的Xero C#代码示例。它正在工作,并按预期返回10个结果。

为什么我不能从ContactId字段查询发票中的联系人?

查询1(不工作-返回0个结果,预期10个结果)

 var contact = _api.Contacts.Find().FirstOrDefault(c => c.AccountNumber == accountNumber);
            returnInvoiceList =
                _api.Invoices.Find()
                    .Where(c => c.Contact.Id == contact.Id)
                    .OrderBy(item => typeof(Invoice).GetProperty(
                        orderby, BindingFlags.Public | BindingFlags.Instance).GetValue(item))
                    .Skip(i * x)
                    .Take(x)
                    .ToList();
Run Code Online (Sandbox Code Playgroud)

查询2(工作)

returnInvoiceList =
                    _api.Invoices.Where(string.Format("Reference == \"{0}\"", accountNumber)).Find()
                        .OrderBy(item => typeof(Invoice).GetProperty(
                            orderby, BindingFlags.Public | BindingFlags.Instance).GetValue(item))
                        .Skip(i * x)
                        .Take(x)
                        .ToList();
Run Code Online (Sandbox Code Playgroud)

查询3(与查询1类似的模式查询,用于付款)

 returnPaymentList =
                   _api.Payments.Find()
                       .Where(c => c.Invoice.Contact.Id == contact.Id)
                       .OrderBy(item => typeof(Payment).GetProperty(
                           orderby, BindingFlags.Public | BindingFlags.Instance).GetValue(item))
                       .Skip(i * x)
                       .Take(x)
                       .ToList();
Run Code Online (Sandbox Code Playgroud)

c# xero-api

1
推荐指数
1
解决办法
1361
查看次数

将集合转换为 Eloquent 对象

目前我在 Laravel 5.2 中使用 Xero API。我想利用 Eloquent 的强大功能来处理这些数据。

实际上,我可以恢复发票,甚至使用链接方法过滤它们,如下所示:

    $invoices = XeroPrivate::load('Accounting\\Invoice')
        ->where('Status', 'DRAFT')
        ->execute();
Run Code Online (Sandbox Code Playgroud)

如果我执行 a var_dump,我会得到这种数据:

object(XeroPHP\Remote\Collection)[173]
  public 0 => 
    object(XeroPHP\Models\Accounting\Invoice)[171]
      protected '_data' => 
        array (size=31)
          'Type' => string 'ACCPAY' (length=6)
          'Contact' => 
Run Code Online (Sandbox Code Playgroud)

雄辩的链接方法可以让我执行这样的事情。目前失败了:

    $invoices = XeroPrivate::load('Accounting\\Invoice')
        ->where('Date','>','2016-03-20')
        ->execute();
Run Code Online (Sandbox Code Playgroud)

检查 Laravel 的文档,假设我可以使用以下命令转换为集合collect

    $collection = collect($invoices);
Run Code Online (Sandbox Code Playgroud)

$collection并不能解决问题。现在数据结构不同了但仍然无法使用Eloquent。现在数据是:

object(Illuminate\Support\Collection)[163]
  protected 'items' => 
    array (size=24)
      0 => 
        object(XeroPHP\Models\Accounting\Invoice)[171]
          protected '_data' => 
            array (size=31)
Run Code Online (Sandbox Code Playgroud)

但事实证明,数据是Illuminate\Support\Collection正确的。

谢谢!

php method-chaining eloquent laravel-5 xero-api

1
推荐指数
1
解决办法
1万
查看次数

Xero-Zapier的OAuth流

我正在研究在zapier中添加一个Webhook,该Webhook将使用xero开票api发送发票。Xero没有扎比动作来执行此操作。

我本来打算使用oauth-2 beta,但它的流程很复杂,对于以简单的静态设置连接到一个组织的用例来说,它并不理想。

关于如何设置的任何想法?

zapier xero-api

1
推荐指数
1
解决办法
79
查看次数

Xero - 意向接收红宝石

这是来自 Xero 的参数

{"events"=>nil,
 "firstEventSequence"=>0,
 "lastEventSequence"=>0,
 "entropy"=>"KFDXIMNLPDAMRBOEVAVF",
 "controller"=>"admin/billing/webhooks",
 "action"=>"handle_hook",
 "webhook"=>
  {"events"=>nil,
   "firstEventSequence"=>0,
   "lastEventSequence"=>0,
   "entropy"=>"KFDXIMNLPDAMRBOEVAVF"}}
Run Code Online (Sandbox Code Playgroud)

我想验证Intent To Receive https://developer.xero.com/documentation/webhooks/configuring-your-server#intent

data = {"events"=>nil, "firstEventSequence"=>0, "lastEventSequence"=>0, "entropy"=>"KFDXIMNLPDAMRBOEVAVF"}

Key = HRj6QPub9BNE4MWewrcLrkKFjpiikV1KrlMZCvDawyDR95MGkkuE2y1DXFP1tifsEWaJygLx6zG0r9rXVTflcg==
Run Code Online (Sandbox Code Playgroud)

下面尝试过

Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha256'), key, data)).strip()

*** TypeError Exception: no implicit conversion of ActionController::Parameters into String
Run Code Online (Sandbox Code Playgroud)

或者

hash  = OpenSSL::HMAC.digest('sha256', key, data)
*** TypeError Exception: no implicit conversion of ActionController::Parameters into String
Run Code Online (Sandbox Code Playgroud)

在这里如何实现这一目标?

为了确保您收到的请求来自 Xero,您需要验证 x-xero-signature 标头中提供的签名。创建或重新启用 Webhook 订阅(或更新订阅 URL)时,系统将提示用户启动“接收意图”验证。此验证过程将是对订阅中提供的 url 的一系列 HTTPS POST 请求。

编辑 Rails 正在将空白数组转换为 nil,所以我自己制作了有效负载,根据文档看起来完全相同

data = params[:webhook]

payload = …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails webhooks xero-api xeroizer

0
推荐指数
1
解决办法
380
查看次数