1
PHP의 .NET 웹 서비스에서 datacontract로 정의 된 사용자 정의 객체를 보내고 싶습니다. SOAP을 통해이 작업을 수행하려고합니다. 여기에 내 datacontract입니다.PHP 비누 서비스 .Net webservice를 호출합니다.
[DataContract(Namespace = "www.xxxxx.com/data/v1")]
public class CreditCardSubmission
{
[DataMember]
public string CreditCardNumber { get; set; }
[DataMember]
public int ExpireMonth { get; set; }
[DataMember]
public int ExpireYear { get; set; }
[DataMember]
public string CardNickname { get; set; }
[DataMember]
public string CardholderName { get; set; }
[DataMember]
public string Address { get; set; }
[DataMember]
public string City { get; set; }
[DataMember]
public string State { get; set; }
[DataMember]
public string PostalCode { get; set; }
[DataMember]
public string Country { get; set; }
}
다음은 기능
string SubmitCreditCardInformation(string applicationSessionId,
CreditCardSubmission request)
여기 내 PHP 코드입니다. 다음은
$result2 = $client->call("UserLogin", array(
"AppSessionID" =>$result['StartAppSessionResult']'SessionID'],
"LoginName" => "xxxxxxx",
"Password" => "xxxxxxxx",
"RetrieveSecurityGroups" => FALSE));
$client_cc = new nusoap_client('https://abc.com/abc.svc?wsdl', 'WSDL');
$obj = new stdClass();
$obj->CreditCardNumber = "4518169332998699";
$obj->ExpireMonth = 05;
$obj->ExpireYear = 2025;
$obj->CardNickname = "Test Card";
$obj->CardholderName = "John Doe";
$obj->Address = "123 Main Street";
$obj->City = "Anywhere";
$obj->State = "CA";
$obj->PostalCode = "92000";
$obj->Country ="Sandeep";
$parameter= array("CreditCardSubmission" => $obj);
$result3 = $client_cc->call(
'SubmitCreditCardInformation', array($result['UserLoginResult']['SessionID']), $parameter);
내가 서비스에서지고있어 예외입니다 ". 개체의 인스턴스로 설정되지 않았습니다 개체 참조" 언제 내가 print_r ($ result3);
Array
(
[faultcode] => a:InternalServiceFault
[faultstring] => Array
(
[!xml:lang] => en-US
[!] => Object reference not set to an instance of an object.
)
[detail] => Array
(
[ExceptionDetail] => Array
(
[HelpLink] =>
[InnerException] =>
[Message] => Object reference not set to an instance of an object.
[StackTrace] => at Viad.Services.Public.GES.v1.OrderService.SubmitCreditCardInformation(String applicationSessionId, CreditCardSubmission request) in c:\SVN\Viad.GES.Services\Branches\PublicServices_v1\Viad.Services.Public.GES\v1\OrderService.svc.cs:line 1246
at SyncInvokeSubmitCreditCardInformation(Object , Object[] , Object[])
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
[Type] => System.NullReferenceException
)
)
)
우리는 $result2
에서 세션 ID를 받고, 우리는 submitcreditcardinformation
기능을 사용하여 PHP 비누를 호출 할 필요가 여기 CreditCardNumber
은 하나의 필수 필드입니다. 내가 솔루션을 가지고
'문자열 SubmitCreditCardInformation은 (문자열 applicationSessionId, CreditCardSubmission 요청)'당신은 만들 필요가 함수 ... –
아니다 $ prapms에있는 데이터를 가진'CreditCardSubmission' 객체를 만들고 SubmitCreditCardInformation으로 보냅니다. 연관 배열을 사용하여 CCS 객체를 생성하기위한 바로 가기가 있는지 API를 확인하십시오. –
죄송합니다. 비누가 좋지 않습니다. 나는 서비스에 데이터를 보내고 응답을 얻을 필요가있다. plz help –