| 下单网关 | https://pay.7788.cab/Pay_Index.html |
|---|---|
| 查询网关 | https://pay.7788.cab/Pay_Trade_query.html |
| 回调出口 IP | 207.57.126.133 |
| 商户号 / 密钥 | 由平台分配(后台「商户」处查看) |
| 参数 | 说明 |
|---|---|
| pay_memberid | 平台分配的商户号 |
| pay_orderid | 你的订单号(回调和查单原样返回) |
| pay_applydate | 北京时间 YYYY-MM-DD HH:mm:ss |
| pay_bankcode | 产品编号(见第五节表;微信 8000 起 / 支付宝 9000 起,如 8000 微信收款码 / 8001 微信扫码(Native) / 8002 微信H5 / 8003 微信内支付(JSAPI) / 8006 微信被扫 / 9000 支付宝收款码)。旧写法 wx / ali / wx-qr 等仍兼容 |
| pay_notifyurl | 异步通知地址 |
| pay_callbackurl | 同步跳转地址 |
| pay_amount | 金额(元,两位小数,如 100.00) |
| pay_productname | 商品名称 |
| pay_openid | 微信内支付(JSAPI,8003)必填:付款人在该公众号下的 openid(顾客在微信里打开收银台时,若后台填了公众号 AppSecret 会自动获取,可不传) |
| pay_buyerid | 支付宝内支付(JSAPI,9004)必填:付款人的支付宝用户号 buyer_id(2088 开头;顾客在支付宝里打开收银台时会自动走授权获取,可不传) |
| pay_authcode | 付款码(被扫,8006 / 9006)可选:顾客「收付款」里的那串数字,传了就同步扣款 |
| pay_ip | 下单 IP |
| pay_md5sign | 见下签名规则 |
签名:把 pay_amount / pay_applydate / pay_bankcode / pay_callbackurl / pay_memberid / pay_notifyurl / pay_orderid 去空后按字段名字典序拼成 k=v&,末尾加 &key=密钥,取 MD5 大写。
(平台对大小写宽容:大写/小写都能通过;仍请按上面的 MD5 大写实现,免得以后换平台踩坑。)
成功返回:{"status":"1","h5_url":"收银台地址","order_id":"本平台单号","mch_order_id":"你的单号"}
参数 pay_memberid / pay_orderid / pay_md5sign(只签这两个字段)。
返回 orderstatus = "1" 表示已支付。
支付成功后本平台 POST 到你的 pay_notifyurl(form):
| 字段 | 说明 |
|---|---|
| memberid | 你的商户号 |
| orderid | 你下单时的 pay_orderid |
| amount | 金额(元) |
| datetime | 北京时间 |
| returncode | 固定 00 表示已支付 |
| transaction_id | 三方交易号 |
| sign | MD5 大写(字段清单:amount, datetime, memberid, orderid, returncode, transaction_id) |
处理成功后请返回大写 OK,否则本平台将重试。
下单时 pay_bankcode 填的编号,必须是下表里已开通的「产品编号」,一字不差;编号规则:微信 8000 起、支付宝 9000 起。
多个产品可以同时运营:下表每个产品各自独立开通、各自一份收款设置(收款码 / 凭证 / 官方接口),开几个都行,互不影响。
| 产品编号 | 名称 | 归属 | 类型 | 运营状态 |
|---|---|---|---|---|
| 9000 | 支付宝收款码 | 支付宝 | 收款码(手机监听) | 未开通 |
| 9001 | 支付宝扫码支付 | 支付宝 | 扫码支付(当面付) | 未开通 |
| 9002 | 支付宝H5支付 | 支付宝 | H5 支付 | 未开通 |
| 9003 | 支付宝PC网页支付 | 支付宝 | PC 网页支付 | 在运营 |
| 9004 | 支付宝内支付(JSAPI) | 支付宝 | 客户端内支付(JSAPI) | 在运营 |
| 9005 | 支付宝APP支付 | 支付宝 | APP 支付 | 预留(未开通) |
| 9006 | 支付宝付款码(被扫) | 支付宝 | 付款码(被扫) | 未开通 |
| 6000 | PayPal 网页收款(跳转) | PayPal(贝宝·海外) | 海外跳转支付(收银台) | 未开通 |
| 6001 | PayPal 二维码收款 | PayPal(贝宝·海外) | 海外跳转支付(收银台) | 未开通 |
| 6002 | PayPal H5收款 | PayPal(贝宝·海外) | 海外跳转支付(收银台) | 未开通 |
| 6003 | PayPal 手机收款 | PayPal(贝宝·海外) | 海外跳转支付(收银台) | 未开通 |
| 7800 | 微信海外 网页收款 | 微信支付(境外 Tenpay Global) | 海外跳转支付(收银台) | 未开通 |
| 7801 | 微信海外 二维码收款 | 微信支付(境外 Tenpay Global) | 海外跳转支付(收银台) | 未开通 |
| 7802 | 微信海外 H5收款 | 微信支付(境外 Tenpay Global) | 海外跳转支付(收银台) | 未开通 |
| 7803 | 微信海外 手机收款 | 微信支付(境外 Tenpay Global) | 海外跳转支付(收银台) | 未开通 |
| 8000 | 微信收款码 | 微信支付 | 收款码(手机监听) | 未开通 |
| 8001 | 微信扫码支付 | 微信支付 | 扫码支付(Native) | 在运营 |
| 8002 | 微信H5支付 | 微信支付 | H5 支付 | 未开通 |
| 8003 | 微信内支付(JSAPI) | 微信支付 | 客户端内支付(JSAPI) | 在运营 |
| 8004 | 微信小程序支付 | 微信支付 | 小程序支付 | 在运营 |
| 8005 | 微信APP支付 | 微信支付 | APP 支付 | 预留(未开通) |
| 8006 | 微信付款码(被扫) | 微信支付 | 付款码(被扫) | 未开通 |
| 9800 | 支付宝海外 网页收款 | 支付宝(境外 Alipay+ / Antom) | 海外跳转支付(收银台) | 未开通 |
| 9801 | 支付宝海外 二维码收款 | 支付宝(境外 Alipay+ / Antom) | 海外跳转支付(收银台) | 未开通 |
| 9802 | 支付宝海外 H5收款 | 支付宝(境外 Alipay+ / Antom) | 海外跳转支付(收银台) | 未开通 |
| 9803 | 支付宝海外 手机收款 | 支付宝(境外 Alipay+ / Antom) | 海外跳转支付(收银台) | 未开通 |
下单 / 查单都是 HTTP 200 + JSON:status="1" 表示受理成功,status="0" 表示被拒(msg 里是原因)。按下面自查,多数问题自己就能定位。
| 返回 | 原因 / 怎么改 |
|---|---|
| {"status":"0","msg":"不存在的商户编号"} | pay_memberid 写错(必须与平台分配给你的一字不差),或该商户已被停用 |
| {"status":"0","msg":"签名校验失败"} | 签名口径不对。下单只签这 7 个字段:pay_amount / pay_applydate / pay_bankcode / pay_callbackurl / pay_memberid / pay_notifyurl / pay_orderid(去空 → 字段名字典序 → k=v& 拼接 → 末尾 &key=密钥 → MD5 大写)。漏签、多签、拼错顺序、大小写写错都会失败 |
| {"status":"0","msg":"订单号不能为空"} | pay_orderid 必填(你自己的订单号,回调与查单都按它原样返回) |
| {"status":"0","msg":"金额不在允许范围"} | pay_amount 传元、最多两位小数(如 100.00),且在本平台允许的金额区间内 |
| {"status":"0","msg":"不存在的产品编号:X"} | pay_bankcode 填错 —— 请填第五节表里已开通的编号 |
| {"status":"0","msg":"(其它说明)"} | 产品已开通但还在配置中(收款码 / 凭证未就绪),平台会说明具体差什么;稍后重试或联系平台 |
| 查单 {"status":"0","msg":"订单不存在"} | 查单只认你下单时提交的 pay_orderid,对不上就查不到 |