Stripe
2026-03-24
新闻来源:网淘吧
围观:39
电脑广告
手机广告
购买adidas上京东官方旗舰店。
Stripe
通过托管的OAuth认证访问Stripe API。管理客户、订阅、发票、产品、价格,并处理支付。
快速开始
# 列出客户
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
基础URL
https://gateway.maton.ai/stripe/{原生API路径}
替换{原生API路径}为实际的Stripe API端点路径。网关会将请求代理到api.stripe.com并自动注入您的OAuth令牌。
认证
所有请求都需要在Authorization头部中包含Maton API密钥:
Authorization: Bearer $MATON_API_KEY
环境变量:将您的API密钥设置为MATON_API_KEY:
export MATON_API_KEY="您的API密钥"
获取您的API密钥
- 请登录或在maton.ai
- 前往maton.ai/settings
- 复制你的API密钥
连接管理
在以下地址管理你的Stripe OAuth连接:https://ctrl.maton.ai。
列出连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=stripe&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
创建连接
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'stripe'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
获取连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
响应:
{
"connection": {
"connection_id": "c3c82a73-4c86-4c73-8ebd-1f325212fde6",
"status": "ACTIVE",
"creation_time": "2026-02-01T06:04:02.431819Z",
"last_updated_time": "2026-02-10T22:40:01.061825Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "stripe",
"metadata": {}
}
}
在浏览器中打开返回的url以完成OAuth授权。
删除连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
指定连接
如果你有多个Stripe连接,请使用Maton-Connection标题:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', 'c3c82a73-4c86-4c73-8ebd-1f325212fde6')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
如果省略,网关将使用默认(最早)的活动连接。
API 参考
所有 Stripe API 端点都遵循此模式:
/stripe/v1/{资源}
余额
获取余额
GET /stripe/v1/balance
响应:
{
"object": "balance",
"available": [
{
"amount": 0,
"currency": "usd",
"source_types": {"card": 0}
}
],
"pending": [
{
"amount": 5000,
"currency": "usd",
"source_types": {"card": 5000}
}
]
}
列出余额交易
GET /stripe/v1/balance_transactions?limit=10
客户
列出客户
GET /stripe/v1/customers?limit=10
查询参数:
| 参数 | 描述 |
|---|---|
limit | 结果数量(1-100,默认值:10) |
starting_after | 用于分页的游标 |
结束于 | 反向分页游标 |
电子邮件 | 按电子邮件筛选 |
创建时间 | 按创建日期筛选 |
响应:
{
"object": "list",
"data": [
{
"id": "cus_TxKtN8Irvzx9BQ",
"object": "customer",
"email": "customer@example.com",
"name": null,
"balance": 0,
"currency": "usd",
"created": 1770765579,
"metadata": {}
}
],
"has_more": true,
"url": "/v1/customers"
}
获取客户
GET /stripe/v1/customers/{customer_id}
创建客户
POST /stripe/v1/customers
Content-Type: application/x-www-form-urlencoded
email=customer@example.com&name=John%20Doe&metadata[user_id]=123
更新客户
POST /stripe/v1/customers/{customer_id}
Content-Type: application/x-www-form-urlencoded
name=Jane%20Doe&email=jane@example.com
删除客户
DELETE /stripe/v1/customers/{customer_id}
产品
列出产品
GET /stripe/v1/products?limit=10
查询参数:
| 参数 | 描述 |
|---|---|
活跃 | 按活跃状态筛选 |
类型 | 按类型筛选:商品或服务 |
响应:
{
"object": "list",
"data": [
{
"id": "prod_TthCLBwTIXuzEw",
"object": "product",
"active": true,
"name": "高级套餐",
"description": "高级订阅",
"type": "service",
"created": 1769926024,
"metadata": {}
}
],
"has_more": true
}
获取产品
GET /stripe/v1/products/{product_id}
创建产品
POST /stripe/v1/products
Content-Type: application/x-www-form-urlencoded
name=高级套餐&description=高级订阅&type=service
更新产品
POST /stripe/v1/products/{product_id}
Content-Type: application/x-www-form-urlencoded
name=更新套餐&active=true
删除产品
DELETE /stripe/v1/products/{product_id}
价格
列出价格
GET /stripe/v1/prices?limit=10
查询参数:
| 参数 | 描述 |
|---|---|
活跃 | 按活跃状态筛选 |
产品 | 按产品ID筛选 |
类型 | 筛选:一次性或周期性 |
货币 | 按货币筛选 |
响应:
{
"object": "列表",
"data": [
{
"id": "price_1SvtoVDfFKJhF88gKJv2eSmO",
"object": "价格",
"active": true,
"currency": "美元",
"product": "prod_TthCLBwTIXuzEw",
"unit_amount": 1999,
"recurring": {
"interval": "月",
"interval_count": 1
},
"type": "周期性"
}
],
"has_more": true
}
获取价格
GET /stripe/v1/prices/{价格ID}
创建价格
POST /stripe/v1/prices
Content-Type: application/x-www-form-urlencoded
product=prod_XXX&unit_amount=1999¤cy=usd&recurring[interval]=month
更新价格
POST /stripe/v1/prices/{价格ID}
Content-Type: application/x-www-form-urlencoded
active=false
订阅
列出订阅
GET /stripe/v1/subscriptions?limit=10
查询参数:
| 参数 | 描述 |
|---|---|
客户 | 按客户ID筛选 |
价格 | 按价格ID筛选 |
状态 | 筛选:活跃、已取消、逾期等。 |
响应:
{
"object": "list",
"data": [
{
"id": "sub_1SzQDXDfFKJhF88gf72x6tDh",
"object": "subscription",
"customer": "cus_TxKtN8Irvzx9BQ",
"status": "active",
"current_period_start": 1770765579,
"current_period_end": 1773184779,
"items": {
"data": [
{
"id": "si_TxKtFWxlUW50cR",
"price": {
"id": "price_1RGbXsDfFKJhF88gMIShAq9m",
"unit_amount": 0
},
"quantity": 1
}
]
}
}
],
"has_more": true
}
获取订阅
GET /stripe/v1/subscriptions/{subscription_id}
创建订阅
POST /stripe/v1/subscriptions
Content-Type: application/x-www-form-urlencoded
customer=cus_XXX&items[0][price]=price_XXX
更新订阅
POST /stripe/v1/subscriptions/{subscription_id}
Content-Type: application/x-www-form-urlencoded
items[0][id]=si_XXX&items[0][price]=price_YYY
取消订阅
DELETE /stripe/v1/subscriptions/{subscription_id}
发票
列出发票
GET /stripe/v1/invoices?limit=10
查询参数:
| 参数 | 描述 |
|---|---|
customer | 按客户ID筛选 |
subscription | 按订阅ID筛选 |
status | 筛选条件:draft,open,paid,void,uncollectible |
响应:
{
"object": "list",
"data": [
{
"id": "in_1SzQDXDfFKJhF88g3nh4u2GS",
"object": "invoice",
"customer": "cus_TxKtN8Irvzx9BQ",
"amount_due": 0,
"amount_paid": 0,
"currency": "usd",
"status": "paid",
"subscription": "sub_1SzQDXDfFKJhF88gf72x6tDh",
"hosted_invoice_url": "https://invoice.stripe.com/...",
"invoice_pdf": "https://pay.stripe.com/invoice/.../pdf"
}
],
"has_more": true
}
获取发票
GET /stripe/v1/invoices/{invoice_id}
创建发票
POST /stripe/v1/invoices
Content-Type: application/x-www-form-urlencoded
customer=cus_XXX
完成发票
POST /stripe/v1/invoices/{invoice_id}/finalize
支付发票
POST /stripe/v1/invoices/{invoice_id}/pay
作废发票
POST /stripe/v1/invoices/{invoice_id}/void
费用
列出费用
GET /stripe/v1/charges?limit=10
查询参数:
| 参数 | 描述 |
|---|---|
客户 | 按客户ID筛选 |
payment_intent | 按支付意图筛选 |
响应:
{
"object": "list",
"data": [
{
"id": "ch_3SyXBvDfFKJhF88g1MHtT45f",
"object": "charge",
"amount": 5000,
"currency": "usd",
"customer": "cus_TuZ7GIjeZQOQ2m",
"paid": true,
"status": "succeeded",
"payment_method_details": {
"card": {
"brand": "mastercard",
"last4": "0833"
},
"type": "card"
}
}
],
"has_more": true
}
获取交易
GET /stripe/v1/charges/{charge_id}
创建交易
POST /stripe/v1/charges
Content-Type: application/x-www-form-urlencoded
amount=2000¤cy=usd&source=tok_XXX
支付意图
列出支付意图
GET /stripe/v1/payment_intents?limit=10
响应:
{
"object": "list",
"data": [
{
"id": "pi_3SyXBvDfFKJhF88g17PeHdpE",
"object": "payment_intent",
"amount": 5000,
"currency": "usd",
"customer": "cus_TuZ7GIjeZQOQ2m",
"status": "succeeded",
"payment_method": "pm_1SyXBpDfFKJhF88gmP3IjC8C"
}
],
"has_more": true
}
获取支付意图
GET /stripe/v1/payment_intents/{payment_intent_id}
创建支付意图
POST /stripe/v1/payment_intents
Content-Type: application/x-www-form-urlencoded
amount=2000¤cy=usd&customer=cus_XXX&payment_method_types[]=card
确认支付意向
POST /stripe/v1/payment_intents/{payment_intent_id}/confirm
取消支付意向
POST /stripe/v1/payment_intents/{payment_intent_id}/cancel
支付方式
列出支付方式
GET /stripe/v1/payment_methods?customer=cus_XXX&type=card
获取支付方式
GET /stripe/v1/payment_methods/{payment_method_id}
关联支付方式
POST /stripe/v1/payment_methods/{payment_method_id}/attach
Content-Type: application/x-www-form-urlencoded
customer=cus_XXX
解除关联支付方式
POST /stripe/v1/payment_methods/{payment_method_id}/detach
优惠券
列出优惠券
GET /stripe/v1/coupons?limit=10
获取优惠券
GET /stripe/v1/coupons/{coupon_id}
创建优惠券
POST /stripe/v1/coupons
Content-Type: application/x-www-form-urlencoded
percent_off=25&duration=once
删除优惠券
DELETE /stripe/v1/coupons/{coupon_id}
退款
列出退款
GET /stripe/v1/refunds?limit=10
获取退款
GET /stripe/v1/refunds/{refund_id}
创建退款
POST /stripe/v1/refunds
Content-Type: application/x-www-form-urlencoded
charge=ch_XXX&amount=1000
分页
Stripe 使用基于游标的分页,参数包括starting_after和ending_before:
GET /stripe/v1/customers?limit=10&starting_after=cus_XXX
响应内容包括:
{
"object": "list",
"data": [...],
"has_more": true,
"url": "/v1/customers"
}
将最后一项的ID用作starting_after以获取下一页。
代码示例
JavaScript
const response = await fetch(
'https://gateway.maton.ai/stripe/v1/customers?limit=10',
{
headers: {
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
}
}
);
const data = await response.json();
console.log(data.data);
Python
import os
import requests
response = requests.get(
'https://gateway.maton.ai/stripe/v1/customers',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
params={'limit': 10}
)
data = response.json()
for customer in data['data']:
print(f"{customer['id']}: {customer['email']}")
注意事项
- Stripe API 在 POST 请求中使用
application/x-www-form-urlencoded格式(而非 JSON) - 金额以最小货币单位表示(例如,美元以美分为单位)
- ID 以特定前缀开头:
cus_(客户),prod_(产品),价格_(价格),订阅_(订阅),发票_(发票),扣费_(扣费),支付意向_(支付意向) - 时间戳为Unix时间戳
- 重要提示:使用curl命令时,若URL中包含方括号,请使用
curl -g以禁用通配符解析 - 重要提示:当将curl输出通过管道传递给
jq或其他命令时,环境变量(如$MATON_API_KEY在某些shell环境中可能无法正确展开
错误处理
| 状态码 | 含义 |
|---|---|
| 400 | 请求无效或参数错误 |
| 401 | Maton API密钥无效或缺失 |
| 402 | 银行卡被拒或需要支付 |
| 404 | 未找到资源 |
| 429 | 请求频率受限 |
| 500 | Stripe内部错误 |
故障排除:API密钥问题
- 请检查
MATON_API_KEY环境变量已设置:
echo $MATON_API_KEY
- 通过列出连接来验证API密钥是否有效:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
故障排除:无效的应用名称
- 确保你的URL路径以
stripe开头。例如:
- 正确:
https://gateway.maton.ai/stripe/v1/customers - 错误:
https://gateway.maton.ai/v1/customers
资源
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Sag
下一篇:Marketing Mode


微信扫一扫,打赏作者吧~