问题
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-Token
和Content-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 } } } }}"
}
请求的结果请参考文档。
Comments