问题

Shopify在实行GraphQL API之后没有之前的REST API的类似payout_id查询这笔到账对应哪些订单的功能,把问题抛给GPT得到了如下结论

先用 shopifyPaymentsAccount.balanceTransactions 拉取一段时间内的所有交易,再在客户端代码里用 associatedPayout.id 去过滤出你目标 payout 的交易。

这个方案会导致无法确定balance transaction的范围究竟有多大,需要调取多少才能收集完所有属于指定payout的数据

解决方案

根据文档显示,可以在query中添加payout_date和payout_status作为条件,形成如下的请求

query {
  shopifyPaymentsAccount {
    balanceTransactions(
      first: 250
      after: null
      query: "payout_date:='2025-08-04' payout_status:'PAID'"
    ) {
      pageInfo { hasNextPage endCursor }
      nodes {
        id
        transactionDate
        sourceId
        type
        amount { amount currencyCode }
        fee { amount currencyCode }
        net { amount currencyCode }
        associatedOrder { id name }
        associatedPayout { id status }
      }
    }
  }
}

此处query内容为显示payout date是2025-08-04的balanceTransaction,且payout状态是PAID。注意如果条件输错,请求过程中会忽视query的条件,直接显示所有结果。你也可以根据自己的需求调整nodes中显示哪些字段。

因为NetSuite的SuiteScript是不支持GQL的,我们需要把请求转换成http post请求,转换之后请求的body如下。请注意还需要设置X-Shopify-Access-TokenContent-Type=application/json

{
     "query": "query {  shopifyPaymentsAccount {    balanceTransactions(      first: 250      after: null      query: \"payout_date:='2025-08-04' payout_status:'PAID'\"    ) {      pageInfo { hasNextPage endCursor }      nodes {        id        transactionDate        sourceId        type        amount { amount currencyCode }        fee { amount currencyCode }        net { amount currencyCode }        associatedOrder { id name }        associatedPayout { id status }      }    }  }}"
}

请求的结果请参考文档

Last modified: 13/08/2025

Author

Comments

Write a Reply or Comment

Your email address will not be published.