Hallo zusammen,
ich kämpfe mit einer PayPal
Soap Anbindung unter Delphi XE5.
PayPal erwartet einen individuellen
Soap Header mit den Zugangsdaten.
In der importierten
WSDL steht hier für die Klasse RequesterCredentials (TSoapHeader)bereit.
Hier nun ein einfaches Beispiel eines Aufrufes:
Delphi-Quellcode:
procedure TTest.PayPalTest;
var
Soap: THTTPRIO;
PayPal: PayPalAPIInterface;
Sec: RequesterCredentials;
Request: RefundTransactionReq;
Response: RefundTransactionResponse;
begin
Soap := THTTPRIO.Create(
nil);
try
CoInitialize(
nil);
PayPal := GetPayPalAPIInterface(False, '
https://api-3t.sandbox.paypal.com/2.0/',
Soap);
Sec := RequesterCredentials.Create;
Sec.Credentials := UserIdPasswordType.Create;
Sec.Credentials.Username := '
hello world';
Sec.Credentials.Password := '
hello world';
Sec.Credentials.Signature := '
hello world';
Soap.SOAPHeaders.Send(Sec);
Soap.SOAPHeaders.SetOwnsSentHeaders(True);
Request := RefundTransactionReq.Create;
Request.RefundTransactionRequest := RefundTransactionRequest.Create;
Response := PayPal.RefundTransaction(Request);
finally
FreeAndNil(Response);
FreeAndNil(Request);
CoUnInitialize;
end;
end;
Wenn ich nun das Programm beende, meldet mein FastMM das es ein Speicherloch
im Bereich dieser RequesterCredentials gibt. Verstehe ich nicht, durch SetOwnsSentHeaders wird der Destructor
von RequesterCredentials nach dem Request aufgerufen.
Vielleicht hat hier jemand schon mal PayPal integriert und kann mir einen Tipp geben,
oder vielleicht mache ich generell etwas mit den Headern falsch, auch dann wäre ich um einen Tipp dankbar.