myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Ungelesen 22.03.14, 22:38   #1
nichdiemama
Stammi
 
Registriert seit: Jan 2010
Beiträge: 1.142
Bedankt: 1.440
nichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punkte
Standard mit php soap webservice nutzen

hi,

gibts hier leute mit erfahrung bezüglich php und soap?
ich möchte zu testzwecken die API eines Zahlungsdienstleisters ansprechen. Für den Verbindungsaufbau muss zum einen ein clientzertifikat genutzt werden, das vom anbieter geliefert wird, zusätzlich findet auth über username und passwort statt. ich habe aus dem grund auf cURL gesetzt, ist soweit alles auch kein problem. ich bin nur nicht wirklich zufrieden mit dem code den ich bisher habe und suche ansätze, wie man das eleganter lösen kann.

Code:
<?php
/* uncomment this 2 lines for debugging
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On');
*/
include 'constants.php';

if (!isset($_POST['submit'])) {} // if page is not submitted to itself echo the form
	else{
	$soaprequest = 
			'<?xml version="1.0" encoding="UTF-8"?>
			<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
				<SOAP-ENV:Header />
				<SOAP-ENV:Body>
					<ipgapi:IPGApiOrderRequest xmlns:v1="http://ipg-online.com/ipgapi/schemas/v1" xmlns:ipgapi="http://ipg-online.com/ipgapi/schemas/ipgapi">
						<v1:Transaction>
						<v1:CreditCardTxType>
							<v1:Type>sale</v1:Type>
						</v1:CreditCardTxType>
						<v1:CreditCardData>
							<v1:CardNumber>' . htmlspecialchars($_POST['CardNumber']) . '</v1:CardNumber>
							<v1:ExpMonth>' . htmlspecialchars($_POST['ExpMonth']) . '</v1:ExpMonth>
							<v1:ExpYear>' . htmlspecialchars($_POST['ExpYear']) . '</v1:ExpYear>
							<v1:CardCodeValue>' . htmlspecialchars($_POST['CardCodeValue']) . '</v1:CardCodeValue>
						</v1:CreditCardData>
						<v1:Payment>
							<v1:ChargeTotal>' . htmlspecialchars($_POST['ChargeTotal']) . '</v1:ChargeTotal>
							<v1:Currency>' . htmlspecialchars($_POST['Currency']) . '</v1:Currency>
						</v1:Payment>
						<v1:Billing>
							<v1:Name>' . htmlspecialchars($_POST['Name']) . '</v1:Name>
						</v1:Billing>  
						</v1:Transaction>
					</ipgapi:IPGApiOrderRequest>
				</SOAP-ENV:Body>
			</SOAP-ENV:Envelope>';
		$ch = curl_init($api_url);
/*
// write curl connection+request into curl.log . make sure the file exist and is set to CHMOD '666'
		$curl_log = fopen('curl.log', 'a+');    
        // settings for logging the curl request 
        curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
        curl_setopt($ch, CURLOPT_STDERR, $curl_log);
// end of curl logging options
*/		
		curl_setopt($ch, CURLOPT_POST, 1);	
		curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));	
		curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);	
		curl_setopt($ch, CURLOPT_USERPWD, $api_user . ':' . $api_user_pw);	
		curl_setopt($ch, CURLOPT_POSTFIELDS, $soaprequest);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
		curl_setopt($ch, CURLOPT_CAINFO, $api_cert_path . 'geotrust.pem');
		curl_setopt($ch, CURLOPT_SSLCERT, $api_cert_path . $storename . '/' . $api_user . '.pem');
		curl_setopt($ch, CURLOPT_SSLKEY,  $api_cert_path . $storename . '/' . $api_user . '.key');
		curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $api_cert_pw);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSLVERSION, 3); #needed to make sure that curl is not using TLS. If not set some configurations may throw "cURL-Error: SSL read: error:140920DF:SSL routines:SSL3_GET_SERVER_HELLO:parse tlsext, errno 0"
		$curl = curl_exec($ch);
		/* next 5 lines are for debugging purposes. uncomment them to print detailed information regarding the cURL request
		$ch_info = curl_getinfo($ch);
		echo 'it took ' . $ch_info['total_time'] . ' seconds to perform the request to ' . $ch_info['url'] . '<br/>';
		echo '<pre>';
			print_r ($ch_info);
		echo '</pre>';
		*/			
		
		if (curl_errno($ch)){
			echo '<br>cURL-Fehler: ' . curl_error($ch);}
		else{
			curl_close ($ch);
		// take out mixed namespaces
			$string = str_replace('ipgapi:', '', $curl);
			$string = str_replace('SOAP-ENV:', '', $string);
		//generate a simplexml object.
			$return = simplexml_load_string($string);
		/*next 3 lines are for debugging purposes. uncomment them to print out the result obhect.
			echo '<pre>';
				print_r ($return);
			echo '</pre>';
		*/	
			if ($return === false) {
				echo 'XML Error: Could not parse: '.$curl;}
			else {
				if ($return->Body->Fault->faultstring =='MerchantException') 
				{echo '<p>Error! <pre>'.$return->Body->Fault->detail.'</pre></p>';}
				else{
					if ($return->Body->IPGApiOrderResponse->TransactionResult == 'APPROVED')
					{echo '<p>APPROVED: '. $return->Body->IPGApiOrderResponse->ApprovalCode .'</p>';}
					else{
						if ($return->Body->Fault->faultstring =='ProcessingException')
						{echo '<p>DECLINED: '.$return->Body->Fault->detail->IPGApiOrderResponse->ErrorMessage . '</p>' ;}
						else {echo 'unknown error';}
					}
				}	
			}
		}
	}				
