You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress非营利站点Stripe多课程每月捐赠订阅技术咨询

解决方案:WordPress + Stripe 实现自定义金额的每月课程捐赠订阅

一、最简方案:直接用Stripe后台配置

你之前可能没留意到,Stripe本身支持创建允许用户自定义金额的订阅价格,无需额外编码就能满足需求:

  • 登录Stripe后台,为每门课程创建独立的捐赠产品(比如“课程A月度捐赠”“课程B月度捐赠”)
  • 给每个产品添加订阅价格时,定价类型选「自定义金额」,可设置最低捐赠额(可选),计费周期选「每月」
  • 生成对应价格的支付链接或嵌入按钮,直接添加到WordPress的课程页面即可
  • 用户点击后可输入自定义的每月捐赠金额,完成订阅后每月自动扣款

二、自定义PHP开发方案(适合深度定制场景)

如果需要把捐赠订阅和WordPress用户系统、课程数据联动,可按以下步骤开发:

1. 准备工作

  • 安装Stripe PHP SDK:可通过Composer安装到WordPress主题目录,或直接引入SDK文件
  • 在Stripe后台获取Secret Key和Publishable Key,存到WordPress配置文件或自定义设置项中

2. 前端表单(添加到课程页面)

在课程页面模板或自定义短代码中插入表单:

<form id="donation-sub-form" method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
    <input type="hidden" name="action" value="create_course_donation_sub">
    <input type="hidden" name="course_id" value="<?php echo get_the_ID(); ?>"> <!-- 当前课程ID -->
    <label>每月捐赠金额:</label>
    <input type="number" name="amount" min="1" step="0.01" required>
    <button type="submit">确认订阅</button>
</form>

3. 后端处理逻辑(添加到主题functions.php)

// 处理订阅创建请求
add_action('admin_post_create_course_donation_sub', 'handle_course_donation_sub');
add_action('admin_post_nopriv_create_course_donation_sub', 'handle_course_donation_sub');

function handle_course_donation_sub() {
    // 参数校验
    if (!isset($_POST['amount'], $_POST['course_id'])) {
        wp_redirect(get_permalink($_POST['course_id']));
        exit;
    }

    $amount = (float)$_POST['amount'] * 100; // 转换为分(Stripe单位)
    $course_id = (int)$_POST['course_id'];
    $course_title = get_the_title($course_id);

    // 初始化Stripe
    require_once(get_template_directory() . '/vendor/stripe/stripe-php/init.php');
    \Stripe\Stripe::setApiKey('你的Stripe Secret Key');

    try {
        // 创建客户(关联当前WordPress用户)
        $customer = \Stripe\Customer::create([
            'email' => is_user_logged_in() ? wp_get_current_user()->user_email : '',
            'metadata' => ['course_id' => $course_id, 'course_title' => $course_title]
        ]);

        // 创建对应金额的订阅价格
        $price = \Stripe\Price::create([
            'product_data' => ['name' => "{$course_title} 月度捐赠"],
            'unit_amount' => $amount,
            'currency' => 'usd', // 替换为你的目标货币
            'recurring' => ['interval' => 'month']
        ]);

        // 创建订阅并跳转支付
        $subscription = \Stripe\Subscription::create([
            'customer' => $customer->id,
            'items' => [['price' => $price->id]],
            'payment_behavior' => 'default_incomplete',
            'expand' => ['latest_invoice.payment_intent'],
        ]);

        wp_redirect($subscription->latest_invoice->payment_intent->next_action->redirect_to_url->url);
        exit;
    } catch (\Stripe\Exception\ApiErrorException $e) {
        // 错误处理,跳回课程页面并提示
        wp_redirect(add_query_arg('error', urlencode($e->getMessage()), get_permalink($course_id)));
        exit;
    }
}

4. 后续优化

  • 配置Stripe Webhook,接收订阅成功/失败的通知,同步更新WordPress用户的捐赠记录或课程权限
  • 在Stripe后台可统一管理所有订阅的扣款、暂停、取消操作

三、插件辅助方案

如果不想自行编码,可尝试以下WordPress插件:

  • Stripe Payments:支持自定义订阅金额,通过短代码快速添加到课程页面,可单独配置每门课程的订阅规则
  • GiveWP + GiveWP Subscriptions Add-on:专注捐赠场景的插件,配合订阅扩展可实现自定义金额的月度捐赠,还能关联课程生成捐赠记录

内容的提问来源于stack exchange,提问作者Allen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 08:40:55