【发布时间】:2020-04-27 05:07:15
【问题描述】:
我正在做WebCheckout。之后,我收到了该 Checkout 回调的回调。
我已经按照here写的方式。
GraphClient client = ...;
ID paymentId = ...;
Storefront.QueryRootQuery query = Storefront.query(rootQuery -> rootQuery
.node(paymentId, nodeQuery -> nodeQuery
.onPayment(paymentQuery -> paymentQuery
.checkout(checkoutQuery -> checkoutQuery
.ready()
.order(orderQuery -> orderQuery
.processedAt()
.orderNumber()
.totalPrice()))
.errorMessage()
.ready()
)
)
);
================================================ ========================
我面临以下问题:
1. ID paymentId = ...;
它不应该是 paymentId,它是 checkoutId 而将在this request 的响应中收到。
2.在以下代码的响应中没有得到 null 值:
Storefront.QueryRootQuery query = Storefront.query(rootQuery -> rootQuery
.node(paymentId, nodeQuery -> nodeQuery
.onPayment(paymentQuery -> paymentQuery
.checkout(checkoutQuery -> checkoutQuery
.order(orderQuery -> orderQuery
.processedAt()
.orderNumber()
.totalPrice()))
.errorMessage()
.ready()
)
)
);
- 2.1 如果我删除了下面的行,我就可以获得一些数据:
.onPayment(paymentQuery -> paymentQuery
因此,代码将如下所示:
.node(paymentId) { nodeQuery: NodeQuery ->
nodeQuery.onCheckout { checkoutQuery: CheckoutQuery ->
checkoutQuery
.createdAt()
.updatedAt()
.completedAt()
.email()
.ready()
.order {
it.orderNumber()
}
}
}
在上面的代码中,我总是ready=true(无论我是否购买了产品)。 ready 字段在 retryHandler 函数中使用。
RetryHandler.exponentialBackoff(500, TimeUnit.MILLISECONDS, 1.2f)
.whenResponse(
response -> ((Storefront.Payment) ((GraphResponse<Storefront.QueryRoot>) response).data().getNode()).getReady() == false
)
.maxCount(12)
.build()
- 2.2,我得到 order=null。我需要 orderNumber 才能显示,我该如何获得呢?
================================================ ====================
预期行为:
-
在第 1 点,可能是输入错误,而不是
paymentId,它必须显示checkoutId。因为这会让开发人员感到困惑。 - 第2点,必须返回需要的数据。
-
第2.1点,下单成功后必须更改
ready字段。 -
在第 2.2 点中,
order字段不能为空。
【问题讨论】:
标签: shopify shopify-app shopify-mobile-buy-sdk