盛付通
开通需联系客服。默认开通 D1 到账,适合线下场景,尤其是非异地交易。
- 进件审核快,一般 5 分钟内显示审核结果。
- 支持小微、个体、企业进件。
- 可结算到对私账户,也支持非法人对私结算。
PandaPay Open Platform
本文档提供线上支付、退款接入说明与接口签名规则。商户完成开户进件并开通对应 API 权限后,可按本文档发起支付、退款及查询请求,并校验结果通知签名。
https://pay.chengzhangtong.com
接入指引
禁止接入的内容包括但不限于以下内容。我们对违规行为零容忍,一经发现将关闭支付接口权限,关联商户清退,并视违规情况报警处理。
诈骗、BC、赛车、V 盘、X 资金盘、贷款、P2P、汇兑、ICO、二清支付、金融类严禁接入。
1 元购类、高额返利类、多级分销类、盲盒类、单纯形式抽奖类、发卡平台严禁接入。
恋爱话术类、数字藏品、色情、政治相关、影视小说、电子书、游戏平台严禁接入。
付费入群、帐号销售、刷单、卡盟平台、刷粉、VPN、售卖假货严禁接入。
微信/支付宝官方要求禁止接入的、所有国家法规规定禁止的内容严禁接入。
其它经工作人员鉴定不适合接入的业务严禁接入。
以上内容严禁接入。一经发现,将关闭支付接口权限,关联商户清退,并视违规情况报警处理。
微信官方禁止接入行业:http://kf.qq.com/faq/140225MveaUz150123raQRNN.html
支付宝官方禁止接入行业:https://cshall.alipay.com/enterprise/knowledgeDetail.htm?knowledgeId=201602055422
我们欢迎 SaaS 软件、各行业解决方案服务商入驻平台,并提供一对一的技术对接支持。
接入指引
商户注册后即可登录商户系统,并根据业务需要完成进件、认证和接口权限开通。
注册成功后,请登录商户系统继续完成资料提交和后续支付通道开通流程。
接入指引
商户开通支付通道,一般需要完成与支付公司的合同签约、微信认证、支付宝认证。具体材料、审核流程和通道能力,以每个支付渠道的要求为准。
根据业务场景选择合适的支付渠道,并按渠道要求提交主体资料、结算账户、经营信息、门店或线上场景信息。审核通过后,商户可获得对应支付通道的交易能力。
进件成功后,请联系代理商或计全运营人员,开通支付接口权限。开通接口通常会产生商户接入费,具体费用以商务或运营确认结果为准。
支付接口对接:https://mch.chengzhangtong.com/register
开通需联系客服。默认开通 D1 到账,适合线下场景,尤其是非异地交易。
开通需联系客服。默认开通 D1 到账,可设置自助结算。
对于部分平台,如需开通微信渠道号,请单独联系运营开通。开通渠道号后,可统一使用平台小程序为商户提供支付接入能力。
接入指引
如商户有线上支付需求,请在开户进件完成后联系运营或商务开通 API 接口权限。正式使用前,网站、App、小程序等业务载体需满足平台合规要求。
支付相关页面、收银台链接、跳转链接和接口回调中涉及支付网关时,统一使用 https://pay.chengzhangtong.com。该域名根路径不提供页面,浏览器直接打开返回 404 属于正常现象;业务接口需按文档路径发起 POST 请求。
| 接口地址 | POST https://pay.chengzhangtong.com/api/pay/unifiedOrder |
|---|---|
| 内容类型 | application/json; charset=UTF-8 |
| 签名方式 | MD5 |
| 金额单位 | 分。例如 1 元传 100,0.01 元传 1。 |
| 字段 | 说明 |
|---|---|
mchNo | PandaPay 分配的平台商户号。 |
appId | PandaPay 分配的应用 AppID。 |
mchOrderNo | 商户系统订单号,同一商户下不可重复。 |
wayCode | 支付方式编码,例如 WX_H5、ALI_WAP、WEB_CASHIER。 |
amount | 订单金额,单位为分。 |
currency | 币种,固定传 CNY 或 cny。 |
clientIp | 用户真实 IP,H5/风控场景必须准确传入。 |
subject | 商品标题。 |
body | 商品描述。 |
notifyUrl | 支付结果异步通知地址,生产交易建议必传。 |
returnUrl | 用户支付完成后的前端跳转地址。 |
reqTime | 请求时间戳,推荐 13 位毫秒时间戳。 |
version | 接口版本,当前传 1.0。 |
signType | 签名类型,当前传 MD5。 |
sign | 按签名规则生成的签名值。 |
统一下单时传入 wayCode = WEB_CASHIER,接口会返回 Web 统一收银台地址。用户打开后,系统会根据访问终端展示适配的支付方式。
| 打开场景 | 支持方式 |
|---|---|
| PC 端 | 聚合码、微信扫码、支付宝 PC 支付 |
| 手机 H5 | 微信 H5、支付宝 H5、微信小程序、支付宝小程序、支付宝生活号 |
| 微信客户端 | 微信公众号支付 |
| 支付宝客户端 | 支付宝生活号支付 |
统一下单时传入 wayCode = QR_CASHIER,接口返回二维码地址,用户扫码后完成支付。默认 channelExtra 为空时按 JSAPI 场景处理;如需小程序包装,可传入对应入口参数。
原生 App 可使用 WX_APP 或 ALI_APP 获取调起微信、支付宝 SDK 所需参数。推荐方案是使用 QR_CASHIER 并在 channelExtra 中传入小程序包装参数。
{
"entryLiteType": "wxapp"
}
返回的 payData 中会包含小程序跳转所需字段,例如:
{
"path": "pages/hub/lite",
"qrUrl": "https://pay.chengzhangtong.com/cashier/pages/hub/h5/?jeepayToken=示例token",
"ghid": "gh_xxxxxxxxxxxx",
"env": "release"
}
商户使用自有公众号或小程序支付时,可在统一下单中传 wayCode = WX_JSAPI 或 wayCode = WX_LITE,并在 channelExtra 中带上 subAppId 与 openid。
{
"subAppId": "wx08b5a41f7a27abf1",
"openid": "o6BcIwvSiRpfS8e_UyfQNrYuk2LI"
}
如采用服务商小程序承载支付,可使用 QR_CASHIER 并按返回的 payData 跳转。跳转 URL 统一使用 pay.htdata.us 域名。
手机浏览器中可传 wayCode = WX_H5 获取微信 H5 支付链接。推荐方式是使用 QR_CASHIER 并设置 entryLiteType = wxh5,返回的 payData 为可打开的支付链接。
手机浏览器中可传 wayCode = ALI_WAP 获取支付宝 H5 支付链接。也可使用小程序包装方式:QR_CASHIER + entryLiteType = alih5。
{
"code": 0,
"data": {
"mchOrderNo": "mho1685287074463",
"orderState": 0,
"payData": "alipays://platformapi/startapp?appId=示例appId&page=pages/hub/lite&query=qrCode=https://pay.chengzhangtong.com/cashier/pages/hub/h5/?jeepayToken=示例token",
"payDataType": "payurl",
"payOrderId": "P1662840631865769986"
},
"msg": "SUCCESS",
"sign": "示例签名"
}
接口文档
客户系统只对接 PandaPay 开放平台,不需要也不应该直接请求有赞或高汇通接口。有赞服务商商户号、二级商户号、证书、公私钥和通道参数由 PandaPay 后台配置并维护。
| 客户传入 | PandaPay 通道处理 | 返回拉起字段 |
|---|---|---|
wayCode = WX_H5 | 有赞通道下发公共微信小程序收银台能力。 | payDataType = payurl,payData 为 https://wxmpurl.cn/... 链接。 |
wayCode = ALI_WAP | 有赞通道下发支付宝收银台能力。 | payDataType = payurl,payData 为 https://cashier.youzan.com/pay/buyer/open... 链接。 |
wayCode = WEB_CASHIER | PandaPay Web 收银台,由用户选择支付方式。 | payData 为 PandaPay 收银台 URL。 |
wayCode = QR_CASHIER | PandaPay 聚合收银台或小程序包装入口。 | payData 返回二维码或包装跳转信息。 |
{
"mchNo": "平台商户号",
"appId": "平台应用AppID",
"mchOrderNo": "PAYOUT202608260001",
"wayCode": "WX_H5",
"amount": 100,
"currency": "CNY",
"clientIp": "用户真实IP",
"subject": "测试商品",
"body": "测试商品",
"notifyUrl": "https://example.com/pay/notify",
"returnUrl": "https://example.com/pay/return",
"reqTime": "1787635459102",
"version": "1.0",
"signType": "MD5",
"sign": "按商户key生成的签名"
}
{
"mchNo": "平台商户号",
"appId": "平台应用AppID",
"mchOrderNo": "PAYOUT202608260002",
"wayCode": "ALI_WAP",
"amount": 100,
"currency": "CNY",
"clientIp": "用户真实IP",
"subject": "测试商品",
"body": "测试商品",
"notifyUrl": "https://example.com/pay/notify",
"returnUrl": "https://example.com/pay/return",
"reqTime": "1787635459102",
"version": "1.0",
"signType": "MD5",
"channelExtra": {
"payDataType": "payUrl"
},
"sign": "按商户key生成的签名"
}
{
"code": 0,
"data": {
"mchOrderNo": "PAYOUT202608260001",
"orderState": 1,
"payData": "https://wxmpurl.cn/示例链接",
"payDataType": "payurl",
"payOrderId": "P209xxxxxxxxxxxx"
},
"msg": "SUCCESS",
"sign": "响应签名"
}
返回 code = 0 且 msg = SUCCESS 只表示下单请求成功,不代表用户已经付款。请以异步回调或订单查询中的支付成功状态为准。
接口文档
客户系统统一调用 PandaPay 申请及查询退款,不直接请求有赞或其他渠道。退款沿原支付订单的渠道处理,不需要重新传入支付方式或渠道编号;需先开通商户 API 退款权限,且原订单已支付成功、存在可退余额。
本节描述当前线上商户接口。下列订单号、时间戳、签名与通知地址均为示意,接入时请替换并重新签名;示例不代表真实退款或到账凭证。
| 字段 | 必填 | 说明 |
|---|---|---|
mchNo | 是 | 平台商户号,最长64字符。 |
appId | 是 | 该商户原支付订单所属的应用AppID,最长64字符。 |
reqTime | 是 | 请求时间戳字符串;请求时生成当前13位毫秒时间戳。 |
version | 是 | 接口版本,传 1.0。 |
signType | 是 | 按当前接入方式传 MD5。 |
sign | 是 | 使用该应用的商户key,按签名规则生成。 |
| 项目 | 说明 |
|---|---|
| 接口地址 | POST https://pay.chengzhangtong.com/api/refund/refundOrder |
| 内容类型 | application/json; charset=UTF-8 |
| 金额单位 | 整数,单位为分;例如原支付100分,退20分,传 refundAmount = 20。 |
| 业务字段 | 必填 | 说明 |
|---|---|---|
payOrderId | 二选一 | 平台原支付订单号,最长30字符;与 mchOrderNo 至少传一个,建议选一种明确的查询条件。 |
mchOrderNo | 二选一 | 商户原支付订单号,最长64字符,不是商户退款单号。 |
mchRefundNo | 是 | 商户退款单号,最长64字符;同一商户内唯一,一次退款申请对应一个编号。 |
refundAmount | 是 | 本次退款金额,整数分,至少1分,不能超过原订单剩余可退金额。 |
currency | 是 | 与原交易币种保持一致,人民币使用 CNY。 |
refundReason | 是 | 退款原因,最长256字符。 |
clientIp | 否 | 用户真实IP,最长128字符。 |
notifyUrl | 否 | 本次退款的异步通知地址,最长128字符,支持HTTP或HTTPS,生产建议HTTPS;不自动沿用支付申请的通知地址。若后台已配置商户统一退款通知地址,线上系统优先使用该配置。 |
extParam | 否 | 商户扩展参数,最长512字符,可在退款查询或通知中返回。 |
channelExtra | 否 | 渠道附加参数,最长512字符的JSON字符串;仅在对应渠道已明确要求时传入,不自行拼造。 |
{
"mchNo": "平台商户号",
"appId": "原支付订单所属应用AppID",
"payOrderId": "P平台支付订单号",
"mchRefundNo": "REFUND202610210001",
"refundAmount": 20,
"currency": "CNY",
"refundReason": "客户申请部分退款",
"clientIp": "用户真实IP",
"notifyUrl": "https://example.com/refund/notify",
"extParam": "商户自定义关联信息",
"reqTime": "请求时生成的13位毫秒时间戳",
"version": "1.0",
"signType": "MD5",
"sign": "按商户key生成的签名"
}
{
"code": 0,
"data": {
"refundOrderId": "R平台退款订单号",
"mchRefundNo": "REFUND202610210001",
"payAmount": 100,
"refundAmount": 20,
"state": 1
},
"msg": "SUCCESS",
"sign": "响应签名"
}
code = 0、msg = SUCCESS 只表示本次接口调用成功。必须继续检查 data.state;上例 state = 1 表示退款中。即时成功也可能返回 state = 2,不能把所有正常响应都当成已退款。
| 字段 | 说明 |
|---|---|
refundOrderId | 平台退款订单号。 |
mchRefundNo | 商户退款单号。 |
payAmount | 原支付金额,单位为分。 |
refundAmount | 本次退款金额,单位为分。 |
state | 退款状态,见下方状态表。 |
channelOrderNo | 渠道退款单号,渠道返回后才可能有值;与原支付的渠道交易号不同。 |
errCode / errMsg | 渠道错误码及说明,存在错误时按实际响应排查;字段可能为空或省略。 |
接口地址:POST https://pay.chengzhangtong.com/api/refund/query,内容类型与公共签名参数同退款申请。该接口返回 PandaPay 已保存的退款结果,并不等同于每次请求都会实时调用上游渠道查单。结果仍在处理中时,应等待状态更新或联系平台核对。
| 查询字段 | 必填 | 说明 |
|---|---|---|
mchRefundNo | 二选一 | 商户退款单号,最长64字符。 |
refundOrderId | 二选一 | 平台退款订单号,最长30字符。两者至少传一个;使用原退款单标识,不另造新号。 |
{
"mchNo": "平台商户号",
"appId": "原支付订单所属应用AppID",
"mchRefundNo": "REFUND202610210001",
"reqTime": "请求时生成的13位毫秒时间戳",
"version": "1.0",
"signType": "MD5",
"sign": "按商户key生成的签名"
}
{
"code": 0,
"data": {
"refundOrderId": "R平台退款订单号",
"payOrderId": "P平台支付订单号",
"mchNo": "平台商户号",
"appId": "原支付订单所属应用AppID",
"mchRefundNo": "REFUND202610210001",
"payAmount": 100,
"refundAmount": 20,
"currency": "CNY",
"state": 2,
"channelOrderNo": "渠道退款单号",
"extParam": "商户自定义关联信息",
"successTime": 1792573200000,
"createdAt": 1792573140000
},
"msg": "SUCCESS",
"sign": "响应签名"
}
查询返回包含申请响应中的状态、金额、渠道退款号及错误字段,并增加 payOrderId、mchNo、appId、currency、extParam、successTime 和 createdAt。时间为毫秒时间戳;successTime 在尚未成功时可能为空或省略。
| state | 含义 | 商户处理建议 |
|---|---|---|
0 | 订单生成 | 已生成本地退款单,尚不能确认退款完成;继续核对原退款。 |
1 | 退款中 | 等待结果,不因等待或超时而重复申请。 |
2 | 退款成功 | 验签并核对订单、商户和金额后,按该退款单完成业务处理。 |
3 | 退款失败 | 查看错误说明并核对原因;是否再次申请应人工确认,不能自动换号重退。 |
4 | 退款任务关闭 | 表示平台退款任务已关闭,不等于渠道一定未退款;先联系平台核实上游最终结果。 |
平台产生退款结果通知时,向退款单生效的通知地址发起 POST。是否发送受商户退款通知开关、通知地址及处理结果影响;不能把“未收到通知”判断为退款未发生,也不能保证所有错误都会另发通知。
通知内容使用退款查询结果字段,并增加 reqTime 与 sign;通知中的 state 才是该次退款业务状态。实际报文承载格式以商户后台通知类型配置为准:
| 通知配置 | 参数读取位置 |
|---|---|
| 表单POST(默认) | application/x-www-form-urlencoded 请求体。 |
| JSON POST | application/json 请求体。 |
| URL参数POST | 请求仍为POST,业务参数放在通知URL的查询字符串中。 |
{
"refundOrderId": "R平台退款订单号",
"payOrderId": "P平台支付订单号",
"mchNo": "平台商户号",
"appId": "原支付订单所属应用AppID",
"mchRefundNo": "REFUND202610210001",
"payAmount": 100,
"refundAmount": 20,
"currency": "CNY",
"state": 2,
"channelOrderNo": "渠道退款单号",
"extParam": "商户自定义关联信息",
"successTime": 1792573200000,
"createdAt": 1792573140000,
"reqTime": 1792573201000,
"sign": "退款通知签名"
}
mchNo、appId、refundOrderId / mchRefundNo、原支付单和本次退款金额,并以 state 判断结果。SUCCESS,不要包成JSON或HTML。应答只表示通知接收成功,不代表商户可以忽略通知状态。SUCCESS
refundAmount 是本次金额,不是累计金额。累计成功退款不能超过原支付金额;有在途退款时,平台可能拒绝新的申请。mchRefundNo 必须保留。重复提交已有编号可能返回“商户退款订单号已存在”,并不承诺重放上次成功响应;应转为查询该退款单。接口文档
客户在统一下单时传入 notifyUrl 后,PandaPay 会在订单支付成功后向该地址发起异步通知。客户收到通知后需要验签,并返回 SUCCESS 表示接收成功。
| 请求方式 | POST |
|---|---|
| 通知地址 | 以下单请求中的 notifyUrl 为准。 |
| 通知状态 | 后台订单的 notify_state 表示商户通知处理进度。 |
{
"payOrderId": "P209xxxxxxxxxxxx",
"mchOrderNo": "PAYOUT202608260001",
"mchNo": "平台商户号",
"appId": "平台应用AppID",
"amount": 100,
"currency": "CNY",
"state": 2,
"wayCode": "WX_H5",
"ifCode": "youzanpay",
"channelOrderNo": "有赞交易号",
"successTime": 1787639451000,
"sign": "通知签名"
}
| 接口地址 | POST https://pay.chengzhangtong.com/api/pay/query |
|---|---|
| 查询条件 | 传 mchNo、appId、mchOrderNo 或 payOrderId,并按 MD5 规则签名。 |
如客户没有收到异步通知,应先用订单查询接口确认订单最终状态。支付成功但未收到通知时,请检查客户服务器是否能被公网访问、是否返回 SUCCESS、是否拦截了 PandaPay 服务器 IP。
接入排错
https://pay.chengzhangtong.com 是接口网关,不是网页首页。直接浏览器打开根路径返回 404 正常;统一下单应请求 POST https://pay.chengzhangtong.com/api/pay/unifiedOrder。
统一下单接口只接受 POST,浏览器地址栏直接访问属于 GET,会返回 405。
只有通过 PandaPay 统一下单接口创建的订单才会进入 PandaPay 后台并触发商户回调。直接调用有赞或高汇通接口生成的订单,不会写入 PandaPay 订单表。
请确认使用手机浏览器或对应客户端打开返回的 payData,并确认商户已开通对应通道权限。有赞微信能力当前按公共小程序收银台拉起,不能配置为未开通的 Web 收银台能力。
接口文档
| 传输方式 | HTTP;生产环境建议 HTTPS |
|---|---|
| 提交方式 | POST 或 GET |
| 内容类型 | application/json |
| 字符编码 | UTF-8 |
| 签名算法 | MD5 |
1622016572190。key=value 格式拼接为 key1=value1&key2=value2 形式的待签名字符串。sign 字段不参与待签名字符串拼接。&key=商户私钥。sign。支付中心接口后续可能增加扩展字段。验签时应按收到的完整字段集合参与排序和签名,不能只固定校验既有字段。
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("mchNo", "M1682391685");
paramsMap.put("appId", "6447428682ca7458118af79f");
paramsMap.put("mchOrderNo", "mho1694051705945");
paramsMap.put("wayCode", "ALI_BAR");
paramsMap.put("amount", 1L);
paramsMap.put("currency", "CNY");
paramsMap.put("clientIp", "192.166.1.132");
paramsMap.put("subject", "商品标题");
paramsMap.put("body", "商品描述");
paramsMap.put("notifyUrl", "https://example.com/notify");
paramsMap.put("reqTime", "1694051706");
paramsMap.put("version", "1.0");
paramsMap.put("signType", "MD5");
paramsMap.put("channelExtra", "{\"authCode\":\"284957415846666792\"}");
amount=1&appId=6447428682ca7458118af79f&body=商品描述&channelExtra={"authCode":"284957415846666792"}&clientIp=192.166.1.132¤cy=CNY&mchNo=M1682391685&mchOrderNo=mho1694051705945¬ifyUrl=https://example.com/notify&reqTime=1694051706&signType=MD5&subject=商品标题&version=1.0&wayCode=ALI_BAR&key=商户私钥
{
"amount": 1,
"mchOrderNo": "mho1694051705945",
"subject": "商品标题",
"wayCode": "ALI_BAR",
"sign": "924065BA077FA461A9B06D2E76E9ED3C",
"reqTime": "1694051706",
"body": "商品描述",
"version": "1.0",
"channelExtra": "{\"authCode\":\"284957415846666792\"}",
"appId": "6447428682ca7458118af79f",
"clientIp": "192.166.1.132",
"notifyUrl": "https://example.com/notify",
"signType": "MD5",
"currency": "CNY",
"mchNo": "M1682391685"
}