Javascript Laravel出纳员—“;该客户没有附加的付款来源或默认付款方式。”;
我使用的是Laravel 5.8版和出纳10.7.1版 我想开始并收取用户注册时的每月订阅费 因此,我写入RegisterController.phpJavascript 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
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']
);