个人网站如何接入微信、支付宝收款
一条可用的个人网站收款链路包含五部分:收款码、订单接口、支付页面、安卓到账监听和业务回调。不要只验证“能扫码”,还要验证“订单能准确变成已支付”。
一、准备接入环境
- 准备本人微信、支付宝的无固定金额收款二维码。
- 准备持续联网的安卓设备或模拟器,并允许读取支付应用通知。
- 业务网站准备 HTTPS 回调地址,能够接收 GET 请求。
- 服务端保存通讯密钥,不要把签名逻辑放在浏览器中。
二、配置支付后台
在蓝鲸支付后台“系统设置”中填写异步回调、同步回调、通讯密钥和订单有效期,并上传微信码、支付宝码。金额区分方式可选择递增或递减,用于并发同金额订单的匹配。
创建订单时单独传入的
notifyUrl 会优先于后台默认异步回调地址。建议生产环境固定域名并启用 HTTPS。三、服务端创建订单
请求地址为商户域名下的 /createOrder,支持 GET 或 POST。核心参数包括商户订单号 payId、透传参数 param、支付方式 type、金额 price 和签名 sign。
sign = md5(payId + param + type + price + 通讯密钥)
type=1 表示微信,type=2 表示支付宝。isHtml=0 返回 JSON;非 0 时会跳转到支付页。商户订单号必须在业务系统内唯一。
四、展示支付信息
JSON 结果的 data 中包含平台订单号、订单金额、实际需付金额、二维码内容、状态和超时信息。前端应明确展示实际应付金额,并在订单过期后停止轮询或重新创建订单。
五、保持安卓监听在线
监听端需要通知读取权限、稳定网络和后台运行能力。完成配置后分别用微信和支付宝支付小额测试订单,确认通知被读取、到账被上报,并检查手机锁屏后仍能工作。
六、验签并更新业务订单
异步通知字段包括 payId、param、type、price、reallyPrice 和 sign。业务端按下式验签:
sign = md5(payId + param + type + price + reallyPrice + 通讯密钥)
验签通过后,按 payId 查询订单并执行幂等更新,最后输出纯文本小写 success。不要返回 JSON、HTML 或附加空格说明。
七、上线检查清单
- 密钥仅保存在服务端,日志不输出完整密钥和签名原文。
- 订单号唯一,金额使用十进制定点类型处理。
- 回调先验签,再校验订单状态、金额和支付方式。
- 同一回调重复到达不会重复发货或重复充值。
- 为监听离线、订单超时和通知失败建立告警与人工处理入口。
