tencent cloud

腾讯云超级应用服务

动态与公告
【2025年1月2日】关于腾讯云小程序平台更名为腾讯云超级应用服务的公告
控制台更新动态
Android SDK 更新动态
iOS SDK 更新动态
Flutter 更新动态
IDE 更新动态
基础库更新动态
产品简介
产品概述
产品优势
应用场景
购买指南
计费概述
按量计费(后付费)
续费指引
停服说明
快速入门
套餐管理
概述
控制台账号管理
存储配置
加速配置
品牌化配置
平台功能
控制台登录
用户和权限体系
小程序管理
小游戏管理
应用管理
商业化
平台管理
用户管理
团队管理
运营管理
安全中心
代码接入指引
Demo 及 SDK 获取
Android
iOS
Flutter
App 服务端接入指南
GUID 生成规则
小程序开发指南
小程序介绍与开发环境
小程序代码组成
指南
框架
组件
API
服务端
JS SDK
基础库
IDE 使用指南
小游戏开发指南
指南
API
服务端
实践教程
小程序登录实践教程
小程序订阅消息实践教程
支付相关实践教程
广告接入实践教程
小游戏订阅消息实践教程
相关协议
数据处理和安全协议

小程序支付

PDF
聚焦模式
字号
最后更新时间: 2025-08-20 17:51:14

1.查询订单状态

接口描述:

通过订单号查询订单状态

调用方式:get

请求地址:

/v3/pay/transactions/out-trade-no/:out_trade_no

请求HEADER

参数
是否必填
描述
说明
Authorization
签名认证信息
签名参考 签名认证
Content-Type
application/json
-

请求参数

属性
类型
必填
说明
out_trade_no
string
订单号

返回参数

属性
类型
必填
说明
appid
string
小程序 id
mch_id
string
支付商户号,商户下单时传入的商户号
out_trade_no
string
商户订单号,商户下单时传入的系统内部订单号
transaction_id
string
支付订单唯一标识,订单支付成功返回
trade_type
string
交易类型 JSAPI-小程序支付
trade_state
string
交易状态
WAIT_PAY-待支付
SUCCESS-支付成功
CLOSED-订单已关闭
AUTO_CLOSED-订单到期自动关闭
REFUND-已退款
PAY_ERROR-支付失败


bank_type
string
银行简码,非银行卡支付类型统一为OTHERS
attach
string
商户数据包,商户下单时传入的自定义数据包,用户不可见,长度不超过256字符,若下单传入该参数,则订单支付成功后此接口和支付成功回调通知以及交易账单中会原样返回;若下单未传该参数,则不会返回
success_time
string
支付完成时间,遵循 rfc3339 标准格式:yyyy-MM-DDTHH:mm:ss+TIMEZONE。yyyy-MM-DD 表示年月日;T 字符用于分隔日期和时间部分;HH:mm:ss 表示具体的时分秒;TIMEZONE 表示时区(例如,+08:00 对应东八区时间,即北京时间)
payer
payer
订单的支付者信息,订单支付成功后返回
amount
object
订单金额信息
amount.payer_total
string
订单总金额,单位为分
amount.total
interger
用户实际支付金额,整型,单位为分,用户支付金额=总金额-代金券金额。
amount.currency
string
货币类型 符合 ISO 4217 标准的三位字母代码
amount.payer_currency
string
用户支付币种 符合 ISO 4217 标准的三位字母代码

响应示例

{
"appid": "mpco56h12e6e52hj",
"mch_id": "mi_7b0a5e40f9",
"out_trade_no": "2b695106b888d14328d9",
"transaction_id": "pi1738915449351wbrgic93qlahw34134wjr",
"trade_type": "JSAP",
"trade_state": "SUCCESS",
"bank_type": "OTHERS",
"attach": "attch info",
"success_time": "2025-02-28T10:34:56+08:00",
"payer": {
"openid": "o910d4edeee717377adguZS89513"
},
"amount": {
"payer_total": "88800",
"total": 88800,
"currency": "USD",
"payer_currency": "USD"
}
}

2.关闭订单

接口描述:

商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;
系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。

调用方式:post

请求地址:

/v3/pay/transactions/out-trade-no/:out_trade_no/close

请求HEADER

参数
是否必填
描述
说明
Authorization
签名认证信息
签名参考 签名认证
Content-Type
application/json
-

