# 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|参数有误|请根据接口返回的参数非法的具体错误信息,修改参数后进行重试|