4.附录


4.1 接口返回码retcode说明

接口版本号(version)为空或者版本号等于11:

SUCCESS-请求成功

FAIL-请求或前端处理失败,具体看retmsg

接口版本号(version)大于11:

SUCCESS-请求成功

PARAMERR-请求参数错误

SIGNAUTHERR-签名或者api权限不足

FAIL-其他请求或前端处理失败,具体看retmsg

SYSTEMERR-系统异常,对于实时类交易(例如被扫交易),建议进行查询

 

4.2 交易返回码trxstatus说明

0000:交易成功
1001:交易不存在
2008或者2000 : 交易处理中,请查询交易,如果是实时交易(例如刷卡支付,交易撤销,退货),建议每隔一段时间(10秒)查询交易
3开头的错误码代表交易失败
3888-流水号重复
3889-交易控制失败,具体原因看errmsg
3099-渠道商户错误
3014-交易金额小于应收手续费
3031-校验实名信息失败
3088-交易未支付(在查询时间区间内未成功支付,如已影响资金24小时内会做差错退款处理)
3089-撤销异常,如已影响资金24小时内会做差错退款处理
3045-其他错误,具体原因看errmsg
3050-交易已被撤销
3999-其他错误,具体原因看errmsg
其他3开头的错误码代表交易失败,具体原因请读取errmsg

4.3 交易类型

交易类型

注释

VSP501

微信支付        

VSP502

微信支付撤销    

VSP503

微信支付退款    

VSP511

支付宝支付      

VSP512

支付宝支付撤销  

VSP513

支付宝支付退款  

VSP541

扫码支付

VSP542

扫码撤销

VSP543

扫码退货

VSP551

银联扫码支付    

VSP552

银联扫码撤销    

VSP553

银联扫码退货    

VSP611

数字货币支付

VSP612

数字货币撤销

VSP613

数字货币退货

300002

充值

DMM999

全抵扣

VSP681

微信订单预消费

VSP682

微信订单退款

VSP683

微信订单完成

VSP684

微信订单完成退款

4.4 支付渠道优惠信息填写规范(benefitdetail字段)

微信单品优惠填写规范

需填写goods_tag和benefitdetail字段,其中benefitdetail是包含了以下字段的json字符串: 

参数

参数名称

数据类型

可空

备注

cost_price

订单原价

int

单位:分 跟trxamt一致
1.商户侧一张小票订单可能被分多次支付,订单原价用于记录整张小票的交易金额。
2.当订单原价与支付金额不相等,则不享受优惠。
3.该字段主要用于防止同一张小票分多次支付,以享受多次优惠的情况,正常支付订单不必上传此参数。

receipt_id

商品小票ID

String(32)

 

goods_detail

单品列表

List<GoodDetail>

 

GoodDetail的字段如下:

参数

参数名称

数据类型

可空

备注

goods_id

商品编码

String(32)

由半角的大小写字母、数字、中划线、下划线中的一种或几种组成

wxpay_goods_id

微信侧商品编码

String(32)

微信支付定义的统一商品编号(没有可不传)

goods_name

商品名称

String(256)

商品的实际名称
上送报文不要使用特殊符号/ 和 * ,否则会被安全设备视为敏感恶意注入行为并拦截请求

quantity

商品数量

int

用户购买的数量

price

商品单价

int

单位为:分。如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔100元的订单使用了商场发的纸质优惠券100-50,则活动商品的单价应为原单价-50)

单品优惠数据样例:

benefitdetail={"goods_detail":[{"price":10,"goods_id":"cola50","goods_name":"cola","quantity":10}],"cost_price":120}&goods_tag=laoguo

支付宝智慧门店填写规范

支付宝智慧门店需要进行报备,具体咨询业务经理。(只支持主扫和被扫)

需填写chnlstoreid和benefitdetail字段;chnlstoreid为该商户在支付宝的商户门店号;benefitdetail是优惠商品详情的列表。

其中商品详情字段如下:

参数

参数名称

数据类型

