You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel使用laravel-soap调用SOAP WSDL服务认证不生效问题排查

问题根因

  • 身份认证参数放置位置错误:你将需要放到SOAP Header的AuthInfo字段写进了options配置,而options是PHP原生SoapClient的全局配置项,不会自动注入到请求Header中,因此服务端收不到认证信息,返回用户信息不完整的报错。
  • 请求体结构不符合要求:你提交的TransmEnvio参数直接包含了DatosRecogida等字段,但按接口规范这些字段需要嵌套在request节点内。

修复后代码

class Test
{ 
    protected $soapWrapper;

    public function __construct(SoapWrapper $soapWrapper)
    {
        $this->soapWrapper = $soapWrapper;
    }

    public function show()
    {
        $this->soapWrapper->add('mrw', function ($service) {
            $service
                ->wsdl('http://sagec-test.mrw.es/MRWEnvio.asmx?WSDL')
                ->trace(true)
                // 配置SOAP版本匹配接口要求的1.2版本
                ->options([
                    'soap_version' => SOAP_1_2
                ])
                // 注入SOAP Header认证信息,第三个参数为接口的命名空间
                ->header('AuthInfo', [
                    'CodigoFranquicia' => '003088',
                    'CodigoAbonado' => '0033038',
                    'CodigoDepartamento' => '',
                    'UserName' => 'Usuario',
                    'Password' => 'Password'
                ], 'http://www.mrw.es/');
        });

        // 请求参数外层包裹request节点
        $response = $this->soapWrapper->call('mrw.TransmEnvio', [
            'request' => [
                'DatosRecogida' => [
                    'Direccion' => [
                        'CodigoTipoVia'     => '',
                        'Via'       => '',
                        'Numero' => '',
                        'Resto'   => '',
                        'CodigoPostal'     => '',
                        'Poblacion'       => '',
                        'Provincia' => '',
                        'CodigoPais'   => '',
                    ],
                    'Nif' => '',
                    'Nombre' => '',
                    'Telefono' => '',
                    'Contacto' => '',
                    'Observaciones' => ''
                ],
                'DatosEntrega' => [
                    'Direccion' => [
                        'CodigoTipoVia' => 'CALLE',
                        'Via' => 'CORCEGA',
                        'Numero' => '102',
                        'Resto' => 'PISO 4B',
                        'CodigoPostal' => '08029',
                        'Poblacion' => 'BARCELONA',
                        'Provincia' => '',
                        'CodigoPais' => 'ES'
                    ],
                    'Nif' => '',
                    'Nombre' => 'PRUEBA INTEGRACION MRW',
                    'Telefono' => '622202020',
                    'Contacto' => 'PRUEBA',
                    'ALaAtencionDe' => '',
                    'Observaciones' => 'OBSERVACIONES'
                ],
                'DatosServicio' => [
                    'Fecha' => '24/08/2021',
                    'Referencia' => 'REFERENCE',
                    'CodigoServicio' => '0200',
                    'NumeroBultos' => '1',
                    'Peso' => '2',
                    'Notificaciones' => [
                        'NotificacionRequest' => [
                            'CanalNotificacion' => '',
                            'TipoNotificacion' => '',
                            'MailSMS' => ''
                        ]
                    ]
                ]
            ]
        ]);

        // 可打印实际发送的XML和预期格式对比排查问题
        // dd($this->soapWrapper->client('mrw')->__getLastRequest());

        var_dump($response);
    }        
}

补充说明

你开启了trace配置,若修改后仍然报错,可以打印出实际发送的请求XML,和预期的XML结构逐字段对比,可快速定位字段缺失、格式错误等问题。

内容的提问来源于stack exchange,提问作者jose angarita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:06:00