Я делаю WebCheckout . После этого я получаю обратный вызов этого обратного вызова Checkout.
Я пошел по пути, который был написан здесь .
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, это checkdId, пока будет получить в ответ на этот запрос .
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 (независимо от того, приобрел я продукт или нет). Поле готовности используется внутри функции 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
не должно быть нулевым.