使用Stripe创建Source时出现Invalid hash错误求助
嘿,我之前也碰到过Stripe IDEAL支付的这个Invalid hash错误,结合你说的是添加某行代码后才出现的情况,大概率是参数构造或者签名验证环节出了问题,给你几个实用的排查和解决方向:
优先排查新增代码的影响
先把你添加的那行代码注释掉,看看错误会不会消失——这能快速确认是不是那行代码搞的鬼。如果是的话,仔细检查那行代码的逻辑:是不是修改了Source的必填参数?比如误改了currency(IDEAL只支持欧元eur)、amount有没有用对最小单位(比如10欧元要传1000);或者是不是手动修改了请求头、签名相关的配置?Stripe PHP库会自动处理签名,手动干预很容易出错。核对参数的完整性和格式
确认创建IDEAL Source的所有必填参数都正确:type必须是ideal,amount是整数类型的最小单位金额,currency为eur,owner里的email、name格式要合规,不能有特殊字符或者空值。如果新增代码是加了metadata或者其他可选参数,也要确认这些参数的格式符合Stripe的要求(比如metadata的键值对不能太长)。检查API密钥和签名配置
确保你的Stripe API密钥(测试环境用sk_test_开头,生产用sk_live_)没有被新增代码意外修改。另外,如果你开启了Webhook签名验证,也要确认签名密钥配置正确,但这里是创建Source时的错误,更多是请求本身的签名问题,库会自动处理,除非你手动改了ApiRequestor相关的逻辑。考虑升级Stripe PHP库版本
你用的是stripe-php-4.13.0,这个版本确实比较旧了,Stripe的API规范和签名逻辑一直在更新,旧版本可能和最新的IDEAL支付流程不兼容。可以用Composer升级到最新稳定版试试:composer update stripe/stripe-php
如果还是解决不了,把你添加的那行代码和创建Source的完整代码片段贴出来,能更精准地定位问题。
你遇到的错误原文:
Fatal error: Uncaught exception 'Stripe\Error\InvalidRequest' with message 'Invalid hash' in /home/ubuntu/workspace/ideal/stripe-php-4.13.0/lib/ApiRequestor.php:110 from API request 'req_S1FAI6czFIggdC' in /home/ubuntu/workspace/ideal/stripe-php-4.13.0/lib/ApiRequestor.php on line 110
内容的提问来源于stack exchange,提问作者camdev

