问题原因:ecmall版本较低,或者是没有更新支付宝接口导致的。支付宝修改了返回参数,给支付宝增加了一个返回的状态:TRADE_SUCCESS。
解决方案:
需要修改“includes\payments\alipay\alipay.payment.php”文件中的代码,添加红字代码就可以了
switch ($notify['trade_status'])
{
case 'WAIT_SELLER_SEND_GOODS': //买家已付款,等待卖家发货 $order_status = ORDER_ACCEPTED;
break; case 'WAIT_BUYER_CONFIRM_GOODS': //卖家已发货,等待买家确认 $order_status = ORDER_SHIPPED;
break; case 'TRADE_FINISHED': //交易结束
if ($order_info['status'] == ORDER_PENDING)
{ $order_status = ORDER_ACCEPTED;
}
else
{ $order_status = ORDER_FINISHED;
}
break; case 'TRADE_SUCCESS': //交易结束 这个case是红字部分,强行手动 红字 (→_→)
if ($order_info['status'] == ORDER_PENDING)
{ $order_status = ORDER_ACCEPTED;
}
else
{ $order_status = ORDER_FINISHED;
}
break; case 'TRADE_CLOSED': //交易关闭
$order_status = ORDER_CANCLED;
break; default:
$this->_error('undefined_status');
return false;
break;
}