Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Laravel出纳员—“;该客户没有附加的付款来源或默认付款方式。”;_Javascript_Php_Laravel_Stripe Payments_Laravel Cashier - Fatal编程技术网

Javascript Laravel出纳员—“;该客户没有附加的付款来源或默认付款方式。”;

Javascript Laravel出纳员—“;该客户没有附加的付款来源或默认付款方式。”;,javascript,php,laravel,stripe-payments,laravel-cashier,Javascript,Php,Laravel,Stripe Payments,Laravel Cashier,我使用的是Laravel 5.8版和出纳10.7.1版 我想开始并收取用户注册时的每月订阅费 因此,我写入RegisterController.php public function register(Request $request) { $this->validator($request->all())->validate(); DB::beginTransaction(); event(new Register

我使用的是Laravel 5.8版和出纳10.7.1版

我想开始并收取用户注册时的每月订阅费

因此,我写入RegisterController.php

public function register(Request $request)
    {
        $this->validator($request->all())->validate();


        DB::beginTransaction();

        event(new Registered($user = $this->create($request->all())));
        
        try {
            $newSubscription = $user->newSubscription('Standard Plan', 'price_1HJmedAuGtYRVrPxN9PNSPKi')->create($request->payment_method, ['email' => $user->email]);
        } catch ( IncompletePayment $exception ){
            DB::rollback();
            return redirect()->back()->with(['error_message' => $exception->getMessage()]);
        }

        DB::commit();

        $this->guard()->login($user);

        return $this->registered($request, $user)
                        ?: redirect($this->redirectPath());
    }
我还将以下内容添加到register.blade.php文件中:

<div class="flex flex-wrap mb-6">
                            <label for="card-element" class="block text-gray-700 text-sm font-bold mb-2">
                                Credit Card Info
                            </label>
                            <div id="card-element" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"></div>
                            <div id="card-errors" class="text-red-400 text-bold mt-2 text-sm font-medium"></div>
                        </div>

信用卡信息
以及:


常量条带=条带('pk_test_somekeysomekeyasdasd');
控制台日志(条带);
常量元素=stripe.elements();
const cardElement=elements.create('card');
挂载(“#卡元素”);
常量名称=document.getElementById('name');
const cardButton=document.getElementById('card-button');
const clientSecret=cardButton.dataset.secret;
设validCard=false;
const carderro=document.getElementById('card-errors');
cardElement.addEventListener('change',函数(事件){
if(event.error){
validCard=假;
carderro.textContent=event.error.message;
}否则{
validCard=真;
cardError.textContent='';
}
});
var form=document.getElementById('signup-form');
form.addEventListener('submit',异步(e)=>{
event.preventDefault();
const{paymentMethod,error}=wait stripe.createPaymentMethod(
“卡片”,卡片元素{
账单详细信息:{name:cardingname.value}
}
);
如果(错误){
//向用户显示“错误消息”。。。
console.log(错误);
}否则{
//该卡已成功验证。。。
var hiddenInput=document.createElement('input');
setAttribute('type','hidden');
setAttribute('name','payment_method');
hiddenInput.setAttribute('value',paymentMethod.id);
表格.appendChild(hiddenInput);
//提交表格
表单提交();
}
});
当我尝试注册新用户并使用CC details 4242进行测试收费时,我遇到了错误:

条带\Exception\InvalidRequestException此客户没有 附加的付款来源或默认付款方式


有什么问题?如何修复?

创建付款方式后,您需要:

<script src="https://js.stripe.com/v3/"></script>

    <script>
        const stripe = Stripe('pk_test_somekeysomekeyasdasd');
        console.log(stripe);
        const elements = stripe.elements();
        const cardElement = elements.create('card');
        cardElement.mount('#card-element');
        const cardHolderName = document.getElementById('name');
        const cardButton = document.getElementById('card-button');
        const clientSecret = cardButton.dataset.secret;
        let validCard = false;
        const cardError = document.getElementById('card-errors');
        cardElement.addEventListener('change', function(event) {
            
            if (event.error) {
                validCard = false;
                cardError.textContent = event.error.message;
            } else {
                validCard = true;
                cardError.textContent = '';
            }
        });
        var form = document.getElementById('signup-form');
        form.addEventListener('submit', async (e) => {
            event.preventDefault();
            const { paymentMethod, error } = await stripe.createPaymentMethod(
                'card', cardElement, {
                    billing_details: { name: cardHolderName.value }
                }
            );
            if (error) {
                // Display "error.message" to the user...
                console.log(error);
            } else {
                // The card has been verified successfully...
                var hiddenInput = document.createElement('input');
                hiddenInput.setAttribute('type', 'hidden');
                hiddenInput.setAttribute('name', 'payment_method');
                hiddenInput.setAttribute('value', paymentMethod.id);
                form.appendChild(hiddenInput);
                // Submit the form
                form.submit();
            }
        });
    
    </script>
$stripe->paymentMethods->attach(
  'pm_123',
  ['customer' => 'cus_abc']
);