?>
</body>
</html>
in der includierten constants.php steht nur die URL an die der request geschickt wird und die userdaten, nix spannendes also. Die Kartendaten etc kommen aus 'nem formular, das hab ich auch mal weggelassen.

mich nervt schon, dass ich das komplette xml das ich schicken möchte, quasi statisch vorhalten muss. wenn ich weiter funktionen des webservice nutzen möchte, wird das ziemlich aufwändig und nicht wartbar.
hat jemand elegantere vorschläge?
__________________
Irgendwie komisch, dass das was wir gemeinhin als "unmenschlich" bezeichnen, ausschließlich Verhalten von Menschen beschreibt.
nichdiemama ist offline   Mit Zitat antworten
Ungelesen 23.03.14, 08:58   #2
nichdiemama
Stammi
 
Registriert seit: Jan 2010
Beiträge: 1.142
Bedankt: 1.440
nichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punkte
Standard

Danke für den Hinweis. Wenn Du jetzt noch ein konkretes Beispiel einer verwendbaren Implementierung hättest, bei der ich mir aussuchen kann, wo ich das Licht anschalte, diese dann auch in .php ist, wäre ich super happy.
__________________
Irgendwie komisch, dass das was wir gemeinhin als "unmenschlich" bezeichnen, ausschließlich Verhalten von Menschen beschreibt.
nichdiemama ist offline   Mit Zitat antworten
Ungelesen 23.03.14, 14:06   #3
nichdiemama
Stammi
 
Registriert seit: Jan 2010
Beiträge: 1.142
Bedankt: 1.440
nichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punkte
Standard

Zitat:
Zitat von HababaX Beitrag anzeigen
Google?
2 Sekunden = 1000 SOAP + PHP Beispiele
das habe ich hinter mir. dabei entstanden ist das was ich habe. welches Problem ich damit habe, hatte ich geschrieben.

sollte ich bei den ~300+ Links, denen ich gefolgt bin, den, der mein konkretes Problem behandelt übersehen haben und Dir sofort in die Augen gefallen sein, erhelle mich bitte mit einem konkreten Hinweis..
__________________
Irgendwie komisch, dass das was wir gemeinhin als "unmenschlich" bezeichnen, ausschließlich Verhalten von Menschen beschreibt.
nichdiemama ist offline   Mit Zitat antworten
Ungelesen 23.03.14, 15:32   #4
nichdiemama
Stammi
 
