使用drupal7建了一个酒店房间预订网站,其中使用了commerce模块,commerce_alipay模块,rooms模块,在测试时遇到了两个问题:
1,支付宝支付成功后,在日历中没有显示当天预订的房间状态。
2,由于支付宝测试了很多订单,在转移到正式机上后,跳转到支付宝页面提示如下信息,
错误描述: 抱歉,该商品的交易金额与原先的不一致,请重新创建交易付款。错误代码: TRADE_TOTALFEE_NOT_MATCH
错误描述: 抱歉,您不能进行本次支付,请查看该交易是否已超时或已被关闭等。
错误代码: TRADE_NOT_ALLOWED_PAY
第一个问题在查看rooms模块后发现其实在订单支付成功后根本没有调用rooms_booking,也就是成功支付后不是一个预订,而是一个交易完成的订单,只有订单状态是completed前的状态生成的订单才会显示在日历中。
第二个问题,是因为由于订单账号在支付宝中已经存在,以后再出现相同的订单号调用支付宝来支付就会判断出错,
"out_trade_no" => $order_id, //商品外部交易号,必填(保证唯一性)
也就是上面的这个交易号必须在支付宝中保证唯一。最好是在支付宝后台管理页面中添加一个支付宝交易号前缀,这样只要重新配置一次就不会出现问题了。