Vuejs2 如何从在vue2中添加条带元素?
在Laravel 5.8/vuejs 2.6/vuex/mysql应用程序中,我需要从中添加条带元素, 为此,我在参考资料/views/index.blade.php中添加了一行:Vuejs2 如何从在vue2中添加条带元素?,vuejs2,stripe-payments,Vuejs2,Stripe Payments,在Laravel 5.8/vuejs 2.6/vuex/mysql应用程序中,我需要从中添加条带元素, 为此,我在参考资料/views/index.blade.php中添加了一行: @include('footer') <script src="{{ asset('js/jquery.min.js') }}"></script> <script src="{{ asset('js/bootstrap.bundle.min.js') }}"></scri
@include('footer')
<script src="{{ asset('js/jquery.min.js') }}"></script>
<script src="{{ asset('js/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('js/waves.min.js') }}"></script>
<script src="{{ asset('js/jquery.slimscroll.min.js') }}"></script>
<script src="{{ asset('js/powerange.js') }}"></script>
<script src="{{ asset('js/appInit.js') }}"></script>
<script src="{{ asset('js/app.js') }}{{ "?dt=".time() }}"></script>
<script src="https://js.stripe.com/v3/"></script>
</html>
@include('footer'))
在我的vue表单中,我在initStripe()方法中初始化stripe,该方法在装载事件中调用:
<template>
<div class="page-content col-md-offset-2">
<div class="sign-up container-fluid justify-content-center" style="max-width: 460px;">
<hr>
<hr>
<form action="/charge" method="post" id="payment-form">
<div class="form-row">
<label for="card-element">
Credit or debit card
</label>
<div id="card-element">
<!-- A Stripe Element will be inserted here. -->
</div>
<!-- Used to display form errors. -->
<div id="card-errors" role="alert"></div>
</div>
<button>Submit Payment</button>
</form>
<button type="button"
class="btn btn-outline-pink btn-round waves-effect waves-light cancel-btn mr-5" @click.prevent="cancelSelectedSubscription()">
<i :class="getHeaderIcon('cancel')"></i> Cancel
</button>
</div>
</div>
</template>
<script>
import {bus} from '../../../../app';
import appMixin from '../../../../appMixin';
import Vue from 'vue';
export default {
data: function () {
return {
is_page_loaded: false,
}
},
name: 'selectedSubscription',
created() {
if ( typeof this.currentLoggedUser.id != 'number' ) {
this.showPopupMessage("Access", 'Your session is expired !', 'error');
this.$store.commit('logout');
}
this.message = '';
}, // created) {
mounted() {
this.is_page_loaded = true
this.setAppTitle("Selected Subscription", 'Selected Subscription Details', bus);
this.initStripe();
}, // mounted() {
mixins: [appMixin],
methods: {
cancelSelectedSubscription() {
this.$router.push({path: '/personal-details'});
},
initStripe()
{
console.log("Stripe -1::")
// Create a Stripe client.
var stripe = Stripe('pk_test_NNNN');
console.log("Stripe -2::")
// Create an instance of Elements.
var elements = stripe.elements();
console.log("Stripe -3::")
// Custom styling can be passed to options when creating an Element.
// (Note that this demo uses a wider set of styles than the guide below.)
var style = {
base: {
color: '#32325d',
fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
fontSmoothing: 'antialiased',
fontSize: '16px',
'::placeholder': {
color: '#aab7c4'
}
},
invalid: {
color: '#fa755a',
iconColor: '#fa755a'
}
};
// Create an instance of the card Element.
var card = elements.create('card', {style: style});
console.log("Stripe -4::")
// Add an instance of the card Element into the `card-element` <div>.
card.mount('#card-element');
// Handle real-time validation errors from the card Element.
card.addEventListener('change', function (event) {
var displayError = document.getElementById('card-errors');
if (event.error) {
displayError.textContent = event.error.message;
} else {
displayError.textContent = '';
}
});
console.log("Stripe -5::")
// Handle form submission.
var form = document.getElementById('payment-form');
form.addEventListener('submit', function (event) {
event.preventDefault();
stripe.createToken(card).then(function (result) {
if (result.error) {
// Inform the user if there was an error.
var errorElement = document.getElementById('card-errors');
errorElement.textContent = result.error.message;
} else {
// Send the token to your server.
this.stripeTokenHandler(result.token);
}
});
});
}, // initStripe() {
// Submit the form with the token ID.
stripeTokenHandler(token) {
// Insert the token ID into the form so it gets submitted to the server
var form = document.getElementById('payment-form');
alert( "stripeTokenHandler form::"+var_dump(form) )
var hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'stripeToken');
hiddenInput.setAttribute('value', token.id);
form.appendChild(hiddenInput);
// Submit the form
form.submit();
},
}, // methods: {
computed: {
currentLoggedUser() {
return this.$store.getters.currentLoggedUser;
},
...
} //computed: {
}
</script>
<style lang="css">
/**
* The CSS shown here will not be introduced in the Quickstart guide, but shows
* how you can use CSS to style your Element's container.
*/
.StripeElement {
box-sizing: border-box;
height: 40px;
padding: 10px 12px;
border: 1px solid transparent;
border-radius: 4px;
background-color: white;
box-shadow: 0 1px 3px 0 #e6ebf1;
-webkit-transition: box-shadow 150ms ease;
transition: box-shadow 150ms ease;
}
.StripeElement--focus {
box-shadow: 0 1px 3px 0 #cfd7df;
}
.StripeElement--invalid {
border-color: #fa755a;
}
.StripeElement--webkit-autofill {
background-color: #fefde5 !important;
}
</style>
信用卡还是借记卡
付款
取消
从“../../../../app”导入{bus};
从“../../../../appMixin”导入appMixin;
从“Vue”导入Vue;
导出默认值{
数据:函数(){
返回{
是否加载页面:false,
}
},
名称:“selectedSubscription”,
创建(){
if(this.currentLoggedUser.id的类型!=“number”){
this.showPopupMessage(“访问”,“您的会话已过期!”,“错误”);
此.store.commit('logout');
}
this.message='';
},//已创建){
安装的(){
this.is_page_loaded=true
此.setAppTitle(“选定订阅”,“选定订阅详细信息”,总线);
this.initStripe();
},//mounted(){
mixin:[appMixin],
方法:{
cancelSelectedSubscription(){
这是.$router.push({path:'/personal details'});
},
initStripe()
{
log(“条带-1::”)
//创建条带客户端。
变量条带=条带('pk_test_NNNN');
log(“条带-2::”)
//创建元素的实例。
var elements=stripe.elements();
log(“条带-3::”)
//创建元素时,可以将自定义样式传递给选项。
//(请注意,此演示使用的样式集比下面的指南更广泛。)
变量样式={
基数:{
颜色:“#32325d”,
fontFamily:“新赫尔维蒂卡”,赫尔维蒂卡,无衬线,
fontSmoothing:'抗锯齿',
fontSize:'16px',
“::占位符”:{
颜色:“#aab7c4”
}
},
无效:{
颜色:“#fa755a”,
iconColor:“#fa755a”
}
};
//创建卡元素的实例。
var card=elements.create('card',{style:style});
log(“条带-4::”)
//将card元素的实例添加到“card元素”中。
卡。挂载(“#卡元素”);
//处理来自卡元素的实时验证错误。
card.addEventListener('change',函数(事件){
var displayError=document.getElementById('card-errors');
if(event.error){
displayError.textContent=event.error.message;
}否则{
displayError.textContent='';
}
});
log(“条带-5::”)
//处理表格提交。
var form=document.getElementById('payment-form');
表单.addEventListener('submit',函数(事件){
event.preventDefault();
stripe.createToken(卡片).then(函数(结果){
if(result.error){
//如果出现错误,请通知用户。
var errorElement=document.getElementById('card-errors');
errorElement.textContent=result.error.message;
}否则{
//将令牌发送到服务器。
this.stripeTokenHandler(result.token);
}
});
});
},//initStripe(){
//提交带有令牌ID的表单。
stripeTokenHandler(令牌){
//将令牌ID插入表单,以便将其提交到服务器
var form=document.getElementById('payment-form');
警报(“stripeTokenHandler表单::”+var_转储(表单))
var hiddenInput=document.createElement('input');
setAttribute('type','hidden');
setAttribute('name','stripeToken');
hiddenInput.setAttribute('value',token.id);
表格.appendChild(hiddenInput);
//提交表格
表单提交();
},
},//方法:{
计算:{
currentLoggedUser(){
返回此。$store.getters.currentLoggedUser;
},
...
}//计算:{
}
/**
*此处显示的CSS将不会在《快速入门指南》中介绍,而是显示
*如何使用CSS设置元素容器的样式。
*/
.条纹元素{
框大小:边框框;
高度:40px;
填充:10px 12px;
边框:1px实心透明;
边界半径:4px;
背景色:白色;
盒影:0 1px 3px 0#e6ebf1;
-webkit过渡:盒影150ms轻松;
<div id="card-element">
<!-- A Stripe Element will be inserted here. -->
</div>
#card-element {
line-height: 1.5rem;
margin: 10px;
padding: 10px;
}
.__PrivateStripeElement {
min-width: 300px !important;
min-height: 40px !important;
color: $text_color;
}