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

ASP.NET Core环境下无.NET SDK时创建PayPal产品及订阅的方案咨询

ASP.NET Core 集成 PayPal 订阅无SDK实现方案

即便没有对应 .net 官方SDK,你可以直接通过HTTP请求调用PayPal公开的REST API完成产品、计划创建及完整订阅流程,具体实现路径如下:

1. 前期准备

  • 先在PayPal开发者后台获取客户端ID(Client ID)和客户端密钥(Client Secret),优先用沙箱环境调试,上线后再切换为生产环境凭证
  • 所有业务接口请求都需要先获取访问令牌(Access Token):调用PayPal OAuth2令牌接口,请求头用Basic认证,将客户端ID:客户端密钥做Base64编码传入,请求体固定传grant_type=client_credentials,返回的access_token即为后续所有接口的授权凭证,有效期约2小时,可缓存复用减少重复请求

2. 第一步:创建产品

调用PayPal产品创建接口,请求头携带Authorization: Bearer 你获取的access_token和Content-Type: application/json,核心请求参数示例:

{
  "name": "你的订阅产品名称",
  "description": "产品功能描述",
  "type": "SERVICE",
  "category": "SOFTWARE",
  "home_url": "你的产品官方页面地址"
}

接口调用成功后返回的id字段为产品ID,创建订阅计划时需要用到该值。

3. 第二步:创建订阅计划

调用PayPal订阅计划创建接口,同样携带授权头,核心请求参数示例:

{
  "product_id": "上一步获取的产品ID",
  "name": "订阅计划名称,例如月度高级会员",
  "description": "计划权益描述",
  "status": "ACTIVE",
  "billing_cycles": [
    {
      "frequency": {
        "interval_unit": "MONTH",
        "interval_count": 1
      },
      "tenure_type": "REGULAR",
      "sequence": 1,
      "total_cycles": 0,
      "pricing_scheme": {
        "fixed_price": {
          "value": "9.99",
          "currency_code": "USD"
        }
      }
    }
  ],
  "payment_preferences": {
    "auto_bill_outstanding": true,
    "setup_fee_failure_action": "CANCEL",
    "payment_failure_threshold": 3
  }
}

参数说明:

  • interval_unit 可选值有DAY/WEEK/MONTH/YEAR,对应按天/周/月/年结算
  • interval_count 代表每多少个周期结算一次,填1就是每个周期都结算
  • total_cycles 填0代表订阅自动续期,填固定数字代表达到对应结算次数后自动到期
  • payment_failure_threshold 代表连续多少次扣款失败后自动取消订阅
    调用成功后返回的id为订阅计划ID,后续引导用户开通订阅时使用该值即可。

4. ASP.NET Core 代码实现示例

你可以直接用框架自带的HttpClient发起请求,无需引入额外第三方包,简单封装参考:

// Program.cs 中注册PayPal专用HttpClient
builder.Services.AddHttpClient("PayPal", client =>
{
    // 沙箱环境填入对应基地址,生产环境替换为生产环境基地址
    client.BaseAddress = new Uri("PayPal API对应环境的基地址");
});

// 获取AccessToken的封装方法
public async Task<string> GetPayPalAccessTokenAsync(HttpClient httpClient, string clientId, string clientSecret)
{
    var authBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{clientId}:{clientSecret}"));
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authBase64);
    var requestContent = new FormUrlEncodedContent(new[]
    {
        new KeyValuePair<string, string>("grant_type", "client_credentials")
    });
    var response = await httpClient.PostAsync("v1/oauth2/token", requestContent);
    response.EnsureSuccessStatusCode();
    var tokenResult = await response.Content.ReadFromJsonAsync<PayPalTokenResult>();
    return tokenResult.AccessToken;
}

// AccessToken响应映射类
public class PayPalTokenResult
{
    [JsonPropertyName("access_token")]
    public string AccessToken { get; set; }
    [JsonPropertyName("expires_in")]
    public int ExpiresIn { get; set; }
}

后续创建产品、创建计划的请求都可以按照同样的逻辑,将获取到的access_token放到Bearer授权头中,向对应接口POST JSON参数即可完成调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:09:03