可空

示例

goods_id

商品的编码

String(32)

apple-01

goods_name

商品名称

String(256)

ipad
上送报文不要使用特殊符号/ 和 * ,否则会被安全设备视为敏感恶意注入行为并拦截请求

quantity

商品数量

Number(10)

1

price

商品单价,单位为元

Price(9)

2000

goods_category

商品类目

String(24)

34533238

categories_tree

商品类目树,从商品类目根节点到叶子节点类目id组成,类目id值使用|分割

String(128)

123123123|1212313|12313123

body

商品描述信息

String(1000)

特价手机
上送报文不要使用特殊符号/ 和 * ,否则会被安全设备视为敏感恶意注入行为并拦截请求

show_url

商品的展示地址

String(400)

http://www.alipay.com/xxxx.jpg

样例数据:
benefitdetail=[{"price":2,"goods_id":"900820400100","goods_name":"900820400iphonex ","quantity":1}]&chnlstoreid=240610147@020012003

银联云闪付单品优惠填写规范

注意:
1.仅支持被扫交易,即4.2统一扫码接口
2.统一扫码交易同步返回在渠道信息(chnldata )返回银联优惠信息(couponInfo).
3.银联云闪付单品优惠交易退货不支持部分退款,并且需要在退款接口上送原交易的优惠信息,见4.4退款接口
benefitdetail是包含了以下字段的json字符串:

参数

参数名称

数据类型

可空

备注

orderInfo

订单明细内容

UnOrderInfo

如订单标题、订单描述等

goodsInfo

商品明细内容

List<UnGoodDetail>

 

其中UnOrderInfo包含字段如下:

参数

参数名称

数据类型

可空

备注

title

商品编码

String(100)

 

description

订单描述

String(200)    

 

dctAmount

可优惠金额

int

当前订单可以参与优惠计算的金额

addnInfo

附加信息

String(100)    

用户自定义

其中UnGoodDetail包含字段如下:

参数

参数名称

数据类型

可空

备注

id

商品编码

String(32)

 

name

商品名称

String(256)    

商品的实际名称
上送报文不要使用特殊符号/ 和 * ,否则会被安全设备视为敏感恶意注入行为并拦截请求

quantity

商品数量

int

用户购买的数量

price

商品单价

int

单位为:分

category

商品类目

String(24)

是    

 

addnInfo

附加信息

String(100)

是    

用户自定义
上送报文不要使用特殊符号/ 和 * ,否则会被安全设备视为敏感恶意注入行为并拦截请求

填写样例:
benefitdetail={"goodsInfo":[{"id":"testsp000005","price":"600","name":"商品 1","quantity":"2"},{"id":"testsp000006","price":"500","name":"商品 2","quantity":"1"}],"orderInfo":{"title":"日用品","dctAmount":"1900","addnInfo":"日屈臣氏(人民广场)店"}}

交易成功返回优惠信息字段:

参数

参数名称

数据类型

可空

备注

id

项目编号

String(40)

票券编号、活动编号等,格式自定义

type

项目类型

String(4)    

 

offstAmt

抵消交易金额

int

单位为:分

spnsrId

出资方

String(20)

 

desc

项目简称

String(60)

优惠活动简称,可用于展示、打单等

addnInfo

附加信息

String(100)

是    

用户自定义

响应样例:
chnldata ={"couponInfo":[{"id":"2112019092900801","desc":"银联单品测试联调-折后一口价","addnInfo":"小票打印信息测试","type":"CP01","spnsrId":"00010000","offstAmt":"800"}]}

