我正在 react-native 应用程序中使用The Shopify Buy plugin进行访客结帐
但是我正面临这个问题(请参见下图)
我也参考了https://github.com/Shopify/js-buy-sdk/issues/518作为解决方案,但是我的代码中没有这类问题。
请提供任何帮助。
我的代码
import Client from 'shopify-buy';
const client = Client.buildClient({
storefrontAccessToken: my_token,
domain: my_domain
});
export default class App extends Component {
componentWillMount() {
client.checkout.create().then((res) => {
this.setState({
checkout: res,
});
});
}
_handleAddToBagBtn = (variantID) => {
const checkoutId = this.state.checkout.id;
const lineItemsToAdd = [{'variantID': variantID, quantity: 1}];
client.checkout.addLineItems(checkoutId, lineItemsToAdd).then((checkout) => {
console.warn(checkout.lineItems);
});
}
}
render() {
return (
<TouchableOpacity onPress={() => this._handleAddToBagBtn(variantID)} >Click Here</TouchableOpacity>
);
}
答案 0 :(得分:1)
我今天使用Storefont API遇到了这个问题,但如下解决了该问题。
您需要使用与变量关联的variantId
属性的Base64编码字符串,而不是直接使用graphql_api_id
数字值。
未编码,看起来像这样:gid://shopify/ProductVariant/12434084921391
。您可以从产品对象中获取它们,但也可以直接从数字variantId
中创建它们。
在您的代码中,更改此功能:
_handleAddToBagBtn = (variantId) => {
const checkoutId = this.state.checkout.id;
const lineItemsToAdd = [{
variantId: window.btoa(`gid://shopify/ProductVariant/${variantId}`),
quantity: 1
}];
client.checkout.addLineItems(checkoutId, lineItemsToAdd).then((checkout) = {
console.warn(checkout.lineItems);
});
}
请注意,我还将variantID
更改为variantId
,因为这是Shopify使用的标识符,而不是variantID
。
对于我来说,这消除了错误并返回了GraphQL模型。希望有帮助。
答案 1 :(得分:0)
在我看来,Client.buildClient()
正在兑现承诺。您应该执行以下操作:
const client = Client.buildClient({
storefrontAccessToken: my_token,
domain: my_domain
})
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
})
您可以检查是否收到有效的响应或错误,然后进行相应的操作。