通过JSAPI支付下单接口完成交易的创建,获取交易号,使用支付宝提供的小程序方法(my.tradePay)完成支付流程
## 公共请求参数
| **参数** | **类型** | **是否必选** | **最大长度** | **描述** | **示例值** |
| --- | --- | --- | --- | --- | --- |
| app_id | String | 必选 | 32 | 支付宝分配给开发者的应用ID | 2014072300007148 |
| method | String | 必选 | 128 | 接口名称 | alipay.trade.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://ideservice.alipay.com/cms/site/02khjm) | 详见示例 |
| timestamp | String | 必选 | 19 | 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" | 2014-07-24 03:07:50 |
| version | String | 必选 | 3 | 调用的接口版本,固定为:1.0 | 1.0 |
| notify_url | String | 可选 | 256 | 支付宝服务器主动通知商户服务器里指定的页面http/https路径。 | http://api.test.alipay.net/atinterface/receive_notify.htm |
| app_auth_token | String | 可选 | 40 | 详见[应用授权概述](https://ideservice.alipay.com/cms/site/04h2nx) | |
| biz_content | String | 必选 | | 请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档 | |
## 业务请求参数
收起所有属性
**out_trade_no**必选string(64)
【描述】商户订单号。
由商家自定义,64个字符以内,仅支持字母、数字、下划线且需保证在商户端不重复。
【示例值】20150320010101001
**total_amount**必选price(9)
【描述】订单总金额。
单位为元,精确到小数点后两位,取值范围:[0.01,100000000] 。
【示例值】88.88
**subject**必选string(256)
【描述】订单标题。
注意:不可使用特殊字符,如 /,=,& 等。
【示例值】Iphone6 16G
**product_code**必选string(64)
【描述】产品码。
商家和支付宝签约的产品码。
小程序场景支付:JSAPI_PAY。
【示例值】JSAPI_PAY
**op_app_id**必选string(32)
【描述】小程序支付中,商户实际经营主体的小程序应用的appid,也即最终唤起收银台支付所在的小程序的应用id
【注意事项】商户需要先在产品管理中心绑定该小程序appid,否则下单会失败
【示例值】2014072300007148
**以下参数 二选一 传入**
**buyer_id**string(28)
【描述】买家支付宝用户ID。
2088开头的16位纯数字,小程序场景下获取用户ID请参考:[用户授权](https://ideservice.alipay.com/cms/site/00arke);
注:交易的买家与卖家不能相同。
新商户建议使用buyer_open_id替代该字段。对于新商户,buyer_id字段未来计划逐步回收,存量商户可继续使用。如使用buyer_open_id,请确认 应用-开发配置-openid配置管理 已启用。无该配置项,可查看[openid配置申请](https://ideservice.alipay.com/cms/site/0ai9ok?pathHash=de631c06)。
【示例值】2088102146225135
**buyer_open_id**string(128)
【描述】买家支付宝用户唯一标识 详情可查看[openid简介](https://ideservice.alipay.com/cms/site/0ai2i6?pathHash=13dd5946)
【示例值】074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5
**op_buyer_open_id**特殊可选string(128)
【描述】买家支付宝用户唯一标识(商户实际经营主体的小程序应用关联的买家open_id)
【示例值】074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5
**seller_id**可选string(28)
【描述】卖家支付宝用户ID。
当需要指定收款账号时,通过该参数传入,如果该值为空,则默认为商户签约账号对应的支付宝用户ID。
收款账号优先级规则:门店绑定的收款账户>请求传入的seller_id>商户签约账号对应的支付宝用户ID;
注:直付通和机构间联场景下seller_id无需传入或者保持跟pid一致;
如果传入的seller_id与pid不一致,需要联系支付宝小二配置收款关系;
【示例值】2088102146225135
**body**可选string(128)
【描述】订单附加信息。
如果请求时传递了该参数,将在异步通知、对账单中原样返回,同时会在商户和用户的pc账单详情中作为交易描述展示
【示例值】Iphone6 16G
**goods_detail**可选GoodsDetail[]
【描述】订单包含的商品列表信息,json格式。
【示例值】[{"goods_id":"apple-01","goods_name":"ipad","goods_category":"7788230","price":"2000.00","quantity":"1"}]
**goods_id**必选string(32)
【描述】商品的编号,该参数传入支付券上绑定商品goods_id,倘若无支付券需要消费,该字段传入商品最小粒度的商品 ID(如:若商品有 sku 粒度,则传商户 sku 粒度的ID)。
当前接口的extend_params.trade_component_order_id 字段不为空时,该字段需与交易组件订单参数保持一致
【示例值】apple-01
**goods_name**必选string(256)
【描述】商品名称
【示例值】ipad
**quantity**必选number(32)
【描述】商品数量,支持小数,精确到小数点后两位
【示例值】1、1.50
**price**必选price(9)
【描述】商品单价,单位为元
【示例值】2000
**out_item_id**特殊可选string(100)
【描述】商家侧小程序商品ID,指商家提报给小程序商品库的商品。当前接口的extend_params.trade_component_order_id字段不为空时该字段必填,且与交易组件订单参数保持一致。了解小程序商品请参考:https://opendocs.alipay.com/mini/06uila?pathHash=63b6fba7
【示例值】outItem_01
**out_sku_id**特殊可选string(64)
【描述】商家侧小程序商品sku ID,多个sku时则需传入,无多个sku时无需传入。当前接口的extend_params.trade_component_order_id字段不为空时该字段必须与交易组件订单参数保持一致。
【示例值】outSku_01
**alipay_goods_id**可选string(32)
【描述】支付宝定义的统一商品编号
【示例值】20010001
**goods_category**可选string(24)
【描述】商品类目
【示例值】34543238
**categories_tree**可选string(128)
【描述】商品类目树,从商品类目根节点到叶子节点的类目id组成,类目id值使用|分割
【示例值】124868003|126232002|126252004
**body**可选string(1000)
【描述】商品描述信息
【示例值】特价手机
**show_url**可选string(400)
【描述】商品的展示地址
【示例值】http://www.alipay.com/xxx.jpg
**time_expire**可选string(32)
【描述】订单绝对超时时间。
格式为yyyy-MM-dd HH:mm:ss。
注:time_expire和timeout_express两者只需传入一个或者都不传,如果两者都传,优先使用time_expire。
【示例值】2021-12-31 10:05:00
**timeout_express**可选string(100)
【描述】订单相对超时时间。从交易创建时间开始计算。
该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
当面付场景默认值为3h。
注:time_expire和timeout_express两者只需传入一个或者都不传,如果两者都传,优先使用time_expire。
【示例值】90m
**extend_params**可选ExtendParams
【描述】业务扩展参数
【示例值】{“sys_service_provider_id”:” 2088511833207846”}
**sys_service_provider_id**可选string(64)
【描述】系统商编号
该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的PID
【示例值】2088511833207846
**hb_fq_num**可选string(5)
【描述】使用花呗分期要进行的分期数
【示例值】3
**hb_fq_seller_percent**可选string(3)
【描述】使用花呗分期需要卖家承担的手续费比例的百分值,传入100代表100%
【示例值】100
**trade_component_order_id**可选string(128)
【描述】公域商品交易业务订单ID
【示例值】2023060801502300000008810000005657
**business_params**可选BusinessParams
【描述】商户传入业务信息,具体值要和支付宝约定,应用于安全,营销等参数直传场景,格式为json格式
【示例值】{"data":"123"}
**enterprise_pay_info**可选string(1024)
【描述】因公付业务信息
【示例值】{"category_list":[{"price":"10.24","name":"餐饮服务","category":"3070401000000000000"}]}
**enterprise_pay_amount**可选string(32)
【描述】因公付金额
【示例值】10.00
**mc_create_trade_ip**可选string(128)
【描述】商户端创建订单的 IP,须上传正确的用户端外网 IP,支持 ipv4/ipv6 格式;
mc_create_trade_ip和mcCreateTradeIp(旧)参数描述相同,首选mc_create_trade_ip入参,请勿重复入参;
如已入参mcCreateTradeIp(旧),无需新增入参mc_create_trade_ip。
【示例值】127.0.0.1
**tiny_app_merchant_biz_type|小程序细分业务场景**可选string(64)
【描述】当需要在 商家平台(b.alipay.com)—数据中心 中查看对应业务场景下的数据明细可以通过该参数传入
支持传入的值:[小程序细分业务场景](https://ideservice.alipay.com/cms/site/08by8k?pathHash=96e03412)
【示例值】KX_SHOPPING
**passback_params**可选string(512)
【描述】公用回传参数。
如果请求时传递了该参数,支付宝会在异步通知时将该参数原样返回。
【示例值】merchantBizType%3d3C%26merchantBizNo%3d2016010101111
**discountable_amount**可选price(9)
【描述】可打折金额。
参与优惠计算的金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]。
如果同时传入了【可打折金额】、【不可打折金额】和【订单总金额】,则必须满足如下条件:【订单总金额】=【可打折金额】+【不可打折金额】。
如果订单金额全部参与优惠计算,则【可打折金额】和【不可打折金额】都无需传入。
【示例值】80.00
**undiscountable_amount**可选price(9)
【描述】不可打折金额。
不参与优惠计算的金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]。
如果同时传入了【可打折金额】、【不可打折金额】和【订单总金额】,则必须满足如下条件:【订单总金额】=【可打折金额】+【不可打折金额】。
如果订单金额全部参与优惠计算,则【可打折金额】和【不可打折金额】都无需传入。
【示例值】8.88
**store_id**可选string(32)
【描述】商户门店编号。
指商户创建门店时输入的门店编号。
【示例值】NJ_001
**alipay_store_id**可选string(32)
【描述】支付宝店铺编号。
指商户创建门店后支付宝生成的门店ID。
【示例值】2016041400077000000003314986
**enable_pay_channels**可选string(128)
【描述】指定支付渠道。
用户只能使用指定的渠道进行支付,多个渠道以逗号分割。
与disable_pay_channels互斥,支持传入的值:[渠道列表](https://ideservice.alipay.com/cms/site/009zkh)。
注:如果传入了指定支付渠道,则用户只能用指定内的渠道支付,包括营销渠道也要指定才能使用。该参数可能导致用户支付受限,慎用。
【示例值】pcredit,moneyFund,debitCardExpress
**disable_pay_channels**可选string(128)
【描述】禁用渠道,用户不可用指定渠道支付,多个渠道以逗号分割
注,与enable_pay_channels互斥
[渠道列表](https://ideservice.alipay.com/cms/site/009zkh)
【示例值】pcredit,moneyFund,debitCardExpress
**query_options**可选string[](1024)
【描述】返回参数选项。 商户通过传递该参数来定制需要额外返回的信息字段,数组格式。包括但不限于:["enterprise_pay_info","hyb_amount"]
【枚举值】
因公付金额信息: enterprise_pay_info
惠营宝回票金额信息: hyb_amount
【示例值】["enterprise_pay_info","hyb_amount"]
**agreement_sign_params**可选SignParams
【描述】签约参数。如果希望使用支付并签约,需要在这里传入签约信息。
**product_code|收单产品码**必选string(64)
【描述】商家和支付宝签约的产品码。 商家扣款产品传入固定值:GENERAL_WITHHOLDING
【示例值】GENERAL_WITHHOLDING
**personal_product_code**必选string(64)
【描述】个人签约产品码,商户和支付宝签约时确定。
【示例值】CYCLE_PAY_AUTH_P
**sign_scene**必选string(64)
【描述】协议签约场景,商户和支付宝签约时确定,商户可咨询技术支持。
【示例值】INDUSTRY|DIGITAL_MEDIA
**access_params**必选AccessParams
【描述】请按当前接入的方式进行填充,且输入值必须为文档中的参数取值范围。
**channel**必选string(20)
【描述】目前支持以下值:
1. ALIPAYAPP (钱包h5页面签约)
2. QRCODE(扫码签约)
3. QRCODEORSMS(扫码签约或者短信签约)
【示例值】ALIPAYAPP
**external_agreement_no**可选string(32)
【描述】商户签约号,代扣协议中标示用户的唯一签约号(确保在商户系统中唯一)。 格式规则:支持大写小写字母和数字,最长32位。 商户系统按需传入,如果同一用户在同一产品码、同一签约场景下,签订了多份代扣协议,那么需要指定并传入该值。
【示例值】test20190701
**external_logon_id**可选string(100)
【描述】用户在商户网站的登录账号,用于在签约页面展示,如果为空,则不展示
【示例值】13888888888
**sub_merchant**可选SignMerchantParams
【描述】此参数用于传递子商户信息,无特殊需求时不用关注。目前商户代扣、海外代扣、淘旅行信用住产品支持传入该参数(在销售方案中“是否允许自定义子商户信息”需要选是)。
**sub_merchant_id**可选string(20)
【描述】子商户的商户id
【示例值】2088123412341234
**sub_merchant_name**可选string(50)
【描述】子商户的商户名称
【示例值】滴滴出行
**sub_merchant_service_name**可选string(50)
【描述】子商户的服务名称
【示例值】滴滴出行免密支付
**sub_merchant_service_description**可选string(150)
【描述】子商户的服务描述
【示例值】免密付车费,单次最高500
**period_rule_params**可选PeriodRuleParams
【描述】周期管控规则参数period_rule_params,在签约周期扣款产品(如CYCLE_PAY_AUTH_P)时必传,在签约其他产品时无需传入。 周期扣款产品,会按照这里传入的参数提示用户,并对发起扣款的时间、金额、次数等做相应限制。
**period_type**必选string(10000)
【描述】周期类型period_type是周期扣款产品必填,枚举值为DAY和MONTH。
DAY即扣款周期按天计,MONTH代表扣款周期按自然月。
与另一参数period组合使用确定扣款周期,例如period_type为DAY,period=30,则扣款周期为30天;period_type为MONTH,period=3,则扣款周期为3个自然月。
自然月是指,不论这个月有多少天,周期都计算到月份中的同一日期。例如1月3日到2月3日为一个自然月,1月3日到4月3日为三个自然月。注意周期类型使用MONTH的时候,计划扣款时间execute_time不允许传28日之后的日期(可以传28日),以此避免有些月份可能不存在对应日期的情况。
【枚举值】
自然日: DAY
自然月: MONTH
【示例值】DAY
**period**必选number(32)
【描述】周期数period是周期扣款产品必填。与另一参数period_type组合使用确定扣款周期,例如period_type为DAY,period=90,则扣款周期为90天。
【示例值】3
**execute_time**必选string(10000)
【描述】首次执行时间execute_time是周期扣款产品必填,即商户发起首次扣款的时间。精确到日,格式为yyyy-MM-dd
结合其他必填的扣款周期参数,会确定商户以后的扣款计划。发起扣款的时间需符合这里的扣款计划。
【示例值】2019-01-23
**single_amount**必选price(32)
【描述】单次扣款最大金额single_amount是周期扣款产品必填,即每次发起扣款时限制的最大金额,单位为元。商户每次发起扣款都不允许大于此金额。
【示例值】10.99
**total_amount**可选price(16)
【描述】总金额限制,单位为元。如果传入此参数,商户多次扣款的累计金额不允许超过此金额。
【示例值】600
**total_payments**可选number(8)
【描述】总扣款次数。如果传入此参数,则商户成功扣款的次数不能超过此次数限制(扣款失败不计入)。
【示例值】12
**sign_notify_url**可选string(3000)
【描述】签约成功后商户用于接收异步通知的地址。如果不传入,签约与支付的异步通知都会发到外层notify_url参数传入的地址;如果外层也未传入,签约与支付的异步通知都会发到商户appid配置的网关地址。
【示例值】http://www.merchant.com/receiveSignNotify
## 常见请求示例
### 接入交易组件场景
#### cURL
```
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.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={
"out_trade_no":"20150320010101001",
"product_code":"JSAPI_PAY",
"op_app_id":"2014072300007148",
"total_amount":"88.88",
"extend_params":{
"trade_component_order_id":"2023060801502300000008810000005657"
},
"discountable_amount":"80.00",
"subject":"Iphone6 16G",
"body":"Iphone6 16G",
"buyer_id":"2088102146225135",
"buyer_open_id":"074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5",
"store_id":"NJ_001"
}'
```
#### 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.response.AlipayTradeCreateResponse;
import com.alipay.api.domain.AlipayTradeCreateModel;
import com.alipay.api.request.AlipayTradeCreateRequest;
import com.alipay.api.domain.ExtendParams;
import com.alipay.api.FileItem;
import java.util.Base64;
import java.util.ArrayList;
import java.util.List;
public class AlipayTradeCreate {
public static void main(String[] args) throws AlipayApiException {
// 初始化SDK
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
// 构造请求参数以调用接口
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
AlipayTradeCreateModel model = new AlipayTradeCreateModel();
// 设置商户订单号
model.setOutTradeNo("20150320010101001");
// 设置产品码
model.setProductCode("JSAPI_PAY");
// 设置小程序支付中
model.setOpAppId("2014072300007148");
// 设置订单总金额
model.setTotalAmount("88.88");
// 设置业务扩展参数
ExtendParams extendParams = new ExtendParams();
extendParams.setTradeComponentOrderId("2023060801502300000008810000005657");
model.setExtendParams(extendParams);
// 设置可打折金额
model.setDiscountableAmount("80.00");
// 设置订单标题
model.setSubject("Iphone6 16G");
// 设置订单附加信息
model.setBody("Iphone6 16G");
// uid参数未来计划废弃,存量商户可继续使用,新商户请使用openid。请根据应用-开发配置-openid配置选择支持的字段。
// model.setBuyerId("2088102146225135");
// 设置买家支付宝用户唯一标识
model.setBuyerOpenId("074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5");
// 设置商户门店编号
model.setStoreId("NJ_001");
request.setBizModel(model);
// 第三方代调用模式下请设置app_auth_token
// request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
AlipayTradeCreateResponse 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;
}
}
```
#### C#
```
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 AlipayTradeCreate
{
public static void Main(string[] args)
{
// 初始化SDK
IAopClient alipayClient = new DefaultAopClient(GetAlipayConfig());
// 构造请求参数以调用接口
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
AlipayTradeCreateModel model = new AlipayTradeCreateModel();
// 设置商户订单号
model.OutTradeNo = "20150320010101001";
// 设置产品码
model.ProductCode = "JSAPI_PAY";
// 设置小程序支付中
model.OpAppId = "2014072300007148";
// 设置订单总金额
model.TotalAmount = "88.88";
// 设置业务扩展参数
ExtendParams extendParams = new ExtendParams();
extendParams.TradeComponentOrderId = "2023060801502300000008810000005657";
model.ExtendParams = extendParams;
// 设置可打折金额
model.DiscountableAmount = "80.00";
// 设置订单标题
model.Subject = "Iphone6 16G";
// 设置订单附加信息
model.Body = "Iphone6 16G";
// uid参数未来计划废弃,存量商户可继续使用,新商户请使用openid。请根据应用-开发配置-openid配置选择支持的字段。
// model.BuyerId = "2088102146225135";
// 设置买家支付宝用户唯一标识
model.BuyerOpenId = "074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5";
// 设置商户门店编号
model.StoreId = "NJ_001";
request.SetBizModel(model);
// 第三方代调用模式下请设置app_auth_token
// request.PutOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
AlipayTradeCreateResponse 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;
}
}
}
```
#### 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;
}
```
### 不接入交易组件场景
#### cURL
```
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.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={
"out_trade_no":"20150320010101001",
"total_amount":"88.88",
"subject":"Iphone6 16G",
"timeout_express":"90m",
"buyer_id":"2088102146225135",
"buyer_open_id":"074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5",
"product_code":"JSAPI_PAY"
}'
```
#### 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.response.AlipayTradeCreateResponse;
import com.alipay.api.domain.AlipayTradeCreateModel;
import com.alipay.api.request.AlipayTradeCreateRequest;
import com.alipay.api.FileItem;
import java.util.Base64;
import java.util.ArrayList;
import java.util.List;
public class AlipayTradeCreate {
public static void main(String[] args) throws AlipayApiException {
// 初始化SDK
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
// 构造请求参数以调用接口
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
AlipayTradeCreateModel model = new AlipayTradeCreateModel();
// 设置商户订单号
model.setOutTradeNo("20150320010101001");
// 设置订单总金额
model.setTotalAmount("88.88");
// 设置订单标题
model.setSubject("Iphone6 16G");
// 设置订单相对超时时间
model.setTimeoutExpress("90m");
// uid参数未来计划废弃,存量商户可继续使用,新商户请使用openid。请根据应用-开发配置-openid配置选择支持的字段。
// model.setBuyerId("2088102146225135");
// 设置买家支付宝用户唯一标识
model.setBuyerOpenId("074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5");
// 设置产品码
model.setProductCode("JSAPI_PAY");
request.setBizModel(model);
// 第三方代调用模式下请设置app_auth_token
// request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
AlipayTradeCreateResponse 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;
}
}
```
#### C#
```
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 AlipayTradeCreate
{
public static void Main(string[] args)
{
// 初始化SDK
IAopClient alipayClient = new DefaultAopClient(GetAlipayConfig());
// 构造请求参数以调用接口
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
AlipayTradeCreateModel model = new AlipayTradeCreateModel();
// 设置商户订单号
model.OutTradeNo = "20150320010101001";
// 设置订单总金额
model.TotalAmount = "88.88";
// 设置订单标题
model.Subject = "Iphone6 16G";
// 设置订单相对超时时间
model.TimeoutExpress = "90m";
// uid参数未来计划废弃,存量商户可继续使用,新商户请使用openid。请根据应用-开发配置-openid配置选择支持的字段。
// model.BuyerId = "2088102146225135";
// 设置买家支付宝用户唯一标识
model.BuyerOpenId = "074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5";
// 设置产品码
model.ProductCode = "JSAPI_PAY";
request.SetBizModel(model);
// 第三方代调用模式下请设置app_auth_token
// request.PutOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
AlipayTradeCreateResponse 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;
}
}
}
```
#### 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;
}
```
### 默认示例
#### cURL
```
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.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={
"out_trade_no":"20150320010101001",
"total_amount":"88.88",
"subject":"Iphone6 16G",
"product_code":"JSAPI_PAY",
"seller_id":"2088102146225135",
"buyer_id":"2088102146225135",
"buyer_open_id":"074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5",
"op_app_id":"2014072300007148",
"body":"Iphone6 16G",
"goods_detail":[
{
"out_sku_id":"outSku_01",
"goods_name":"ipad",
"alipay_goods_id":"20010001",
"quantity":10,
"price":"2000",
"out_item_id":"outItem_01",
"goods_id":"apple-01",
"goods_category":"34543238",
"categories_tree":"124868003|126232002|126252004",
"body":"特价手机",
"show_url":"http://www.alipay.com/xxx.jpg"
}
],
"time_expire":"2021-12-31 10:05:00",
"timeout_express":"90m",
"extend_params":{
"sys_service_provider_id":"2088511833207846",
"hb_fq_seller_percent":"100",
"hb_fq_num":"3",
"trade_component_order_id":"2023060801502300000008810000005657"
},
"business_params":{
"enterprise_pay_info":"{\"category_list\":[{\"price\":\"10.24\",\"name\":\"餐饮服务\",\"category\":\"3070401000000000000\"}]}",
"enterprise_pay_amount":"10.00",
"tiny_app_merchant_biz_type":"KX_SHOPPING",
"mc_create_trade_ip":"127.0.0.1"
},
"passback_params":"merchantBizType%3d3C%26merchantBizNo%3d2016010101111",
"discountable_amount":"80.00",
"undiscountable_amount":"8.88",
"store_id":"NJ_001",
"alipay_store_id":"2016041400077000000003314986",
"enable_pay_channels":"pcredit,moneyFund,debitCardExpress",
"disable_pay_channels":"pcredit,moneyFund,debitCardExpress",
"query_options":[
"enterprise_pay_info",
"hyb_amount"
],
"agreement_sign_params":{
"sub_merchant":{
"sub_merchant_name":"滴滴出行",
"sub_merchant_service_name":"滴滴出行免密支付",
"sub_merchant_service_description":"免密付车费,单次最高500",
"sub_merchant_id":"2088123412341234"
},
"access_params":{
"channel":"ALIPAYAPP"
},
"period_rule_params":{
"period":3,
"total_amount":"600",
"execute_time":"2019-01-23",
"single_amount":"10.99",
"total_payments":12,
"period_type":"DAY"
},
"sign_notify_url":"http://www.merchant.com/receiveSignNotify",
"external_logon_id":"13888888888",
"personal_product_code":"CYCLE_PAY_AUTH_P",
"external_agreement_no":"test20190701",
"product_code":"GENERAL_WITHHOLDING",
"sign_scene":"INDUSTRY|DIGITAL_MEDIA"
},
"op_buyer_open_id":"074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5"
}'
```
#### 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.response.AlipayTradeCreateResponse;
import com.alipay.api.domain.SignParams;
import com.alipay.api.domain.PeriodRuleParams;
import com.alipay.api.domain.AlipayTradeCreateModel;
import com.alipay.api.domain.AccessParams;
import com.alipay.api.request.AlipayTradeCreateRequest;
import com.alipay.api.domain.SignMerchantParams;
import com.alipay.api.domain.ExtendParams;
import com.alipay.api.domain.GoodsDetail;
import com.alipay.api.domain.BusinessParams;
import com.alipay.api.FileItem;
import java.util.Base64;
import java.util.ArrayList;
import java.util.List;
public class AlipayTradeCreate {
public static void main(String[] args) throws AlipayApiException {
// 初始化SDK
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
// 构造请求参数以调用接口
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
AlipayTradeCreateModel model = new AlipayTradeCreateModel();
// 设置商户订单号
model.setOutTradeNo("20150320010101001");
// 设置订单总金额
model.setTotalAmount("88.88");
// 设置订单标题
model.setSubject("Iphone6 16G");
// 设置产品码
model.setProductCode("JSAPI_PAY");
// 设置卖家支付宝用户ID
model.setSellerId("2088102146225135");
// uid参数未来计划废弃,存量商户可继续使用,新商户请使用openid。请根据应用-开发配置-openid配置选择支持的字段。
// model.setBuyerId("2088102146225135");
// 设置买家支付宝用户唯一标识
model.setBuyerOpenId("074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5");
// 设置小程序支付中
model.setOpAppId("2014072300007148");
// 设置订单附加信息
model.setBody("Iphone6 16G");
// 设置订单包含的商品列表信息
List goodsDetail = new ArrayList();
GoodsDetail goodsDetail0 = new GoodsDetail();
goodsDetail0.setOutSkuId("outSku_01");
goodsDetail0.setGoodsName("ipad");
goodsDetail0.setAlipayGoodsId("20010001");
goodsDetail0.setQuantity(10L);
goodsDetail0.setPrice("2000");
goodsDetail0.setOutItemId("outItem_01");
goodsDetail0.setGoodsId("apple-01");
goodsDetail0.setGoodsCategory("34543238");
goodsDetail0.setCategoriesTree("124868003|126232002|126252004");
goodsDetail0.setBody("特价手机");
goodsDetail0.setShowUrl("http://www.alipay.com/xxx.jpg");
goodsDetail.add(goodsDetail0);
model.setGoodsDetail(goodsDetail);
// 设置订单绝对超时时间
model.setTimeExpire("2021-12-31 10:05:00");
// 设置订单相对超时时间
model.setTimeoutExpress("90m");
// 设置业务扩展参数
ExtendParams extendParams = new ExtendParams();
extendParams.setSysServiceProviderId("2088511833207846");
extendParams.setHbFqSellerPercent("100");
extendParams.setHbFqNum("3");
extendParams.setTradeComponentOrderId("2023060801502300000008810000005657");
model.setExtendParams(extendParams);
// 设置商户传入业务信息
BusinessParams businessParams = new BusinessParams();
businessParams.setEnterprisePayInfo("{\"category_list\":[{\"price\":\"10.24\",\"name\":\"餐饮服务\",\"category\":\"3070401000000000000\"}]}");
businessParams.setEnterprisePayAmount("10.00");
businessParams.setTinyAppMerchantBizType("KX_SHOPPING");
businessParams.setMcCreateTradeIp("127.0.0.1");
model.setBusinessParams(businessParams);
// 设置公用回传参数
model.setPassbackParams("merchantBizType%3d3C%26merchantBizNo%3d2016010101111");
// 设置可打折金额
model.setDiscountableAmount("80.00");
// 设置不可打折金额
model.setUndiscountableAmount("8.88");
// 设置商户门店编号
model.setStoreId("NJ_001");
// 设置支付宝店铺编号
model.setAlipayStoreId("2016041400077000000003314986");
// 设置指定支付渠道
model.setEnablePayChannels("pcredit,moneyFund,debitCardExpress");
// 设置禁用渠道
model.setDisablePayChannels("pcredit,moneyFund,debitCardExpress");
// 设置返回参数选项
List queryOptions = new ArrayList();
queryOptions.add("enterprise_pay_info");
queryOptions.add("hyb_amount");
model.setQueryOptions(queryOptions);
// 设置签约参数
SignParams agreementSignParams = new SignParams();
SignMerchantParams subMerchant = new SignMerchantParams();
subMerchant.setSubMerchantName("滴滴出行");
subMerchant.setSubMerchantServiceName("滴滴出行免密支付");
subMerchant.setSubMerchantServiceDescription("免密付车费,单次最高500");
subMerchant.setSubMerchantId("2088123412341234");
agreementSignParams.setSubMerchant(subMerchant);
AccessParams accessParams = new AccessParams();
accessParams.setChannel("ALIPAYAPP");
agreementSignParams.setAccessParams(accessParams);
PeriodRuleParams periodRuleParams = new PeriodRuleParams();
periodRuleParams.setPeriod(3L);
periodRuleParams.setTotalAmount("600");
periodRuleParams.setExecuteTime("2019-01-23");
periodRuleParams.setSingleAmount("10.99");
periodRuleParams.setTotalPayments(12L);
periodRuleParams.setPeriodType("DAY");
agreementSignParams.setPeriodRuleParams(periodRuleParams);
agreementSignParams.setSignNotifyUrl("http://www.merchant.com/receiveSignNotify");
agreementSignParams.setExternalLogonId("13888888888");
agreementSignParams.setPersonalProductCode("CYCLE_PAY_AUTH_P");
agreementSignParams.setExternalAgreementNo("test20190701");
agreementSignParams.setProductCode("GENERAL_WITHHOLDING");
agreementSignParams.setSignScene("INDUSTRY|DIGITAL_MEDIA");
model.setAgreementSignParams(agreementSignParams);
// 设置买家支付宝用户唯一标识(商户实际经营主体的小程序应用关联的买家open_id)
model.setOpBuyerOpenId("074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5");
request.setBizModel(model);
// 第三方代调用模式下请设置app_auth_token
// request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
AlipayTradeCreateResponse 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;
}
}
```
#### C#
```
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 AlipayTradeCreate
{
public static void Main(string[] args)
{
// 初始化SDK
IAopClient alipayClient = new DefaultAopClient(GetAlipayConfig());
// 构造请求参数以调用接口
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
AlipayTradeCreateModel model = new AlipayTradeCreateModel();
// 设置商户订单号
model.OutTradeNo = "20150320010101001";
// 设置订单总金额
model.TotalAmount = "88.88";
// 设置订单标题
model.Subject = "Iphone6 16G";
// 设置产品码
model.ProductCode = "JSAPI_PAY";
// 设置卖家支付宝用户ID
model.SellerId = "2088102146225135";
// uid参数未来计划废弃,存量商户可继续使用,新商户请使用openid。请根据应用-开发配置-openid配置选择支持的字段。
// model.BuyerId = "2088102146225135";
// 设置买家支付宝用户唯一标识
model.BuyerOpenId = "074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5";
// 设置小程序支付中
model.OpAppId = "2014072300007148";
// 设置订单附加信息
model.Body = "Iphone6 16G";
// 设置订单包含的商品列表信息
List goodsDetail = new List();
GoodsDetail goodsDetail0 = new GoodsDetail();
goodsDetail0.OutSkuId = "outSku_01";
goodsDetail0.GoodsName = "ipad";
goodsDetail0.AlipayGoodsId = "20010001";
goodsDetail0.Quantity = 10;
goodsDetail0.Price = "2000";
goodsDetail0.OutItemId = "outItem_01";
goodsDetail0.GoodsId = "apple-01";
goodsDetail0.GoodsCategory = "34543238";
goodsDetail0.CategoriesTree = "124868003|126232002|126252004";
goodsDetail0.Body = "特价手机";
goodsDetail0.ShowUrl = "http://www.alipay.com/xxx.jpg";
goodsDetail.Add(goodsDetail0);
model.GoodsDetail = goodsDetail;
// 设置订单绝对超时时间
model.TimeExpire = "2021-12-31 10:05:00";
// 设置订单相对超时时间
model.TimeoutExpress = "90m";
// 设置业务扩展参数
ExtendParams extendParams = new ExtendParams();
extendParams.SysServiceProviderId = "2088511833207846";
extendParams.HbFqSellerPercent = "100";
extendParams.HbFqNum = "3";
extendParams.TradeComponentOrderId = "2023060801502300000008810000005657";
model.ExtendParams = extendParams;
// 设置商户传入业务信息
BusinessParams businessParams = new BusinessParams();
businessParams.EnterprisePayInfo = "{\"category_list\":[{\"price\":\"10.24\",\"name\":\"餐饮服务\",\"category\":\"3070401000000000000\"}]}";
businessParams.EnterprisePayAmount = "10.00";
businessParams.TinyAppMerchantBizType = "KX_SHOPPING";
businessParams.McCreateTradeIp = "127.0.0.1";
model.BusinessParams = businessParams;
// 设置公用回传参数
model.PassbackParams = "merchantBizType%3d3C%26merchantBizNo%3d2016010101111";
// 设置可打折金额
model.DiscountableAmount = "80.00";
// 设置不可打折金额
model.UndiscountableAmount = "8.88";
// 设置商户门店编号
model.StoreId = "NJ_001";
// 设置支付宝店铺编号
model.AlipayStoreId = "2016041400077000000003314986";
// 设置指定支付渠道
model.EnablePayChannels = "pcredit,moneyFund,debitCardExpress";
// 设置禁用渠道
model.DisablePayChannels = "pcredit,moneyFund,debitCardExpress";
// 设置返回参数选项
List queryOptions = new List();
queryOptions.Add("enterprise_pay_info");
queryOptions.Add("hyb_amount");
model.QueryOptions = queryOptions;
// 设置签约参数
SignParams agreementSignParams = new SignParams();
SignMerchantParams subMerchant = new SignMerchantParams();
subMerchant.SubMerchantName = "滴滴出行";
subMerchant.SubMerchantServiceName = "滴滴出行免密支付";
subMerchant.SubMerchantServiceDescription = "免密付车费,单次最高500";
subMerchant.SubMerchantId = "2088123412341234";
agreementSignParams.SubMerchant = subMerchant;
AccessParams accessParams = new AccessParams();
accessParams.Channel = "ALIPAYAPP";
agreementSignParams.AccessParams = accessParams;
PeriodRuleParams periodRuleParams = new PeriodRuleParams();
periodRuleParams.Period = 3;
periodRuleParams.TotalAmount = "600";
periodRuleParams.ExecuteTime = "2019-01-23";
periodRuleParams.SingleAmount = "10.99";
periodRuleParams.TotalPayments = 12;
periodRuleParams.PeriodType = "DAY";
agreementSignParams.PeriodRuleParams = periodRuleParams;
agreementSignParams.SignNotifyUrl = "http://www.merchant.com/receiveSignNotify";
agreementSignParams.ExternalLogonId = "13888888888";
agreementSignParams.PersonalProductCode = "CYCLE_PAY_AUTH_P";
agreementSignParams.ExternalAgreementNo = "test20190701";
agreementSignParams.ProductCode = "GENERAL_WITHHOLDING";
agreementSignParams.SignScene = "INDUSTRY|DIGITAL_MEDIA";
model.AgreementSignParams = agreementSignParams;
// 设置买家支付宝用户唯一标识(商户实际经营主体的小程序应用关联的买家open_id)
model.OpBuyerOpenId = "074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5";
request.SetBizModel(model);
// 第三方代调用模式下请设置app_auth_token
// request.PutOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
AlipayTradeCreateResponse 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;
}
}
}
```
#### 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;
}
```
## 公共响应参数
| **参数** | **类型** | **是否必选** | **最大长度** | **描述** | **示例值** |
| --- | --- | --- | --- | --- | --- |
| code | String | 必选 | - | 网关返回码,[详见文档](https://ideservice.alipay.com/cms/site/02km9f) | 40004 |
| msg | String | 必选 | - | 网关返回码描述,[详见文档](https://ideservice.alipay.com/cms/site/02km9f) | Business Failed |
| sub_code | String | 可选 | - | 业务返回码,参见具体的API接口文档 | ACQ.TRADE_HAS_SUCCESS |
| sub_msg | String | 可选 | - | 业务返回码描述,参见具体的API接口文档 | 交易已被支付 |
| sign | String | 必选 | - | 签名,[详见文档](https://ideservice.alipay.com/cms/site/02kf5q) | DZXh8eeTuAHoYE3w1J+POiPhfDxOYBfUNn1lkeT/V7P4zJdyojWEa6IZs6Hz0yDW5Cp/viufUb5I0/V5WENS3OYR8zRedqo6D+fUTdLHdc+EFyCkiQhBxIzgngPdPdfp1PIS7BdhhzrsZHbRqb7o4k3Dxc+AAnFauu4V6Zdwczo= |
## 业务响应参数
**out_trade_no**必选string(64)
【描述】商户订单号
【示例值】20150423001001
**trade_no**必选string(64)
【描述】支付宝交易号
【示例值】2015042321001004720200028594
## 响应示例
### 正常示例
```
{
"alipay_trade_create_response": {
"code": "10000",
"msg": "Success",
"out_trade_no": "20150423001001",
"trade_no": "2015042321001004720200028594"
},
"sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}
```
### 异常示例
```
{
"alipay_trade_create_response": {
"code": "20000",
"msg": "Service Currently Unavailable",
"sub_code": "isp.unknow-error",
"sub_msg": "系统繁忙"
},
"sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}
```
## 公共错误码
[前往查看](https://ideservice.alipay.com/cms/site/02km9f)
## 业务错误码
| **错误码** | **错误描述** | **解决方案** |
| --- | --- | --- |
| ACQ.ACCESS_FORBIDDEN | 无权限使用接口 | 未签约对应的产品合约; 1、请校验传入的product_code参数是否正确; 2、确认请求商户是否签约了 [JSAPI支付](https://b.alipay.com/page/product-mall/product-detail/I1080300001000060370) 产品合约 |
| ACQ.BEYOND_PER_RECEIPT_SINGLE_RESTRICTION | 订单金额超过单笔限额 | 联系支付宝小二提高限额(联系电话:4007585858) |
| ACQ.BIZ_PRODUCT_NOT_ALLOWED | 公域订单场景下不支持使用该产品码 | 公域场交易需要切换使用JSAPI支付产品。1、请确认签约JSAPI支付产品;2、product_code改成JSAPI_PAY产品码 |
| ACQ.BUYER_ENABLE_STATUS_FORBID | 买家状态非法 | 用户联系支付宝小二,确认买家状态为什么非法 |
| ACQ.BUYER_NOT_EXIST | 买家不存在 | 确认买家账号信息传递是否正确,如果正确可联系支付宝小二,确认买家账号是否已经注销 |
| ACQ.BUYER_SELLER_EQUAL | 买卖家不能相同 | 更换买家重新付款 |
| ACQ.CONTEXT_INCONSISTENT | 交易信息被篡改 | 更换商家订单号后,重新发起请求 |
| ACQ.CUSTOMER_VALIDATE_ERROR | 客户校验出错 | 请确认结算账号是否完成实名信息认证,如还有问题联系支付宝小二处理 |
| ACQ.DEFAULT_SETTLE_RULE_NOT_EXIST | 默认结算条款不存在 | 请确认二级商户进件是已经设置了默认结算账户 |
| ACQ.ERROR_BUYER_CERTIFY_LEVEL_LIMIT | 买家未通过人行认证 | 让用户联系支付宝小二并更换其它付款方式 |
| ACQ.ERROR_SELLER_CERTIFY_LEVEL_LIMIT | 卖家未通过人行认证 | 根据国家相关法规要求,收款账户资金变动超过一定数额,需补充实名认证资料后,才能进行收付款 |
| ACQ.EXIST_FORBIDDEN_WORD | 订单信息中包含违禁词 | 修改订单信息后,重新发起请求 |
| ACQ.ILLEGAL_ARGUMENT | 参数错误 | 请确认请求传参是否正确 |
| ACQ.INVALID_PARAMETER | 参数无效 | 检查请求参数,修改后重新发起请求 |
| ACQ.INVALID_RECEIVE_ACCOUNT | 收款账户不支持 | 确认seller_id信息是否传递正确,如正确请确认seller_id是否在签约中设置了收款权限 |
| ACQ.INVALID_STORE_ID | 商户门店编号无效 | 检查传入的门店编号是否有效 |
| ACQ.MERCHANT_PERM_RECEIPT_DAY_LIMIT | 超过单日累计收款额度 | 联系支付宝小二处理(联系电话:4007585858) |
| ACQ.MERCHANT_PERM_RECEIPT_SINGLE_LIMIT | 超过单笔收款限额 | 联系支付宝小二处理(联系电话:4007585858) |
| ACQ.MERCHANT_PERM_RECEIPT_SUSPEND_LIMIT | 商户暂停收款 | 联系支付宝小二处理(联系电话:4007585858) |
| ACQ.MERCHANT_STATUS_NOT_NORMAL | 商户状态异常 | 因商户超过三个月未产生交易,需重新激活后可正常收单。1、进入支付宝商家中心,重新确认激活商家信息 或2、联系支付宝小二处理(联系电话:4007585858) |
| ACQ.NOW_TIME_AFTER_EXPIRE_TIME_ERROR | 当前时间已超过允许支付的时间 | 请检查传入的支付超时时间是否正确 |
| ACQ.OPEN_ID_NOT_TINY_APP | 请求的应用id非小程序应用类型 | 1、接口需要传入op_app_id,且该应用id是小程序应用类型; 2、商户需要先在商家平台-产品中心-[JSAPI支付产品页面](https://b.alipay.com/page/product-mall/product-detail/I1080300001000060370) 关联该小程序AppID; 3、如果未传入op_app_id,则默认发起请求的appId即唤起收银台所在的小程序应用ID,该appId需要是小程序应用类型。 |
| ACQ.PARTNER_ERROR | 应用APP_ID填写错误 | 联系支付宝小二,确认APP_ID的状态 |
| ACQ.PAYER_UNMATCHED | 付款人不匹配 | 建议用户更换为指定的支付宝账号进行支付 |
| ACQ.PLATFORM_BUSINESS_ACQUIRE_MODE_MUST_MERCHANT_ID | 二级商户编码为空 | 请检查是否正确传入二级商户编号 |
| ACQ.PRODUCT_NOT_SUPPORT_IN_TINY_APP | 小程序内不支持使用该产品码交易 | 1、请确认签约JSAPI支付产品;2、product_code改成JSAPI_PAY产品码 |
| ACQ.RISK_MERCHANT_IP_NOT_EXIST | 当前交易未传入IP信息,创单失败,请传入IP后再发起支付 | 检查请求参数是否已经传入用户IP信息 |
| ACQ.SECONDARY_MERCHANT_ALIPAY_ACCOUNT_INVALID | 二级商户账户异常 | 确认传入的二级商户结算账户是否与进件时设置的结算账户一致,如果一致可联系支付宝小二确认是否商户的账号信息有变更 |
| ACQ.SECONDARY_MERCHANT_CARD_ALIAS_NO_INVALID | 二级商户银行卡编号错误 | 请确认是否正确传入二级商户的银行卡信息,以及银行卡信息是否与商户进件是设置的卡信息一致 |
| ACQ.SECONDARY_MERCHANT_ID_BLANK | 二级商户编号错误 | 请检查是否正确传入二级商户编号 |
| ACQ.SECONDARY_MERCHANT_ID_INVALID | 二级商户不存在 | 请检查传入的二级商户编号是否正确 |
| ACQ.SECONDARY_MERCHANT_ISV_PUNISH_INDIRECT | 商户状态异常 | 请联系对应的服务商咨询 |
| ACQ.SECONDARY_MERCHANT_NOT_MATCH | 二级商户信息不匹配 | 1、请检查发起支付请求的二级商户账号是否正确或是否进件; 2、如果使用的是直付通平台商模式,请确认是否签约了直付通收单模式; |
| ACQ.SECONDARY_MERCHANT_STATUS_ERROR | 商户状态异常 | 请联系对应的服务商咨询 |
| ACQ.SELLER_BEEN_BLOCKED | 商家账号被冻结 | 联系支付宝小二,解冻账号 |
| ACQ.SELLER_NOT_EXIST | 卖家不存在 | 确认卖家信息是否传递正确 |
| ACQ.STORE_INFO_INVALID | 门店信息错误 | 请校验传入的结算门店信息是否正确 |
| ACQ.SUB_GOODS_SIZE_MAX_COUNT | 子商品明细超长 | 请检查子商品明细是否超过了150条 |
| ACQ.SYSTEM_ERROR | 接口返回错误 | 请立即调用查询订单API,查询当前订单的状态,并根据订单状态决定下一步的操作 |
| ACQ.TOTAL_FEE_EXCEED | 订单总金额超过限额 | 修改订单金额再发起请求 |
| ACQ.TRADE_BUYER_NOT_MATCH | 交易买家不匹配 | 更换商家订单号后,重新发起请求 |
| ACQ.TRADE_HAS_CLOSE | 交易已经关闭 | 更换商家订单号后,重新发起请求 |
| ACQ.TRADE_HAS_SUCCESS | 交易已被支付 | 确认该笔交易信息是否为当前买家的,如果是则认为交易付款成功,如果不是则更换商家订单号后,重新发起请求 |
| ACQ.UNBOUND_APPLICATION | 未绑定小程序appId | 1、确认op_app_id为唤起收银台支付的小程序appId;2、商户需要先在商家平台-产品中心-[JSAPI支付产品页面](https://b.alipay.com/page/product-mall/product-detail/I1080300001000060370) 关联该小程序AppID,具体可参考:[商户号关联小程序AppID](https://ideservice.alipay.com/cms/site/08dbcv?pathHash=fde30575#2.%20%E5%95%86%E6%88%B7%E5%8F%B7%E5%85%B3%E8%81%94%E5%B0%8F%E7%A8%8B%E5%BA%8FAppID),多商家收款参考 [小程序支付如何实现多商家收款](https://ideservice.alipay.com/cms/site/01rb0i)。 |
| ACQ.USER_LOGONID_DUP | 用户账号重复 | 用户手机账户名与他人重复,无法进行收付款。为了保障资金安全,建议您通知对方修改账户名,并与对方核对后更新对方账户名 |
## 触发通知类型
| **通知类型** | **描述** | **默认开启** |
| --- | --- | --- |
| tradeStatus.TRADE_CLOSED | 交易关闭 | 0 |
| tradeStatus.TRADE_FINISHED | 交易完结 | 0 |
| tradeStatus.TRADE_SUCCESS | 支付成功 | 1 |
| tradeStatus.WAIT_BUYER_PAY | 交易创建 | 0 |
## 触发通知示例
```
https://www.merchant.com/receive_notify.htm?notify_type=trade_status_sync¬ify_id=91722adff935e8cfa58b3aabf4dead6ibe¬ify_time=2017-02-16 21:46:15&sign_type=RSA2&sign=WcO+t3D8Kg71dTlKwN7r9PzUOXeaBJwp8/FOuSxcuSkXsoVYxBpsAidprySCjHCjmaglNcjoKJQLJ28/Asl93joTW39FX6i07lXhnbPknezAlwmvPdnQuI01HZsZF9V1i6ggZjBiAd5lG8bZtTxZOJ87ub2i9GuJ3Nr/NUc9VeY=&app_id=null&gmt_payment=null&gmt_create=null&body=null&subject=null&refund_fee=null&total_amount=null&trade_status=null&seller_id=null&buyer_logon_id=null&out_trade_no=null&merchant_app_id=2088102146225135&seller_email=null&buyer_id=null&buyer_open_id=074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5&out_biz_no=null&trade_no=null&voucher_detail_list=null&point_amount=null&buyer_pay_amount=null&invoice_amount=null&receipt_amount=null&fund_bill_list=null&gmt_close=null&gmt_refund=null&discount_goods_detail="[{\"goodsId\":\"STANDARD1026181538\",\"goodsName\":\"雪碧\",\"discountAmount\":\"10.00\"}]"&refund_preset_paytool_list=[{"amount":"1.00","assert_type_code":"HEMA"}]&charge_amount=8.88&charge_flags=bluesea_1&settlement_id=2018101610032004620239146945¤t_seller_received_amount=88.88&seller_received_total_amount=88.88&total_from_seller_fee=88.88&ff_current_period=1¬ify_action_type=payByAccountAction/closeTradeAction/reverseAction/finishFPAction/confirmDisburseAction/financingReceiptAction&passback_params=merchantBizType%3d3C%26merchantBizNo%3d2016010101111&hb_fq_pay_info={"USER_INSTALL_NUM":"3"}&receipt_currency_type=DC&enterprise_pay_info={"invoice_amount":"28.00"}&hyb_amount=10.24&bkagent_resp_info={"bindtrxId":"XXXXXX XXXXXXXX","bindclrissrId":"01","bindpyeracctbkId":"XXXXXXXXXXXXXX","bkpyeruserCode":"XXXXXXXXXXXXXX","estterLocation":" XXXXXXXXXXXXXX"}&charge_info_list=[{"charge_fee":"0.01","original_charge_fee":"0.02","switch_fee_rate":"0.03","is_rating_on_trade_receiver":"Y","is_rating_on_switch":"Y"}]&biz_settle_mode=PERIOD&period_scene=YIMEI&refund_voucher_detail_list="[{\"amount\": \"2.00\",\"id\": \"202404170007300200950064OZ8B\",\"memo\": \"{\\\"certificateSerialNos\\\":\\\"{\\\\\\\"2024022700445016365674959279\\\\\\\":{\\\\\\\"salePrice\\\\\\\":\\\\\\\"50\\\\\\\"},\\\\\\\"2024022700445016365674959278\\\\\\\":{\\\\\\\"salePrice\\\\\\\":\\\\\\\"60\\\\\\\"}}\\\"}\",\"merchant_contribute\": \"2.00\",\"name\": \"自提卡A: sku1 两次 减至0 封顶4\",\"other_contribute\": \"0.00\",\"template_id\": \"20230913000730013057000D7W7V\",\"type\": \"ALIPAY_COMMON_ITEM_VOUCHER\"}]"
```