请求参数

属性
类型
必填
说明
out_trade_no
string
商户下单时传入的商户系统内部订单号。
mch_id
string
商户下单时传入的商户号。

返回参数

响应示例

无应答包体
204 No Content


3.小程序下单

接口描述:

小程序支付场景,商户需调用该接口在应用支付下单,生成用于调起支付的预支付交易会话标识(prepay_id)。

调用方式:post

请求地址:

/v3/pay/transactions/jsapi

请求HEADER

参数
是否必填
描述
说明
Authorization
签名认证信息
签名参考 签名认证
Content-Type
application/json
-

请求参数

属性
类型
必填
说明
appid
string
小程序 id
description
string
商品信息描述,长度不超过127个字符
out_trade_no
string
商户系统内部订单号,要求6-32个字符内,只能是数字、大小写字母_-|* 且在同一个商户号下唯一
time_expire
string
1、定义:支付结束时间是指用户能够完成该笔订单支付的最后时限,并非订单关闭的时间。超过此时间后,用户将无法对该笔订单进行支付。如需关闭订单,请调用关闭订单API接口。

2、格式要求:支付结束时间需遵循 rfc3339 标准格式:yyyy-MM-DDTHH:mm:ss+TIMEZONE。yyyy-MM-DD 表示年月日;T 字符用于分隔日期和时间部分;HH:mm:ss 表示具体的时分秒;TIMEZONE 表示时区(例如,+08:00 对应东八区时间,即北京时间)
3.参数仅在用户首次下单时可设置,且不允许后续修改,尝试修改将导致错误。
若用户实际进行支付的时间超过了订单设置的支付结束时间,商户需使用新的商户订单号下单,生成新的订单供用户进行支付。若未超过支付结束时间,则可使用原参数重新请求下单接口,以获取当前订单最新的prepay_id 进行支付。
支付结束时间不能早于下单时间后1分钟,若设置的支付结束时间早于该时间,系统将自动调整为下单时间后1分钟作为支付结束时间。
attach
string
商户在创建订单时可传入自定义数据包,该数据对用户不可见,用于存储订单相关的商户自定义信息,其总长度限制在128字符以内。支付成功后查询订单API和支付成功回调通知均会将此字段返回给商户,并且该字段还会体现在交易账单中
notify_url
string
商户接收支付成功回调通知的地址,需按照 notify_url 填写注意事项规范填写。
amount
object
订单金额信息
amount.total
interger
用户实际支付金额,整型,单位为分,用户支付金额=总金额-代金券金额。
amount.currency
string
货币类型 符合 ISO 4217 标准的三位字母代码
payer
object
支付者信息
payer.openid
string
用户在商户 appid 下的唯一标识。下单前需获取到用户的 OpenID,详情见 小程序登录
detail
object
优惠功能
detail.cost_price
integer
订单原价
detail.goods_detail
array[object]
单品列表信息
detail.goods_detail.merchant_goods_id
string
支付定义的统一商品编号(没有可不传)
detail.goods_detail.goods_name
string
商品的实际名称
detail.goods_detail.quantity
integer
用户购买的数量
detail.goods_detail.unit_price
integer
整型,单位为:分。如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔100元的订单使用了商场发的纸质优惠券100-50,则活动商品的单价应为原单价-50)

返回参数

属性
类型
必填
说明
prepay_id
string
预支付交易会话标识,JSAPI 或小程序调起支付时需要使用的参数,有效期为2小时,失效后需要重新请求该接口以获取新的 prepay_id

响应示例

{
"prepay_id":"pi173898442419368bhz26jn4rikpwzr1akn"
}

4.支付回调

接口描述:

当用户成功支付订单后,应用支付会通过 POST 的请求方式,向商户预先设置的回调地址支付下单接口传入的 notify_url 发送回调通知,让商户知晓用户已完成支付。

调用方式:post

请求地址:

下单接口传入的 notify_url

请求HEADER

参数
描述
说明
Wechatpay-Serial
验签的SuperAPP平台证书序列号
验证签名参考 平台证书签名
Wechatpay-Signature
验证签名值
-
Wechatpay-Timestamp
验签的时间戳
-
Wechatpay-Nonce
验签的随机字符串
-

请求参数