4.5 拓展参数说明(extendparams

每个活动extendparams的字段均不相同,请按照 规范填写
1、支付宝点餐小程序活动填写规范
只对交易方式为支付宝JS支付(A02)有效Extendparams的字段如下:

参数

参数名称

数据类型

可空

备注

food_order_type

点餐场景类型

String(32)

qr_order(店内扫码点餐),pre_order(预点到店自提),home_delivery (外送到家),direct_payment(直接付款),other(其他)

填写样例
extendparams={"food_order_type":"qr_order"}

2 、微信设备信息(device_info)
透传ISV服务商或门店商户的设备号到微信系统

参数

参数名称

数据类型

可空

备注

device_info

设备号

String(32)

终端设备号(门店号或收银设备ID),注意:PC网页或JSAPI支付请传"WEB"

填写样例
extendparams={"device_info":" 013467007045764"}

3、支付宝外部指定买家
ext_user_info内容为支付宝OPENAPI接口文档中ExtUserInfo的json字符串(String类型)

参数

参数类型

可空

长度

说明

示例

ext_user_info

ExtUserInfo

-

外部指定卖家

-

name

String

16

姓名
注:need_check_info=T时,该参数才有效

黎明

mobile

String

20

手机号
注:该参数暂不校验

16578789955

cert_type

String

32

身份证:IDENTIFY_CARD、护照:PASSPORT
军官证:OFFICER_CARD、士兵证:SOLDIER_CARD
户口本:HOKOU等。如有其它类型需要支持,请与蚂蚁金服工作人员联系。

IDENTIFY_CARD

cert_no

String

可选

64

证件号
注:need_check_info=T时该参数才有效

362334768769238881

 fix_buyer

 String

 可选

 8

是否强制校验付款人身份信息
T:强制校验,F:不强制    F

 F

 min_age

 String

 可选

 3

允许的最小买家年龄,买家年龄必须大于等于所传数值
注:
1. need_check_info=T时该参数才有效
2. min_age为整数,必须大于等于0    18

 18

 need_check_info

 String

 可选

 1

是否强制校验身份信息
T:强制校验,F:不强制

 F

填写样例:
例如,如果要控制18岁的用户才能交易
extendparams={"ext_user_info":"{\"need_check_info\":\"T\",\"min_age\":\"18\"}"}

4、支付宝停车行业活动接入
具体行业活动介绍参考官方说明,链接如下:

https://alipay.open.taobao.com/doc2/detail?&docType=1&articleId=108053

停车场订单埋点参数:industry_reflux_info(此参数为各2.0支付产品接口中extend_params的下级参数,包含在biz_content中,且特别注意industry_reflux_info为json对象)

参数

参数名称

类型(字节长度)

参数说明

是否可为空

样例

industry_reflux_info

场景数据

String(100)

场景的数据表示. json 数组格式,根据场景不同的模型,参见industry_reflux_info参数说明”

不可空

 

industry_reflux_info参数填充内容

参数

参数名称

类型(字节长度)

参数说明

是否可为空

样例

scene_code

场景标识

String(100)

用于标识数据模型,由isdsp配置提供,固定parking_fee_order

不可空

parking_fee_order

channel

渠道

String(32)

场景的来源渠道,固定common_park_provider

不可空

common_park_provider

scene_data

场景数据

json

场景的数据表示. json 数组格式,根据场景不同的模型,参见“1.1.2scene_data参数说明”

不可空

 

 

scene_data参数说明

参数

参数名称

类型(字节长度)

参数说明

是否可为空

样例

license_plate

车牌号

String(32)

用户车辆车牌号

不可空

浙A3DK19

start_time

入场时间

String(32)

停车场入场时间(YY-MM-DD HH:MM:SS)。若获取不到入场时间,可用支付时间替代。

不可空

2017-06-13 17:30:26

end_time

支付时间

String(32)

停车场出场支付时间(YY-MM-DD HH:MM:SS)

可空

2017-06-13 17:30:26

parking_time

停车时长

String

停车时长,单位秒

可空

1200

parking_lot_id

停车场ID

String(32)

停车场编号,即alipay.eco.mycar.parking.parkinglotinfo.create(录入停车场信息)返回的parking_id

不可空

PI1504848980306666666

parkling_lot_name

停车场名称

String

停车场名称

可空

山下停车场

parking_lot_longitude

停车场经度

String

停车场位置经度

可空

 232.2323

parking_lot_latitude

停车场纬度

String

停车场位置纬度

可空

2323.232

city_code

城市编码

String

当前停车场城市编码,填省市即可,无需精确到区的城市编码

可空

110100

 

填写样例:
extendparams={\"sys_service_provider_id\":\"2088711077456570\",\"industry_reflux_info\":{\"scene_data\":{\"start_time\":\"2020-08-31 09:30:26\",\"license_plate\":\"川A1ph13\",\"parkling_lot_name\":\"测试停车场\",\"city_code\":\"510100\",\"parking_lot_id\":\"PI1596794061186322467\"},\"channel\":\"common_park_provider\",\"scene_code\":\"parking_fee_order\"}}
JSON数据格式如下:
{
"sys_service_provider_id":"2088711077456570",
"industry_reflux_info":{
    "scene_data":{
        "start_time":"2020-08-31 09:30:26",
        "license_plate":"川A1ph13",
        "parkling_lot_name":"四川测试停车场",
        "city_code":"510100",
        "parking_lot_id":"PI1596794061186322467"},
    "channel":"common_park_provider",
    "scene_code":"parking_fee_order"
    }
}

5、微信扫码点餐订单标识

商户创建订单的时候往attach字段传入订单标识信息,支付成功后,有优惠将根据扫码点餐商户白名单和attach里面的订单标识判定是否为扫码点餐订单。

参数

参数名称

类型(字节长度)

参数说明

是否可为空

样例

attach

场景数据

String(127)

 

不可空

 

 

extendparams={"attach":"OrderSource=FoodOrder"}

6、云闪付主扫/被扫交易终端号透传

商户在执行paytype=U01及统一被扫云闪付交易时,可透传收银机终端编号到银联系统。

参数

参数名称

类型(字节长度)

参数说明

是否可为空

样例

uptermno

场景数据

String(8)

数字及字母,限8位

可空

 

填写样例:
extendparams={"uptermno":"12345678"}

4.6 终端信息字段说明

terminfo字段

参数

参数名称

取值

可空

最大长度

备注

termno

终端号

8位数字

8

 商户下唯一

devicetype

设备类型

01:自动柜员机(含 ATM 和 CDM)和多媒体自助终端
02:传统 POS
03:mPOS
04:智能 POS
05:II 型固定电话
06:云闪付终端;
07:保留使用;
08:手机 POS;
09:刷脸付终端;
10:条码支付受理终端;
11:条码支付辅助受理终端;
12:行业终端(公交、地铁用于指定行业的终端);
13:MIS 终端;

2

 

termsn

终端序列号

 

50

终端类型(device_type)填写为 02、03、04、05、06、08、09 或 10时,必须填写终端序列号。

encryptrandnum

加密随机因子

仅在被扫支付类交易报文中出现:若付款码为 19 位数字,则取后6 位;若付款码为 EMV 二维码,则取其tag 57 的卡号/token 号的后 6 位

10

 

secrettext

密文数据

仅在被扫支付类交易报文中出现:64bit 的密文数据,对终端硬件序列号和加密随机因子加密后的结果。本子域取值为:64bit 密文数据进行base64 编码后的结果。

16

 

appversion

终端程序版本号

 

8

终端应用程序的版本号。应用程序变更应保证版本号不重复。当长度不足时,右补空格。

longitude

经度

经度信息格式:1位正负号+3位整数 +1位小数点 +5位小数, +表示东经, -表示西经,例如 +121.48352

16

银联扫码必送

latitude

纬度

纬度信息格式:1位正负号+2位整数+1位小数点 +6 位小数,+表示北纬, -表示南纬,例如+31.221345或-03.561345

16

银联扫码必送

deviceip

终端IP

 

40

商户端终端设备 IP 地址。注:如经、维度信息未上送,该字段必送。

示例

terminfo={"termsn":"dfjskljioe13238023","longitude":"+121.48352","latitude":"-03.561345","termno":"00000001","devicetype":"11"}

 

4.7 asinfo字段说明

该字段提供对接方上送指定分账信息。如果上送此字段,必须开通数字营销资金管理功能。

  1. 最多支持3层分账。延时分账业务只支持一层。
  2. splitIdType为0-机构的主体类型时,不需要传splitCode和splitId,其他类型必须传splitCode或splitId,都传以splitId为准。
  3. splitIdType为0-机构或3-分佣方时,上送金额为最终分账金额,不再匹配系统配置的分账规则进行分账。
  4. 每层未全部分完时,剩余部分默认分账到对应的上层分账主体中,且不再匹配系统配置的分账规则进行分账。(建议:对未分完的部分,为了简化商户对接部分退款的处理,商户进行计算与管理,一并上送到分账信息中,splitIdType传3。否则商户在进行部分退款退分账未分完部分时,业务处理会比较复杂)。
  5. 延时分账splitIdType支持0、3。
  6. 退款
  • 整单退时,不需要上送splitList字段,如果上送splitList字段,则按部分退款规则处理
  • 部分退款,若需要各个分账完均摊退款金额,则不需要上送splitList,系统会自动计算各个分账主体退的金额;
  • 部分退款,非均摊退款时,需要上送各分账方完整的退款分账规则。若上送的分账方对应的订单分账存在下级分账时,需要上送指定下级退款的分账规则,包含默认的分账。
  • 部分退款,指定退分账未分完的部分时,splitIdType传3。
  • 延时分账退款时,若已存在部分分账确认的子单号,则未分账确认部分不可退款,如果要对未分账确认部分进行退款,则需先调用分账确认接口分账到收款店铺后再进行退款。若整笔订单未进行分账确认,则可发起退款。

参数

参数名称

取值

splitIdType

分账主体类型

0-机构、1-店铺,2-大类,3-分佣方,4-商品

splitCode

分账主体CODE

数字营销的店铺、大类、商品、分佣方等的code,分账主体类型为0时可不传

splitId

分账主体ID

数字营销的店铺、大类、商品、分佣方等的ID,分账主体类型为0时可不传

amount

分账金额

金额,单位分

remark

备注

 

subReqSn

分账子订单号

延时分账业务,需要上送

splitList

下层分账

asinfo

 

示例:订单收款0.3元(30分)

[

    {

        "splitIdType": 1,

        "splitCode": "10668",

        "amount": 10,

        "remark": "分给店铺10668"

    },

    {

        "splitIdType": 3,

        "splitId": "10666",

        "amount": 10,

        "remark": "分给分佣方10666"

},

    {

        "splitIdType": 0,

        "amount": 10,

        "remark": "分给平台机构"

    }

]

说明:分给平台和10666的为最终分账结果,即到账金额;分给10668的0.1元,若系统配置有分账规则,则还要根据配置的分账规则继续进行分账处理。

4.8 交易方式

W01 微信扫码支付

W02 微信JS支付

W06 微信小程序支付

W11 微信订单支付

A01 支付宝扫码支付

A02 支付宝JS支付

U01 银联扫码支付(CSB)

U02 银联JS支付

S01 数币扫码支付

S03 数字货币H5

I01聚合支付(字母I)

IM01微信小程序聚合支付

 

4. 9 splitlist字段说明

该字段用于订单支付/退款/查询/通知接口返回分账结果信息。

 

参数

参数名称

取值

splitidtype

分账主体类型

0-平台、1-店铺,3-分佣方

splitcode

分账主体CODE

splitIdType为0时,若为接口上送,则为空;若为系统分账规则分账,则为账户外部编号

splitid

分账主体ID

splitIdType为0时,若为接口上送,则为机构ID;若为系统分账规则分账,则为账户ID

splitname

分账主体名称

splitIdType为0时,若为接口上送,则为机构名称;若为系统分账规则分账,则为账户名称

amount

分账金额

金额,单位分

remark

备注

交易时上送的备注

subreqsn

分账子订单号

延时分账的子订单号

 


卜子超buzc 2025年3月25日 16:55 收藏文档