Registriert seit: Jan 2010
Beiträge: 1.142
Bedankt: 1.440
nichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punkte
Standard

es geht nicht darum, eine Lösung für "meine Architektur" zu finden - mir ist schon bewusst, dass es sich bei meinem konstrukt weniger um eine "architektur" als um eine Sandburg handelt.
Meine Frage ist daher, wie kann ich das besser lösen, willkommen sind konkrete Ansätze.
Der Hinweis auf eine Google Such nach Soap+PHP ist kein konkreter Ansatz.

Ich habe kein Problem damit, wenn Du schreibst "ich habe eine Idee aber ich verrat sie Dir nicht". auch nicht, wenn Du schriebst, "ich habe keine Idee aber meinem Postcounter tut es gut hier mal auf Google hinzuweisen".

Du kannst Dir übrigens sicher sein, das ich die richtige Worte finde, wenn ich ausdrücken möchte, das ich Literaturempfehlung suche. Wenn ich, wie jetzt gerade, aber nach Erklärungen suche, dann such Dir einfach aqus, obh Du welche geben kannst und willst oder lass es bleiben.
__________________
Irgendwie komisch, dass das was wir gemeinhin als "unmenschlich" bezeichnen, ausschließlich Verhalten von Menschen beschreibt.
nichdiemama ist offline   Mit Zitat antworten
Ungelesen 23.03.14, 16:39   #5
nichdiemama
Stammi
 
Registriert seit: Jan 2010
Beiträge: 1.142
Bedankt: 1.440
nichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punkte
Standard

Danke.
Wenn ich die bisherigen Antworten richtig deute, ist die Lösung für meine Frage, das ich eine Ausbildung zum Anwendungsentwickler mache und danach 'n paar Jahre Erfahrung mit .php sammle.
hatte ich mir zwar anders vorgestellt, ist aber kein Problem.
__________________
Irgendwie komisch, dass das was wir gemeinhin als "unmenschlich" bezeichnen, ausschließlich Verhalten von Menschen beschreibt.
nichdiemama ist offline   Mit Zitat antworten
Ungelesen 23.03.14, 17:14   #6
nichdiemama
Stammi
 
Registriert seit: Jan 2010
Beiträge: 1.142
Bedankt: 1.440
nichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punktenichdiemama leckt gerne myGully Deckel in der Kanalisation! | 61226698 Respekt Punkte
Standard

woher nimmst Du den Hinweis, dass es um einen Job geht?
Nachdem ich mir den Spaß gemacht habe, Deine sonstigen Posts mal querzulesen, erlaube mir noch eine Frage, wir kommen ja mit der konkreten Frage ohnehin nicht weiter:
Ist es möglich, dass Du Dich im Bereich Programmierung hier im Forum hauptsächlich dadurch auszeichnest, dass Du noch nie einen wirklich konkreten, hilfreichen Beitrag gepostet hast ausser eben Hinweise auf Google? Ok, ich habe übertrieben, sicher hilfreich für alle, die hier Fragen posten sind Deine immer wiederkehrenden Hinweise auf korrekte Rechtschreibung und Grammatik - fast bin ich erstaunt, das ich noch keinen bekommen habe.

Tu mir 'n Gefallen,antworte hier nicht mehr. Es ist schon vorhersehbar, dass Dein nächster Post der Hinweis an mich sein wird, das ich nicht beleidigt und ausfallend werden brauche ...
Wenn Du ne OT Diskussion mit mir führen willst, schreib mir ne PN. Hätte ich eine Grundsatzdiskussion führen wollen, hätte ich den Startpost entsprechend formuliert.
__________________
Irgendwie komisch, dass das was wir gemeinhin als "unmenschlich" bezeichnen, ausschließlich Verhalten von Menschen beschreibt.
nichdiemama ist offline   Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 Uhr.


Sitemap

().