附录
订单状态详情
- 下面为支付状态 state 和其对应的订单状态详情。
| state | 详情 |
|---|---|
00 |
支付成功/退款成功 |
01 |
支付失败/退款失败 |
03 |
部分退款 |
04 |
全部退款 |
06 |
已撤销 |
09 |
待支付/待退款 |
98 |
已关闭 |
支付产品属性值
- 下面为支付产品 product 属性值和其对应的支付产品名称。
| product 属性值 | 支付产品名称 |
|---|---|
WECHAT_OFFICE_ACCOUNT |
微信公众号支付 |
WECHAT_DYNAMIC_SCAN_CODE |
微信扫码支付 |
WECHAT_SWIPING_CARD |
微信刷卡支付 |
WECHAT_LITE |
微信小程序支付 |
WECHAT_PARKING |
微信无感支付 |
ALIPAY_DYNAMIC_SCAN_CODE |
支付宝扫码支付 |
ALIPAY_BAR_CODE |
支付宝条码支付 |
ALIPAY_FIXED_QRCODE |
支付宝固定二维码支付 |
ALIPAY_H5 |
支付宝 H5 支付 |
ALIPAY_PARKING |
支付宝无感支付 |
ALIPAY_APP |
支付宝APP支付 |
FIXED_CODE |
聚合码支付 |
AGGREGATION_OFFICE_ACCOUNT |
聚合公众号支付 |
PASS_FREE |
小额免密支付 |
BAR_CODE |
条码支付 |
CMPAY_H5 |
和包H5支付 |
UNIONPAY_DYNAMIC_SCAN_CODE |
银联动态扫码支付 |
UNIONPAY_SWIPING_CARD |
银联条码支付 |
WITHHOLD |
代扣 |
CASHIERPAY |
收银台支付 |
B2B_PAY |
B2B支付 |
CARD_PAY |
卡包支付 |
WECHAT_LITE_CASHIER |
小程序收银台 |
APP_TO_WECHAT_LITE |
APP跳微信小程序支付 |
支付渠道属性值
- 下面为支付渠道 channel 属性值和其对应的支付渠道名称。
| channel 属性值 | 支付渠道名称 |
|---|---|
WECHAT |
微信支付 |
SPDB |
浦发支付 |
HKB |
汉口支付 |
SWIFTPASS |
威富通支付 |
YS |
银盛支付 |
ALIPAY |
支付宝支付 |
CCB |
建行支付 |
SDP |
盛付通支付 |
ICBC |
工商银行支付 |
SXF |
随行付支付 |
CUP |
银联支付 |
CMPAY |
和包支付 |
HKBV2 |
汉口2.0 |
JLPAY |
嘉联支付 |
CUPPARK |
银联金融 |
TF |
传化支付 |
IPSPAY |
环迅支付 |
CMB |
招商银行 |
CPCN |
中金支付 |
UPCARD |
礼品卡支付 |
支付extra参数说明
特定渠道发起交易时需要的额外参数,以及部分渠道支付成功返回的额外参数。
WECHAT_APP
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
sub_app_id |
是 | String | 特约商户在微信开放平台上申请的 APPID |
WECHAT_OFFICE_ACCOUNT WECHAT_LITE
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
sub_app_id |
是 | String | 微信分配的子商户公众账号 ID(子商户用自己的公众号则必填) |
sub_open_id |
是 | String | 用户在子商户 appid 下的唯一标识(sub_app_id 不为空,则必填) |
WECHAT_DYNAMIC_SCAN_CODE
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
sub_app_id |
否 | String | 微信分配的子商户公众账号 ID (子商户用自己的公众号,则必填) |
sub_open_id |
否 | String | 用户在子商户 appid 下的唯一标识 (sub_app_id 不为空,则必填) |
product_id |
是 | String | 此 id 为二维码中包含的商品 ID,商户自行定义 |
WECHAT_SWIPING_CARD
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
sub_app_id |
否 | String | 微信分配的子商户公众账号 ID (子商户用自己的公众号,则必填) |
auth_code |
是 | String | 付款码 |
WECHAT_H5
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
sub_app_id |
否 | String | 微信分配的子商户公众账号 ID(子商户用自己的公众号则必填) |
sub_open_id |
否 | String | 用户在子商户 appid 下的唯一标识(sub_app_id 不为空,则必填) |
scene_info |
是 | String | 网站应用{"h5_info": //h5 支付固定传"h5_info" {"type": "", //场景类型"wap_url": "",//WAP 网站 URL 地址"wap_name": "" //WAP 网站名}} |
device_info |
是 | String | 如果是用于苹果 app 应用里值为 iOS_SDK;如果是用于安卓 app 应用里值为 AND_SDK;如果是用于手机网站,值为 iOS_WAP 或 AND_WAP 均可,微信 H5 支付必填 |
mch_app_name |
是 | String | 如果是用于苹果或安卓 app 应用中,传分别对应在 AppStore 和安卓分发市场中的应用名(如:王者荣耀)如果是用于手机网站,传对应的网站名(如:京东官网) |
mch_app_id |
是 | String | 如果是用于苹果或安卓 app 应用中,苹果传 IOS 应用唯一标识(如:com.tencent.wzryIOS)安卓传包名(如:com.tencent.tmgp.sgame)如果是用于手机网站,传网站首页 URL 地址,必须保证公网能正常访问(如:https://m.jd.com) |
WECHAT_PARKING
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
sub_app_id |
是 | String | 商户在微信配置的 app_id |
scene_info |
是 | String | 无感支付必填(JSON 字符串),例如:{\"start_time\":\"\",\"end_time\":\"\", \"charging_time\":\"\",\"plate_number\":\"\",\"car_type\":\"\",\"parking_name\":\"\", \"free_time\":\"\",\"contract_id\":\"\"}"} |
CASHIERPAY
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
user_id |
是 | String | 用户id,用户唯一标识(最大长度 20) |
scene_info 解释
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
start_time |
是 | String | 进入停车时间 |
end_time |
是 | String | 出停车场时间 |
charging_time |
是 | String | 计费的时间长,单位为秒 |
plate_number |
是 | String | 车牌号,仅包括省份+车牌,不包括特殊字符 |
car_type |
是 | String | 停车车辆的类型,可选值:大型车、小型车 |
parking_name |
是 | String | 所在停车场的名称 |
free_time |
是 | String | 免费时长 |
contract_id |
否 | String | 签约合同编号,当 channel 为 BCS 时必传 |
ALIPAY_BAR_CODE
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
auth_code |
是 | String | 付款码 |
ALIPAY_FIXED_QRCODE
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
buyer_id |
是 | String | 付款人 ID |
BAR_CODE
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
qr_code |
是 | String | 付款码 |
SIGN_WITHHOLD
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
agreement_no |
否 | String | 预签约返回的签约号,与外部签约号不能同时为空 |
out_agreement_no |
否 | String | 预签约上传的外部签约号,与签约号不能同时为空 |
ALIPAY_PARKING
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
scene_info |
是 | String | 停车参数 |
scene_info 解释
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
start_time |
是 | String | 进入停车时间 yyyyMMddHHmmss |
charging_time |
是 | String | 计费的时间长,单位为秒 |
plate_number |
是 | String | 车牌号,仅包括省份+车牌,不包括特殊字符 |
PASS_FREE
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
out_agreement_no |
否 | String | 外部签约号,与签约号不能同时为空 |
agreement_no |
否 | String | 签约号,与外部签约号不能同时为空 |
PASS_FREE ICBC
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
msg_id |
是 | String | 请求消息标识,请保证唯一 |
notify_url |
是 | String | 签约成功服务端回调地址 |
return_url |
是 | String | 签约成功前端回调地址 |
WITHHOLD
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
protocal_no |
否 | String | 协议编号(与以下字段二选一) |
user_type |
否 | String | 用户类型(1-对私)(若协议编号为空,则必填) |
id_type |
否 | String | 证件类型(若协议编号为空,则必填) |
id_no |
否 | String | 证件号码(若协议编号为空,则必填) |
bank_acct_type |
否 | String | 银行账户类型(0:对公帐号;1:卡;2:活期一本通;8:活期存折;9:内部帐/表外帐;)(若协议编号为空,则必填) |
bank_acct_no |
否 | String | 银行账户编号(1-对私)(若协议编号为空,则必填) |
CARD_PAY
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
login_id |
是 | String | 登录id |
login_id_type |
是 | String | 登录id类型 |
verify_pay_password |
是 | String | 是否校验密码 true/false |
pay_password |
否 | String | 支付密码 |
is_part_consume |
是 | String | 是否支持部分消费 Y/N。部分消费参数为Y时需要谨慎,当卡余额不足时,接口也会返回消费成功。仅限某些特定场合使用。 |
source |
否 | String | 操作渠道 微信:WECHATWEIXIN 微信小程序:WECHATAPPLET 手机App:APP |
channel |
否 | String | 会员渠道 |
支付 微信 detail说明
微信商品详情描述,该结构去除多余空格换行压缩后,总长度不能超过6144字节。
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
cost_price |
是 | String | 【订单原价】1、商户侧一张小票订单可能被分多次支付,订单原价用于记录整张小票的交易金额。 2、当订单原价与支付金额不相等,则不享受优惠。 3、该字段主要用于防止同一张小票分多次支付,以享受多次优惠的情况,正常支付订单不必上传此参数。 |
invoice_id |
是 | String | 商家小票ID |
goods_detail |
是 | String | 订单商品明细列表,至少传入1条,详细参考附录--> detail-->goods_detail说明 |
detail-->goods_detail说明
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
merchant_goods_id |
是 | String | 商户侧商品编码 |
wxpay_goods_id |
否 | String | 微信支付定义的统一商品编号(没有可不传) |
goods_name |
否 | String | 商品的实际名称 |
quantity |
是 | String | 用户购买的数量 |
unit_price |
是 | String | 【商品单价】整型,单位为:分。如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔100元的订单使用了商场发的纸质优惠券100-50,则活动商品的单价应为原单价-50) |
示例Json
{
"merchant_code":"1430100846312",
"subject":"1",
"sign":"A50D3E38227F551463D9D0755C4E33SS",
"description":"test",
"body":"测试",
"extra":"{\"auth_code\":\"131486163866088528\"}",
"client_ip":"192.168.1.1",
"app_id":"1842479404031148032",
"sign_type":"MD5",
"store_code":"",
"amount":2000,
"out_trade_no":"20251210091746379380661",
"detail":{
"invoice_id":"1231231233",
"cost_price":2000,
"goods_detail":[
{
"wxpay_goods_id":"6907992636306",
"goods_name":"欣活纾糖奶粉(听装)800g",
"quantity":1,
"merchant_goods_id":"6907992636306",
"unit_price":1999
}
]
}
}
支付 支付宝 goods_detail 说明
支付宝订单包含的商品列表信息
| 字段 | 是否必选 | 字段类型 | 字段说明 | |
|---|---|---|---|---|
goods_id |
是 | String | 商品的编号,该参数传入支付券上绑定商品goods_id,倘若无支付券需要消费,该字段传入商品最小粒度的商品 ID(如:若商品有 sku 粒度,则传商户 sku 粒度的ID)。 | |
goods_name |
是 | String | 商品名称 | |
quantity |
是 | String | 商品数量,支持小数,精确到小数点后两位 | |
price |
是 | String | 商品单价,单位为元 | |
out_item_id |
否 | String | 【描述】商家侧小程序商品ID,指商家提报给小程序商品库的商品。当前接口的extend_params.trade_component_order_id字段不为空时该字段必填,且与交易组件订单参数保持一致。了解小程序商品请参考:https://opendocs.alipay.com/mini/06uila?pathHash=63b6fba7 特殊可选 | |
out_sku_id |
否 | String | 【描述】商家侧小程序商品sku ID,多个sku时则需传入,无多个sku时无需传入。当前接口的extend_params.trade_component_order_id字段不为空时该字段必须与交易组件订单参数保持一致 特殊可选 | |
alipay_goods_id |
否 | String | 支付宝定义的统一商品编号 | |
goods_category |
否 | String | 商品类目 | |
categories_tree |
否 | String | 商品类目树,从商品类目根节点到叶子节点的类目id组成,类目id值使用 | 分割 |
body |
否 | String | 商品描述信息 | |
show_url |
否 | String | 商品的展示地址 |
示例json
{
"merchant_code":"1350100546109",
"subject":"1",
"sign":"56967C1CD8EEF2E4911464743B7765bb",
"description":"test",
"body":"测试",
"extra":"{\"auth_code\":\"280702853407545046\"}",
"client_ip":"192.168.1.1",
"app_id":"1525035832283496448",
"sign_type":"MD5",
"store_code":"",
"amount":300,
"out_trade_no":"20251210115041920980201",
"goods_detail":[
{
"goods_name":"ipad",
"alipay_goods_id":"1",
"quantity":1,
"price":"1.0",
"goods_id":"apple-01",
"goods_category":"34543238",
"categories_tree":"124868003|126232002|126252004",
"body":"特价手机",
"show_url":"http://www.alipay.com/xxx.jpg"
}
]
}
合单支付参数说明
如果使用了合单支付,订单查询接口只能通过子订单号查询订单状态,退款时也只能通过子订单号分开退款
| 字段 | 是否必选 | 字段类型 | 字段说明 |
|---|---|---|---|
sub_merchant_code |
是 | String | 合单支付商户号 |
sub_out_order_no |
是 | String | 子订单号 |
amount |
是 | String | 子订单金额(单位分) |
remark |
否 | String | 备注 |
goods_desc |
否 | String | 商品描述 |
小程序跳转易生小程序支付跳转说明
需要先调预下单接口获取下单地址
// 需要对下单地址decode,会拿到一下这样的地址“https://cashier.eycard.cn:8664?params={"payExpireTime":1749539113,"payToken":"lJeiEdrJiqGEzO1wnJKk"}”
const urlString = decodeURIComponent(url)
const paramsStartIndex = urlString.indexOf('params=');
const paramsString = urlString.slice(paramsStartIndex + 7);
const params = JSON.parse(paramsString);
// 拼装跳转路径
const path = `pages/index/index?payExpireTime=${params.payExpireTime}&payToken=${params.payToken}&orgTrace=${res.tradeId}`
wx.openEmbeddedMiniProgram({
appId: 'wxed5226e9688ec728',
path,
success() {},
fail() {}
})
安卓APP跳转易生小程序支付跳转说明
需要先调预下单接口获取下单地址
String appId = "wxf3fc08b788503645"; // 填移动应用(App)的 AppId,非小程序的 AppID
IWXAPI api = WXAPIFactory.createWXAPI(getActivity(), appId);
WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
req.userName = "gh_eb36dfa81e82"; // 填小程序原始id
req.path="pages/index/index?payExpireTime=1749540943&payToken=emlRTMeqJpsL80Toc6FD&orgTrace=2025061015254334956045940025";
// MINIPROGRAM_TYPE_PREVIEW:体验版.
// MINIPROGRAM_TYPE_TEST:开发版
// MINIPTOGRAM_TYPE_RELEASE:正式版
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;
api.sendReq(req);