PandaPay Open Platform

PandaPay 开放平台接入文档

本文档仅保留线上支付接入说明与接口签名规则。商户完成开户进件并开通 API 权限后,可按本文档发起支付请求并校验回调签名。

生产支付域名 https://pay.htdata.us

接入指引

开通支付通道

商户开通支付通道,一般需要完成与支付公司的合同签约、微信认证、支付宝认证。具体材料、审核流程和通道能力,以每个支付渠道的要求为准。

第一步:完成渠道签约

根据业务场景选择合适的支付渠道,并按渠道要求提交主体资料、结算账户、经营信息、门店或线上场景信息。审核通过后,商户可获得对应支付通道的交易能力。

第二步:开通接口

进件成功后,请联系代理商或计全运营人员,开通支付接口权限。开通接口通常会产生商户接入费,具体费用以商务或运营确认结果为准。

支付接口对接:https://mch.htdata.us/register

推荐支付渠道

盛付通

开通需联系客服。默认开通 D1 到账,适合线下场景,尤其是非异地交易。

  • 进件审核快,一般 5 分钟内显示审核结果。
  • 支持小微、个体、企业进件。
  • 可结算到对私账户,也支持非法人对私结算。

易宝支付

开通需联系客服。默认开通 D1 到账,可设置自助结算。

  • 进件审核快,一般 5 分钟内显示审核结果。
  • 支持个体、企业进件,可进微信线上通道,费率相对较高。
  • 支持高比例分账,可分账给小微、个体、企业。
微信渠道号

对于部分平台,如需开通微信渠道号,请单独联系运营开通。开通渠道号后,可统一使用平台小程序为商户提供支付接入能力。

接入指引

线上支付说明

如商户有线上支付需求,请在开户进件完成后联系运营或商务开通 API 接口权限。正式使用前,网站、App、小程序等业务载体需满足平台合规要求。

接口域名

支付相关页面、收银台链接、跳转链接和接口回调中涉及支付网关时,统一使用 https://pay.htdata.us

统一收银台

统一下单时传入 wayCode = WEB_CASHIER,接口会返回 Web 统一收银台地址。用户打开后,系统会根据访问终端展示适配的支付方式。

打开场景支持方式
PC 端聚合码、微信扫码、支付宝 PC 支付
手机 H5微信 H5、支付宝 H5、微信小程序、支付宝小程序、支付宝生活号
微信客户端微信公众号支付
支付宝客户端支付宝生活号支付

聚合码支付

统一下单时传入 wayCode = QR_CASHIER,接口返回二维码地址,用户扫码后完成支付。默认 channelExtra 为空时按 JSAPI 场景处理;如需小程序包装,可传入对应入口参数。

移动 App 支付

原生 App 可使用 WX_APPALI_APP 获取调起微信、支付宝 SDK 所需参数。推荐方案是使用 QR_CASHIER 并在 channelExtra 中传入小程序包装参数。

{
  "entryLiteType": "wxapp"
}

返回的 payData 中会包含小程序跳转所需字段,例如:

{
  "path": "pages/hub/lite",
  "qrUrl": "https://pay.htdata.us/cashier/pages/hub/h5/?jeepayToken=示例token",
  "ghid": "gh_xxxxxxxxxxxx",
  "env": "release"
}

公众号或小程序支付

商户使用自有公众号或小程序支付时,可在统一下单中传 wayCode = WX_JSAPIwayCode = WX_LITE,并在 channelExtra 中带上 subAppIdopenid

{
  "subAppId": "wx08b5a41f7a27abf1",
  "openid": "o6BcIwvSiRpfS8e_UyfQNrYuk2LI"
}

如采用服务商小程序承载支付,可使用 QR_CASHIER 并按返回的 payData 跳转。跳转 URL 统一使用 pay.htdata.us 域名。

微信 H5 支付

手机浏览器中可传 wayCode = WX_H5 获取微信 H5 支付链接。推荐方式是使用 QR_CASHIER 并设置 entryLiteType = wxh5,返回的 payData 为可打开的支付链接。

支付宝 H5 支付

手机浏览器中可传 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.htdata.us/cashier/pages/hub/h5/?jeepayToken=示例token",
    "payDataType": "payurl",
    "payOrderId": "P1662840631865769986"
  },
  "msg": "SUCCESS",
  "sign": "示例签名"
}

接口文档

签名规则

协议规则

传输方式HTTP;生产环境建议 HTTPS
提交方式POSTGET
内容类型application/json
字符编码UTF-8
签名算法MD5

参数规范

签名生成步骤

  1. 将请求或响应中的非空参数按参数名 ASCII 码从小到大排序。
  2. key=value 格式拼接为 key1=value1&key2=value2 形式的待签名字符串。
  3. 验证返回或通知时,原始 sign 字段不参与待签名字符串拼接。
  4. 在字符串末尾追加 &key=商户私钥
  5. 对最终字符串做 MD5 运算,并将结果转为大写,得到 sign
兼容要求

支付中心接口后续可能增加扩展字段。验签时应按收到的完整字段集合参与排序和签名,不能只固定校验既有字段。

Java 示例

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&currency=CNY&mchNo=M1682391685&mchOrderNo=mho1694051705945&notifyUrl=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"
}