# alipay.trade.price.create(价格创建)
支持第三方代理调用:本接口支持第三方开发者代用户发起调用
## 通用场景
价格创建接口
### 公共请求参数
|参数英文名|类型|是否必选|长度/取值|描述|示例值|
|---|---|---|---|---|---|
|app_id|String|必选|32|支付宝分配给开发者的应用ID|2014072300007148|
|method|String|必选|128|接口名称|alipay.trade.price.create|
|format|String|可选|40|仅支持JSON|JSON|
|charset|String|必选|10|请求使用的编码格式,如utf-8,gbk,gb2312等|utf-8|
|sign_type|String|必选|10|商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2|RSA2|
|sign|String|必选|344|商户请求参数的签名串,详见[签名](https://opendocs.alipay.com/common/02khjm)|详见示例|
|timestamp|String|必选|19|发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"|2014-07-24 03:07:50|
|version|String|必选|3|调用的接口版本,固定为:1.0|1.0|
|app_auth_token|String|可选|40|详见[应用授权概述](https://opendocs.alipay.com/isv/10467/xldcyq)||
|biz_content|String|必选||请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档||
### 业务请求参数
|参数英文名|类型|是否必选|长度/取值|描述|示例值|
|---|---|---|---|---|---|
|unit_amount|Number|特殊可选|1000000000|单位金额,单位:分
**必选条件**
当 custom_unit_amount 为空时必选|1000|
|custom_unit_amount|CustomUnitAmount|特殊可选||自定义单价,当 unit_amount 为空时必选
**必选条件**
当 unit_amount 为空时必选||
|custom_unit_amount.enable|Boolean|必须|10|是否启用灵活定价,启用后可设置 preset、maximum、minimum 字段|true|
|custom_unit_amount.preset|Number|可选|32|预设的自定义价格(单位:分),灵活定价开启后可设置|88888|
|custom_unit_amount.maximum|Number|可选|32|可自定义的最大金额(单位:分),灵活定价开启后可设置|1000000000|
|custom_unit_amount.minimum|Number|可选|32|可自定义的最小金额(单位:分),灵活定价开启后可设置|100|
|product_id|String|特殊可选|32|商品id,通过商品创建接口获取;和product_data二选其一
**必选条件**
当未传入product_data时必选|202603230010000006783|
|product_data|ProductData|特殊可选||商品模型,可以通过该参数一并创建商品信息
**必选条件**
当未传入product_id时必选||
|product_data.name|String|必须|255|商品名称|Gold 会员|
|product_data.description|String|必须|255|商品描述|基础权益|
|product_data.metadata|String|可选|2000|商户需要保存在商品模型中的元数据|{"key":"value"}|
|recurring|RecurringConfig|可选||循环计价配置,用于订阅等场景||
|recurring.interval|String|必须|32|计价周期单位,和interval_count组合使用
**枚举值**
月:MONTH
年:YEAR
日:DAY|MONTH|
|recurring.interval_count|Number|必须|32|计价周期间隔,和interval组合使用|1|
|eligibility_type|String|可选|32|只有满足该类型的身份才可以购买。具体的枚举值待支付宝侧分配|"student"|
|eligibility_expire_time|String|可选|32|满足了eligibility_type的身份购买后,失效的时间。如3d = 3天, 3m = 3月|"3d"|
|metadata|String|可选|2000|商户需要保存在价格模型中的元数据|{"key":"value"}|
### 请求示例
#### 默认示例
##### java
```
package com.java.sdk.demo;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.AlipayConfig;
import com.alipay.api.domain.ProductData;
import com.alipay.api.domain.RecurringConfig;
import com.alipay.api.domain.CustomUnitAmount;
import com.alipay.api.request.AlipayTradePriceCreateRequest;
import com.alipay.api.response.AlipayTradePriceCreateResponse;
import com.alipay.api.domain.AlipayTradePriceCreateModel;
import com.alipay.api.FileItem;
import java.util.Base64;
import java.util.ArrayList;
import java.util.List;
public class AlipayTradePriceCreate {
public static void main(String[] args) throws AlipayApiException {
// 初始化SDK
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
// 构造请求参数以调用接口
AlipayTradePriceCreateRequest request = new AlipayTradePriceCreateRequest();
AlipayTradePriceCreateModel model = new AlipayTradePriceCreateModel();
// 设置单位金额
model.setUnitAmount(1000L);
// 设置自定义单价
CustomUnitAmount customUnitAmount = new CustomUnitAmount();
customUnitAmount.setEnable(true);
customUnitAmount.setMaximum(1000000000L);
customUnitAmount.setPreset(88888L);
customUnitAmount.setMinimum(100L);
model.setCustomUnitAmount(customUnitAmount);
// 设置商品id
model.setProductId("202603230010000006783");
// 设置商品信息
ProductData productData = new ProductData();
productData.setMetadata("{\"key\":\"value\"}");
productData.setName("Gold 会员");
productData.setDescription("基础权益");
model.setProductData(productData);
// 设置循环计价模型
RecurringConfig recurring = new RecurringConfig();
recurring.setIntervalCount(1L);
recurring.setInterval("MONTH");
model.setRecurring(recurring);
// 设置价格限定购买的身份类型
model.setEligibilityType("\"student\"");
// 设置指定身份购买后的时效时间
model.setEligibilityExpireTime("\"3d\"");
// 设置价格信息元数据
model.setMetadata("{\"key\":\"value\"}");
request.setBizModel(model);
// 第三方代调用模式下请设置app_auth_token
// request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
AlipayTradePriceCreateResponse response = alipayClient.execute(request);
System.out.println(response.getBody());
if (response.isSuccess()) {
System.out.println("调用成功");
} else {
System.out.println("调用失败");
// sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
// String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
// System.out.println(diagnosisUrl);
}
}
private static AlipayConfig getAlipayConfig() {
String privateKey = "<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->";
String alipayPublicKey = "<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->";
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey(privateKey);
alipayConfig.setFormat("json");
alipayConfig.setAlipayPublicKey(alipayPublicKey);
alipayConfig.setCharset("UTF-8");
alipayConfig.setSignType("RSA2");
return alipayConfig;
}
}
```
##### php
```
setBizContent(json_encode($model,JSON_UNESCAPED_UNICODE));
// 如果是第三方代调用模式,请设置app_auth_token(应用授权令牌)
$responseResult = $alipayClient->execute($request, null, "<-- 请填写应用授权令牌 -->", null);
$responseApiName = str_replace(".","_",$request->getApiMethodName())."_response";
$response = $responseResult->$responseApiName;
if(!empty($response->code)&&$response->code==10000){
echo("调用成功");
}
else{
echo("调用失败");
}
function getAlipayConfig()
{
$privateKey = '<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->';
$alipayPublicKey = '<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->';
$alipayConfig = new AlipayConfig();
$alipayConfig->setServerUrl('https://openapi.alipay.com/gateway.do');
$alipayConfig->setAppId('<-- 请填写您的AppId,例如:2019091767145019 -->');
$alipayConfig->setPrivateKey($privateKey);
$alipayConfig->setFormat('json');
$alipayConfig->setAlipayPublicKey($alipayPublicKey);
$alipayConfig->setCharset('UTF-8');
$alipayConfig->setSignType('RSA2');
return $alipayConfig;
}
```
##### csharp
```
using System;
using System.Collections.Generic;
using Aop.Api;
using Aop.Api.Request;
using Aop.Api.Response;
using Aop.Api.Domain;
using Aop.Api.Util;
namespace SdkDemoTest
{
public class AlipayTradePriceCreate
{
public static void Main(string[] args)
{
// 初始化SDK
IAopClient alipayClient = new DefaultAopClient(GetAlipayConfig());
// 构造请求参数以调用接口
AlipayTradePriceCreateRequest request = new AlipayTradePriceCreateRequest();
AlipayTradePriceCreateModel model = new AlipayTradePriceCreateModel();
// 设置单位金额
model.UnitAmount = 1000;
// 设置自定义单价
CustomUnitAmount customUnitAmount = new CustomUnitAmount();
customUnitAmount.Enable = true;
customUnitAmount.Maximum = 1000000000;
customUnitAmount.Preset = 88888;
customUnitAmount.Minimum = 100;
model.CustomUnitAmount = customUnitAmount;
// 设置商品id
model.ProductId = "202603230010000006783";
// 设置商品信息
ProductData productData = new ProductData();
productData.Metadata = "{\"key\":\"value\"}";
productData.Name = "Gold 会员";
productData.Description = "基础权益";
model.ProductData = productData;
// 设置循环计价模型
RecurringConfig recurring = new RecurringConfig();
recurring.IntervalCount = 1;
recurring.Interval = "MONTH";
model.Recurring = recurring;
// 设置价格限定购买的身份类型
model.EligibilityType = "\"student\"";
// 设置指定身份购买后的时效时间
model.EligibilityExpireTime = "\"3d\"";
// 设置价格信息元数据
model.Metadata = "{\"key\":\"value\"}";
request.SetBizModel(model);
// 第三方代调用模式下请设置app_auth_token
// request.PutOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
AlipayTradePriceCreateResponse response = alipayClient.Execute(request);
if(!response.IsError)
{
Console.WriteLine("调用成功");
}
else
{
Console.WriteLine("调用失败");
}
}
private static AlipayConfig GetAlipayConfig()
{
string privateKey = "<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->";
string alipayPublicKey = "<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->";
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.ServerUrl = "https://openapi.alipay.com/gateway.do";
alipayConfig.AppId = "<-- 请填写您的AppId,例如:2019091767145019 -->";
alipayConfig.PrivateKey = privateKey;
alipayConfig.Format = "json";
alipayConfig.AlipayPublicKey = alipayPublicKey;
alipayConfig.Charset = "UTF-8";
alipayConfig.SignType = "RSA2";
return alipayConfig;
}
}
}
```
##### http
```
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.price.create&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"unit_amount":1000,
"custom_unit_amount":{
"enable":true,
"maximum":1000000000,
"preset":88888,
"minimum":100
},
"product_id":"202603230010000006783",
"product_data":{
"metadata":"{\"key\":\"value\"}",
"name":"Gold 会员",
"description":"基础权益"
},
"recurring":{
"interval_count":1,
"interval":"MONTH"
},
"eligibility_type":"\"student\"",
"eligibility_expire_time":"\"3d\"",
"metadata":"{\"key\":\"value\"}"
}'
```
### 公共响应参数
|参数英文名|类型|是否必选|长度/取值|描述|示例值|
|---|---|---|---|---|---|
|code|String|必须|~|网关返回码,[详见文档](https://docs.open.alipay.com/common/105806)|40004|
|msg|String|必须|~|网关返回码描述,[详见文档](https://docs.open.alipay.com/common/105806)|Business Failed|
|sub_code|String|可选|~|业务返回码,参见具体的API接口文档||
|sub_msg|String|可选|~|业务返回码描述,参见具体的API接口文档||
|sign|String|必须|64|签名,[详见文档](https://docs.open.alipay.com/291/106074)|DZXh8eeTuAHoYE3w1J+POiPhfDxOYBfUNn1lkeT/V7P4zJdyojWEa6IZs6Hz0yDW5Cp/viufUb5I0/V5WENS3OYR8zRedqo6D+fUTdLHdc+EFyCkiQhBxIzgngPdPdfp1PIS7BdhhzrsZHbRqb7o4k3Dxc+AAnFauu4V6Zdwczo=|
### 业务响应参数
|参数英文名|类型|是否必选|长度/取值|描述|示例值|
|---|---|---|---|---|---|
|price_id|String|必须|32|价格实例id|202603230010000006783|
|product_id|String|必须|32|本次创建的商品或请求关联的商品id|202603230010000006783|
### 响应示例
#### 正常响应示例
```
{
"alipay_trade_price_create_response":{
"code":"10000",
"msg":"Success",
"price_id":"202603230010000006783",
"product_id":"202603230010000006783"
},
"sign":"ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}
```
#### 异常响应示例
```
{"alipay_trade_price_create_response":{"code":"20000","msg":"Service Currently Unavailable","sub_code":"isp.unknow-error","sub_msg":"系统繁忙"},"sign":"ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"}
```
### 业务错误码
|错误码|错误描述|解决方案|
|---|---|---|
|SYSTEM_ERROR|系统繁忙|服务器异常 可能发生了网络或者系统异常,导致服务调用失败,商户可以用同样的请求发起重试|
|INVALID_PARAMETER|参数有误|请根据接口返回的参数非法的具体错误信息,修改参数后进行重试|