最近客户说要添加微信支付,在玩微信支付的时候遇到一个非常坑爹的问题叫做 “time_expire时间过短” ,最后找到了问题所在并解决了。
正文
在使用 NATIVE
统一下单模式的时候,用了 JS API
一样的参数,导致返回了这个错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| $unifiedOrder = new WxPayUnifiedOrder(); $unifiedOrder->SetAppid(WxPayConfig::APPID); $unifiedOrder->SetMch_id(WxPayConfig::MCHID); $unifiedOrder->SetDevice_info('WEB'); $unifiedOrder->SetNonce_str(); $unifiedOrder->SetOpenid(); $unifiedOrder->SetBody(); $unifiedOrder->SetDetail(); $unifiedOrder->SetOut_trade_no(); $unifiedOrder->SetFee_type('CNY'); $unifiedOrder->SetTotal_fee(); $unifiedOrder->SetSpbill_create_ip(); $unifiedOrder->SetTime_start(date('YmdHis',$time)); $unifiedOrder->SetTime_expire(date('YmdHis',$time + 30*60)); $unifiedOrder->SetNotify_url(); $unifiedOrder->SetTrade_type('NATIVE');
|
time_expire时间过短,刷卡至少1分钟,其他5分钟
网上查找了一下,关键问题在下面两行代码。
1 2
| $unifiedOrder->SetTime_start(date('YmdHis',$time)); $unifiedOrder->SetTime_expire(date('YmdHis',$time + 30*60));
|
这个设置在 NATIVE
模式下选填的,我的解决方法就是删去,之后就恢复正常了。
还有一个解决方案是缩短 expire
的时间。
后记
微信文档真的是坑人,学习的过程中总能发现一些不成文的规定。
参考
time_expire时间过短