属性
类型
必填
说明
id
string
回调通知的唯一编号。
create_time
string
本次回调通知创建的时间。
格式:遵循 rfc3339 标准格式:yyyy-MM-DDTHH:mm:ss+TIMEZONE。yyyy-MM-DD 表示年月日;T 字符用于分隔日期和时间部分;HH:mm:ss 表示具体的时分秒;TIMEZONE 表示时区(例如,+08:00 对应东八区时间,即北京时间)。
示例:2015-05-20T13:29:35+08:00 表示北京时间2015年5月20日13点29分35秒。
resource_type
string
通知的资源数据类型,固定为 encrypt-resource。

event_type
string
支付回调通知的类型。
支付成功通知的类型为 TRANSACTION.SUCCESS。
pay_model
string
支付银行卡类型,非银行卡为 OTHERS
summary
string
应用支付对回调内容的摘要备注,长度限制64
resource
object
通知资源数据
resource.original_type
string
【原始回调类型】加密前的对象类型,为 transaction。
resource.algorithm
string
【加密算法类型】回调数据密文的加密算法类型,目前为AEAD_AES_256_GCM,开发者需要使用同样类型的数据进行解密。
resource.ciphertext
string
【数据密文】Base64 编码后的回调数据密文,商户需Base64 解码并解密,参考 解密回调报文
resource.associated_data
string
【附加数据】参与解密的附加数据,该字段可能为空。
resource.nonce
string
【随机串】参与解密的随机串。

返回参数

属性
类型
必填
说明
ok
string
-

响应示例

{
"ok"
}

数据类型

paymentNotifyResource

属性
类型
必填
说明
original_type
string
【原始回调类型】加密前的对象类型,为 transaction。
algorithm
string
【加密算法类型】回调数据密文的加密算法类型,目前为AEAD_AES_256_GCM,开发者需要使用同样类型的数据进行解密。
ciphertext
string
【数据密文】Base64 编码后的回调数据密文,商户需Base64 解码并解密,参考 解密回调报文
associated_data
string
【附加数据】参与解密的附加数据,该字段可能为空。
nonce
string
【随机串】参与解密的随机串。

detail

属性
类型
必填
说明
cost_price
integer
订单原价
goods_detail
array[goods_detail]
单品列表信息

goods_detail

属性
类型
必填
说明
merchant_goods_id
string
支付定义的统一商品编号(没有可不传)
goods_name
string
商品的实际名称
quantity
integer
用户购买的数量
unit_price
integer
整型,单位为:分。如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔100元的订单使用了商场发的纸质优惠券100-50,则活动商品的单价应为原单价-50)

payer

属性
类型
必填
说明
openid
string
用户在商户下单的appid下唯一标识

orderAmount

属性
类型
必填
说明
payer_total
string
订单总金额,单位为分
total
interger
用户实际支付金额,整型,单位为分,用户支付金额=总金额-代金券金额。
currency
string
货币类型 符合 ISO 4217 标准的三位字母代码
payer_currency
string
用户支付币种 符合 ISO 4217 标准的三位字母代码

amount

属性
类型
必填
说明
total
interger
用户实际支付金额,整型,单位为分,用户支付金额=总金额-代金券金额。
currency
string
货币类型 符合 ISO 4217 标准的三位字母代码

notify_url填写注意事项

(1)notify_url 需要填写商户自己系统的真实地址,不能填写接口文档或 demo 上的示例地址。
(2)notify_url 必须是以 https://或http:// 开头的完整全路径地址,并且确保 URL 中的域名和IP是外网可以访问的,不能填写 localhost、127.0.0.1、192.168.x.x等本地或内网 IP。
(3)notify_url 不能携带参数。
常见错误举例:
错误描述
错误示例
URL 中只有域名,缺少具体的路径
http://www.domain.com
URL 不是以 https:// 或 http:// 开头,缺少域名或 IP
./PayNotify.aspx
URL 中填写了本地或者内网IP
http://127.0.0.1/pay/notify.php
填写了不是 UR L 格式的字符串
xxxxxxx,1234567,test
回调处理逻辑注意事项:
notify_url的代码处理逻辑不能做登录态校验。
商户系统收到支付结果通知,需要在5秒内返回应答报文,否则应用支付认为通知失败,后续会重复发送通知。
同样的通知可能会多次发送给商户系统,商户系统必须能够正确处理重复的通知。如果已处理过,直接给应用支付返回成功。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