Logo
Section 1 / 2

创建和更新卡产品

了解卡片产品及其创建和更新方法。

导入

创建和更新卡产品

了解卡片产品及其创建和更新方法。

卡产品 定义了 Marqeta 卡的行为和功能。它定义了卡片的属性,并提供有关其使用方式的信息。同时,它允许我们指定卡片可以使用的具体渠道,例如在 ATM、销售点(POS)以及电子商务网站上使用。

除了卡产品对象外,我们还可以在卡对象中定义属性。如果存在多个定义,卡对象中的定义将优先于卡产品对象中的定义。

在本课程中,我们将学习如何创建和更新一个卡产品。

创建卡产品

我们可以通过向 {BASE_URL}/cardproducts 端点发送 POST 请求来创建一个卡产品。我们可以在请求体中提供卡产品的基本信息,也可以使用 config 对象提供配置信息。这些信息定义了卡产品的功能和行为。

请求参数

端点的请求参数如下表所示:

参数类型必填/可选描述
name字符串必填卡产品的名称长度:1–40 个字符
start_date日期时间必填卡产品的激活日期格式:yyyy-MM-dd注意:如果开始日期已过且 active 状态设置为 false,则卡片不会被激活。
token字符串可选卡产品的唯一标识符长度:1–36 个字符注意:若未指定,系统将自动生成。该值一旦设定后不可更改。
active布尔值可选卡产品的状态默认值:true
end_date日期时间可选卡产品保持活跃的截止日期格式:yyyy-MM-dd
config对象可选包含卡产品特性的配置信息

注意: 有关 config 对象的详细信息,请参阅附录中的 附加参数与响应字段 一节。

点击下方代码框中的“运行”按钮查看输出结果。

1// 导入库 2import fetch from "node-fetch" 3 4// 定义端点 URL 5const endpointUrl = new URL('{{BASE_URL}}cardproducts'); 6 7const tokens = '{{APPLICATION_TOKEN}}:{{ADMIN_ACCESS_TOKEN}}' 8const encoded = Buffer.from(tokens, 'ascii').toString('base64') 9 10const headerParameters = { 11 'Content-Type': 'application/json', 12 'Authorization': `Basic ${encoded}` 13}; 14 15// 定义请求体参数 16const bodyParameters = JSON.stringify({ 17 "name": "Basic", 18 "start_date": new Date(), 19 "config": { 20 "poi": { 21 "ecommerce": true, 22 "atm": true, 23 }, 24 } 25}); 26 27// 设置 API 调用选项 28const options = { 29 method: "POST", 30 headers: headerParameters, 31 body: bodyParameters 32}; 33 34// 发起 API 调用的函数 35async function createCardProduct() { 36 try { 37 const response = await fetch(endpointUrl, options); 38 // 输出响应 39 printResponse(response); 40 } catch (error) { 41 // 输出错误信息 42 printError(error); 43 } 44} 45 46// 调用函数发起 API 调用 47createCardProduct();

在上述代码中:

  • 第 5 行: 我们将端点 URL 存储在 endpointUrl 变量中。
  • 第 16–25 行: 我们在 bodyParameters 变量中添加了 name 和 start_date。我们将 ecommerce 属性设为 true,表示用户可以用于在线购物;将 atm 属性设为 true,表示用户可以在 ATM 上取现并在 POS 系统中接收资金。
  • 第 29 行: 我们将请求方法设为 POST,以创建一个新的卡产品。
  • 第 37 行: 我们使用 fetch 函数发起 API 调用。

响应字段

当代码成功执行时,输出将显示包含所有请求数据字段的完整卡产品对象。其中 token 字段被提取并保存为 CARD_PRODUCT_TOKEN,我们将在后续课程中使用该值进行操作。若失败,则会显示相应的错误信息。

上述端点的响应字段如下表所示:

字段名类型描述
token字符串卡产品的唯一标识符允许长度:1–36 个字符
active布尔值若卡产品在 Marqeta 上处于 ACTIVE 状态则为 true,否则为 false。
name字符串卡产品的名称。
created_time日期时间卡产品创建的时间(UTC 格式)。格式:yyyy-MM-ddThh:mm:ssZ
last_modified_time日期时间资源最后一次更新的时间(UTC 格式)。格式:yyyy-MM-ddThh:mm:ssZ
start_date日期时间卡产品变为 ACTIVE 的日期。
config对象包含卡产品特性的配置信息。配置内容根据项目设置返回。

更新卡产品

我们可以通过向 {BASE_URL}/cardproducts/{token} 端点发送 PUT 请求来更新一个卡产品。路径参数 {token} 指的是要更新的卡产品的令牌。我们还需要在请求体中指定希望更新的字段。

请求参数

端点的请求参数如下表所示:

参数类型必填/可选描述
token字符串必填要更新的卡产品的令牌注意:这是路径参数。

注意: 要了解可更新的字段,请参考 卡产品创建 的输入参数表。请注意,除了 token 外,其他所有字段均可更新,如表中所示。

在下面的代码中,我们将更改某个卡产品的 name。点击下方代码框中的“运行”按钮查看输出结果。

1// 导入库 2import fetch from "node-fetch" 3 4const tokens = '{{APPLICATION_TOKEN}}:{{ADMIN_ACCESS_TOKEN}}' 5const encoded = Buffer.from(tokens, 'ascii').toString('base64') 6 7const cardProductToken = '{{CARD_PRODUCT_TOKEN}}' 8 9// 定义端点 URL 10const endpointUrl = new URL(`{{BASE_URL}}cardproducts/${cardProductToken}`); 11 12const headerParameters = { 13 'Content-Type': 'application/json', 14 'Authorization': `Basic ${encoded}` 15}; 16 17// 定义请求体参数 18const bodyParameters = JSON.stringify({ 19 "name": "Basic Updated" 20}); 21 22// 设置 API 调用选项 23const options = { 24 method: "PUT", 25 headers: headerParameters, 26 body: bodyParameters 27}; 28 29// 发起 API 调用的函数 30async function updateCardProduct() { 31 try { 32 const response = await fetch(endpointUrl, options); 33 // 输出响应 34 printResponse(response); 35 } catch (error) { 36 // 输出错误信息 37 printError(error); 38 } 39} 40 41// 调用函数发起 API 调用 42updateCardProduct();

在上述代码中:

  • 第 10 行: 我们将端点 URL 存储在 endpointUrl 变量中,并将卡产品令牌作为路径参数添加。
  • 第 18–20 行: 我们在 bodyParameters 变量中添加了 name 字段。
  • 第 24 行: 我们将请求方法设为 PUT,以更新卡产品。
  • 第 32 行: 我们使用 fetch 函数发起 API 调用。

响应字段

当代码成功执行时,输出将显示与给定 token 对应的完整卡产品对象,包含所有请求的数据字段,包括刚刚更新的字段。若失败,则会显示相应的错误信息。

此端点的响应字段与创建卡产品时的响应字段相同。

React 中的 Marqeta API 集成

获取卡产品列表和详情