沙箱支付买家登录时提示“请填写支付密码”
支付阿杰
结论
这种情况通常不是商户接口参数或签名配置的问题,而是把沙箱买家账号的两种密码混用了:
- 登录密码:用于登录沙箱买家账号。
- 支付密码:用于在收银台确认付款。
登录后进入付款确认页面,还需要单独输入支付密码。如果页面提示“请填写支付密码”,说明系统正在校验支付密码。此时继续输入登录密码也无法通过。
处理步骤
1. 确认使用沙箱买家账号
支付测试必须使用支付宝开放平台沙箱环境提供的买家账号,不能使用真实支付宝账号,也不能用沙箱商家账号代替。
请在沙箱账号信息中确认:
- 买家账号
- 登录密码
- 支付密码
即使登录密码和支付密码看起来相似,也要按各自的用途填写。
2. 在对应页面填写正确的密码
正常的支付流程一般如下:
- 商户系统创建沙箱订单。
- 浏览器跳转到支付宝沙箱收银台。
- 使用沙箱买家账号和登录密码登录。
- 在付款确认页面输入支付密码。
- 支付完成后跳回
return_url,支付宝同时向notify_url发送异步通知。
如果点击“登录”后马上出现“请填写支付密码”,请先查看页面上是否还有支付密码输入框。有些沙箱收银台会在同一流程中展示登录和付款确认,提示文字容易让人误以为登录失败。
3. 从沙箱控制台重新确认密码
不要使用浏览器保存的旧密码,也不要用真实支付宝密码来推测沙箱密码。请以当前沙箱控制台显示的密码或重新设置后的密码为准。
如果账号或密码曾被重置,可以按以下步骤重新测试:
- 退出当前沙箱收银台。
- 清除该站点的 Cookie 和自动填充记录,或打开无痕窗口。
- 重新发起一笔订单。
- 手动输入沙箱买家账号、登录密码和支付密码。
4. 检查正式环境和沙箱环境是否混用
调用沙箱接口时,网关、应用 ID、密钥和买家账号必须来自同一套沙箱环境。以电脑网站支付为例,Java SDK 可以这样配置:
AlipayClient alipayClient = new DefaultAlipayClient(
"https://openapi-sandbox.dl.alipaydev.com/gateway.do",
sandboxAppId,
merchantPrivateKey,
"json",
"UTF-8",
alipayPublicKey,
"RSA2"
);
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.setReturnUrl("https://example.com/alipay/return");
request.setNotifyUrl("https://example.com/alipay/notify");
request.setBizContent("""
{
"out_trade_no": "TEST_ORDER_202609130001",
"total_amount": "0.01",
"subject": "沙箱支付测试",
"product_code": "FAST_INSTANT_TRADE_PAY"
}
""");
String form = alipayClient.pageExecute(request).getBody();
沙箱网关地址请以当前支付宝开放平台文档和控制台配置为准。如果订单能够跳转到沙箱收银台,并且页面正常显示订单金额,通常说明订单创建和签名流程已基本通过。支付密码由买家收银台校验,无法通过修改商户端代码绕过。
仍然无法支付时的排查顺序
请依次检查:
- 使用的是沙箱买家账号,不是商家账号或真实支付宝账号。
- 登录框中填写的是登录密码,付款确认框中填写的是支付密码。
- 浏览器没有自动填入旧密码。
- 网关、
app_id、应用私钥和支付宝公钥都来自同一个沙箱应用。 - 没有重复使用已经关闭、超时或状态异常的订单号。
- 使用无痕窗口或其他浏览器重新测试。
如果输入控制台提供的支付密码后仍反复出现相同提示,并且换用不同浏览器也能稳定复现,可以保存发生时间、沙箱应用 ID、订单号和页面截图,然后向支付宝开放平台技术支持反馈。仅凭“请填写支付密码”这一条提示,还不能判断支付宝沙箱发生了故障。
备注:内容仅供参考。
