您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
简介
通过变现功能,您可以针对“购买交易”向开发者发布退款。假设您是一家移动运营商,您向开发者提供了一个支付 API,以便他们向移动订阅者收取在应用内购买应用或内容的费用。每次订阅者使用 API 进行购买时,都算作一次购买交易。
购买交易可能会导致退款。例如,内容可能未交付,或者第三方对购买交易不满意。在这种情况下,开发者会向第三方退款。启用创收功能后,您便可以进行类似的退款。这对于收入分成计划尤其重要。
假设向移动订阅者退款的开发者为您的 API 产品购买了收益分成方案。假设该方案规定开发者应获得购买交易净价/总价的 70%。发布退款后,您实际上会撤消购买交易,也就是说,您会从开发者在退款应用月份(该月份可能与实际购买交易发生的月份不同)应得的付款中扣除 70%。
使用 Classic Edge 界面(仅限 Edge for Private Cloud)发布退款
您可以针对任何“成功”的购买交易(即 API 成功向第三方收费且您尚未针对该交易发放全额退款)发放退款。发布退款会导致系统创建具有父交易 ID 的退款交易,其中交易 ID 是购买交易的 ID。
您可以针对原始购买交易的全额或部分金额发放退款。您还可以多次发布部分退款,但退款总金额不得超过原始交易额。
如需发布退款,请执行以下操作:
- 在“创收”标签页中,选择“退款”。

系统会打开“退款”页面。

- 在“结算月份”下拉菜单中,选择购买交易发生的月份。然后点击“+ 退款”。
此页面会显示所选月份的所有成功购买交易的列表。

您可以按开发者名称过滤退款列表,也可以搜索实际交易。
如需按开发者过滤,请从“开发者”下拉菜单中选择相应开发者。此选项仅显示与所选开发者相关的交易的列表。

如需按交易 ID 进行过滤,请输入您要退款的原始购买交易的交易 ID。此方法会返回相应 ID 的交易。

- 选中要退款的交易所在行中的“选择”框。
- 在“类型”下拉菜单中选择“全部”或“部分”。
如果您选择“全部”,系统将退还购买交易的总金额。如果您选择“部分”,系统将退还购买交易的部分金额。
如果您选择“部分”,请在“金额”字段中输入部分退款金额。您只能退还不超过购买交易总金额的款项。如果您已发布部分退款,则只能输入不超过购买交易剩余金额的金额。此外,如果原始购买交易同时包含总价和净价,您还需要说明要退款的部分金额是总价还是净价。

- 点击“保存”以处理退款(或点击“取消”以取消)。
如果结算月份仍处于开放状态,退款将记入原始购买交易的月份;否则,退款将记入当前日期。
对于部分退款,系统会处理部分金额的退款,并根据部分金额占总金额的比例扣除相应比例的收入分成。在上述部分退款示例中,部分退款金额为总价的 0.50/1.12 = 45%,因此将扣除开发者收益分成的 45%。
在界面中查看退款是否已处理
您可以在“退款”页面顶部选择结算月份,以确定退款是否已处理。如果结算月份仍处于开放状态,则为购买月份;如果结算月份已关闭,则为当前月份。系统会显示当月已过账的所有退款的列表。
使用 API 发布退款
如需发布退款,请向 /organizations/{org_name}/monetization-packages/{package_id}/refund-transactions 发出 POST 请求,其中 {package_id} 是退款所适用的 API 软件包的标识。
发出请求时,您需要以查询参数的形式指定:
- 要退款的购买交易的标识。
- 购买交易的收入类型(
GROSS或NET)。 - 退款金额。
- 说明退款原因的备注。
(可选)您可以将退款所适用的 API 软件包指定为网址参数。
如需查看您可以在退款请求中指定的网址参数的完整列表,请参阅退款配置设置。
例如,以下请求会针对购买交易发放退款。退款金额为购买交易总金额的 50%。
$ curl -H "Content-Type:application/json" -X POST \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages/payment/refund-transactions?revenueType=GROSS&refundAmount=0.5&parentTxId=abf50909-2492-4bf5-8704-ade05f4d43b3&transactionNote=Refund for purchase transaction" \
-u email:password
响应应类似如下所示(仅显示部分响应):
{ "application" : { ... }, "product" : [ { ... { "customAtt1Name" : "user", "description" : "Payment", "displayName" : "Payment", "id" : "payment", "name" : "payment", "organization" : { ... }, "status" : "CREATED", "transactionSuccessCriteria" : "Status=='200 OK'" } ], ... }, "currency" : "USD", "developer" : { ... "legalName" : "DEV ONE", "name" : "Dev One", "organization" : { ... }, ... }, "endTime" : "2013-09-01 21:59:59", "environment" : "PROD", "euroExchangeRate" : 0.8123, "gbpExchangeRate" : 0.6910, "grossPrice" : 0.5, "id" : "61f7eb88-f8cc-4cda-afd8-4a61fba3dd33", "isRevOnGrossOrNet" : "NET", "isVirtualCurrency" : false, "notes" : "Refund for purchase transaction", "itemDesc" : "test application", "netPrice" : 0.4464, "orgRevenueShareAmount" : 0.1339, "parentId" : "abf50909-2492-4bf5-8704-ade05f4d43b3", "pkgId" : "myorg@@@payment", "pkgRatePlanProductName" : "Payment", ... }, "ratePlanLevel" : "STANDARD", "revenueShareAmount" : 0.3125, "startTime" : "2013-09-01 21:59:59", "status" : "SUCCESS", "tax" : 0.0536, "taxModel" : "UNDISCLOSED", "txProviderStatus" : "SUCCESS", "type" : "REFUND", "usdExchangeRate" : 1.0724, "utcEndTime" : "2013-09-01 21:59:59", "utcStartTime" : "2013-09-01 21:59:59" }
API 的退款配置设置
您可以在退款请求中指定以下查询参数:
| 名称 | 说明 | 默认值 | 是否必需? |
|---|---|---|---|
monetizationPackageId |
退款所适用的 API 软件包。 |
不适用 | 否 |
parentTxId |
要退款的购买交易。 |
不适用 | 是 |
revenueType |
购买交易的收入类型( |
不适用 | 是 |
refundAmount |
退款金额。 |
不适用 | 是 |
transactionNote |
说明退款原因的文本备注。 |
不适用 | 是 |
后续步骤
了解如何安排创收相关作业,以及安排创收作业中自动安排的作业。