格子 - PAYMENT_STATUS_INPUT_NEEDED

Plaid - PAYMENT_STATUS_INPUT_NEEDED

我的购物车上有 Plaid 付款启动功能,但由于某种原因,所有付款的状态都是“PAYMENT_STATUS_INPUT_NEEDED”。

此外,如果在调用“plaid.Create”时省略“receivedRedirectUri”,我只能让 Plaid 工作。如果我包含它,Plaid 会抛出以下错误:

display_message: null
documentation_url: "https://plaid.com/docs/?ref=error#invalid-request-errors"
error_code: "INVALID_FIELD"
error_message: "oauth_continuation.link_token does not match session"
error_type: "INVALID_REQUEST"
request_id: "aseWi7KyiQwxuVE"
suggested_action: null

有人遇到过这个吗? Plaid 的文档似乎没有涵盖这一点。这就是我的函数的样子。

async plaidPay() {
    let amount = this.cart[0].item.amount * this.cart[0].quantity;
    console.log(window.location.href);
    
    const linkToken = await this.$axios({
    method: 'post',
    url: 'api/plaid-create-payment',
    data: { amount: amount },
    config: { headers: { 'Content-Type': 'application/json' }}
    })
    .then(res => {
        return res.data.link_token;
        
    })
    .catch(e => {
        console.log(e)
    })

    console.log(linkToken);

    const handler = window.Plaid.create({
        token: linkToken,
        onSuccess: (public_token, metadata) => {
            console.log('test 1');
            console.log(public_token);
            console.log(metadata);
        },
        onLoad: () => {
            console.log('test 2');
        },
        onExit: (err, metadata) => {
            console.log('test 3');
            console.log(err);
            console.log(metadata);
        },
        onEvent: (eventName, metadata) => {
            console.log('test 4');
            console.log(eventName);
            console.log(metadata);
        },
        //required for OAuth; if not using OAuth, set to null or omit:
        receivedRedirectUri: window.location.href,
    });

    handler.open();   
}

我认为这个问题正在由 Plaid 支持人员处理,但为了后代和那些谷歌搜索的利益,问题似乎是你在第一次启动时使用 receivedRedirectUri 启动 Link.只有在从 OAuth 流程返回后重新初始化 Link 时才应包含此字段。