php - Stripe 该客户没有附加付款来源
问题描述
我的 wordpress 有问题,我使用了 stripe,但我收到了以下错误消息:“此客户没有附加的付款来源”,但我不明白为什么。在开发环境中我没有问题,现在在产品中我有这个问题。有关信息,我使用卡号 4242 4242 4242 4242 进行测试。
非常感谢你的帮助
if(isset($_POST['action']) && $_POST['action'] == 'stripe' && wp_verify_nonce($_POST['stripe_nonce'], 'stripe-nonce')) {
global $stripe_options, $post;
// load the stripe libraries
require_once(STRIPE_BASE_DIR . '/init.php');
// retrieve the token generated by stripe.js
$token = $_POST['stripeToken'];
$amount = base64_decode($_POST['amount'])*100;
$email = $_POST['email'];
$plan_nickname = $_POST['plan_nickname'];
$plan_id = $_POST['plan_id'];
$nom = $_POST['name'];
$prenom = $_POST['prenom'];
$adresse = $_POST['address-line1'];
$ville = $_POST['address-city'];
$zip = $_POST['address-zip'];
// check if we are using test mode
if(isset($stripe_options['test_mode']) && $stripe_options['test_mode']) {
$secret_key = $stripe_options['test_secret_key'];
} else {
$secret_key = $stripe_options['live_secret_key'];
}
// attempt to charge the customer's card
try {
\Stripe\Stripe::setApiKey($secret_key);
$product = \Stripe\Product::create([
'name' => $stripe_options['product_name'],
'type' => 'service',
]);
$plan = \Stripe\Plan::create([
'product' => $stripe_options['product_key'],
'nickname' => $plan_nickname,
'interval' => 'month',
'currency' => 'eur',
'amount' => $amount,
]);
$customer = \Stripe\Customer::create([
'email' => $email,
'source' => $token,
'description' => $plan_nickname,
]);
$subscription = \Stripe\Subscription::create([
'customer' => $customer->id,
'items' => [['plan' => $plan_id]],
]);
// redirect on successful payment
$redirect = add_query_arg('payment', 'paid', $_POST['redirect']);
} catch (Exception $e) {
// redirect on failed payment
//$redirect = add_query_arg('payment', 'failed', $_POST['redirect_failed']);
var_dump($e);
}
// redirect back to our previous page with the added query variable
wp_redirect($redirect); exit;
}
}
解决方案
查看 Stripe 上的计划。如果计划有试用期,您需要创建带有试用期的订阅。我正在使用 laravel 收银员和 react-stripe-checkout 这对我有用:
$user->newSubscription('main', 'basic')
->trialDays(30)
->create($request->token);
推荐阅读
- grails - 如何在 grails 响应中添加状态消息
- javascript - getScript,连续加载多个脚本?
- if-statement - if(表达式)VS AHK中的“传统If”
- highcharts - Highcharts - 如何在面积图上显示中间值
- node.js - nodejs服务器无法从外部访问
- python - 如何使用多处理模块杀死进程?
- jquery - 将输入中的所有数据价格与 jquery 中可用的属性相加
- javascript - 使用 Sequelize 按日期查询时间戳
- json - 在 jq 中组合和重新设置多个对象
- python - 昨天这工作,但今天它不是