【问题标题】:Stripe not being called条纹未被调用
【发布时间】:2020-02-04 05:47:33
【问题描述】:

我正在尝试使用 Vue.js 作为我的前端来调用 Stripe 并创建一个令牌,然后将其发送到我的后端。我已经使用纯 HTML/JS 测试了所有内容,并且一切正常,我的问题在于尝试使用 Vue.js 我认为我的问题可能在于我如何绑定条带公钥。下面是我的代码,我的输出为零,我只是被重定向到同一页面,但在 URL 的末尾有?。没有别的,控制台什么也没有显示,也没有错误消息或任何东西发送到我的后端。

模板代码

还有更多但不相关

<div class="col-md-8">
    <card class='stripe-card col-md-8'
        :class='{ complete }'
        :stripe='stripeKey'
        :options='stripeOptions'
        @change='complete = $event.complete'
    />
    <button class='pay-with-stripe' @click='pay' :disabled='!complete'>Submit Payment Details</button>
   <br>
</div>

添加了相关的脚本部分

import { Card, createToken } from 'vue-stripe-elements-plus'
import axios from 'axios';

export default {
    components: { Card },
    data() {
        return {
            errorMessage: null,
            successMessage: null,
            complete: false,
            stripeKey: process.env.VUE_APP_STRIPE_PUB_KEY,
            stripeOptions: {
                // see https://stripe.com/docs/stripe.js#element-options for details
                hidePostalCode: true
            },
            current: {
                stripe: {
                    plan: null,
                    last4: null
                }
            },
        }
    },
    methods: {
        pay () {
            createToken().then(result =>  {
                axios.post('/billing/updateCard', {
                token: result.token,
                })
                .then(res => {
                if(res.data.success == true) {
                    this.successMessage = res.data.message
                    console.log(res.data.message)
                }
                if(res.data.success == false) {
                    this.errorMessage = res.data.message // Display error message from server if an error exists
                }
                })
                .catch((err) => {
                if(err) console.log(err)
                if(err) this.$router.push('/company/settings?success=false')
                })
            }); 
        }
    }
}
</script>

我通过执行&lt;p&gt;{{ stripeKey }}&lt;/p&gt; 并看到值显示来检查 API 密钥实际上是否在数据值中。所以是的,密钥在那里并且密钥有效(测试复制/粘贴到我的 HTML/JS 测试中)

【问题讨论】:

    标签: javascript vue.js stripe-payments


    【解决方案1】:
    created(){
       this.key=process.env.VUE_APP_STRIPE_KEY;
    }
    

    试试这个,我在我的项目中使用了这段代码并且它工作了......问题可能是当我们渲染 idk 时你的密钥尚未初始化。也许关键根本不是问题。试试这个,让我知道是否可行,我们将一起调试它。

    【讨论】:

    • 添加(将 this.key 更改为我的 this.stripeKey)以及使用? 重定向到相同 URL 的相同结果我认为这与我输入它们的方式无关键入脚本/模板,因为在卡片渲染之前和之后都使用&lt;p&gt; 输出。
    • 您的条带帐户日志中是否正在创建令牌?
    • 还添加console.log并将结果记录在createToken的.then中
    • 没有任何东西被发送到服务器,我提交了支付信息(使用测试 API 密钥的条带测试信息),它刷新了页面。没有其他事情发生,发送到后端根本没有发生,API 网关和计费服务报告它发生了。但是我知道 axios 配置正确,因为我可以从同一个 VUe 文件向测试端点发送请求。条纹方面没有创建任何内容,这让我认为这是 Vue 方面的问题。添加该 console.log 在 chrome 控制台中没有显示任何内容
    • 有两种可能性......要么永远不会创建令牌,要么永远不会在服务器上调用函数。要查看是否正在创建令牌,您应该转到您的条带帐户 > 开发人员部分 > 日志。
    猜你喜欢
    • 2017-08-27
    • 2019-12-31
    • 2023-03-25
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    相关资源
    最近更新 更多