![]() |
PayPal SOAP Konto Bewegungen abfragen
Wie kann ich die Kontobewegungen von einem PayPal Konto abfragen.
Ich nutze XE2 und die WDSL habe ich importiert, ich habe aber noch nie mit WDSL gearbeitet. |
AW: PayPal SOAP Konot Bewegungen abfragen
|
AW: PayPal SOAP Konot Bewegungen abfragen
Das Problem ist welche Funktionen das sind die importierte Pas ist über 30000 Zeilen lang und ich finde da nicht wirklich was.
|
AW: PayPal SOAP Konto Bewegungen abfragen
Ich habe ein .Net Code gefunden, kann den jemand auf Delphi übersetzen
Code:
var client = new PayPalAPIInterfaceClient();
var credentials = new CustomSecurityHeaderType { Credentials = new UserIdPasswordType { Username = PaypalUsername, Password = PaypalPassword, Signature = PaypalSignature } }; var request = new TransactionSearchReq { TransactionSearchRequest = new TransactionSearchRequestType { StartDate = DateTime.Now.AddYears(-1), Status = PaymentTransactionStatusCodeType.Success, Version = "95.0" } }; var response = client.TransactionSearch(ref credentials, request); |
AW: PayPal SOAP Konot Bewegungen abfragen
Zitat:
Das ist doch alles dokumentiert?!? ![]() Und mit dem PayPal API Explorer kannst Du auch alles ausprobieren. ![]() Ansonsten verweise ich gerne wieder auf die schon genannten SOAP Tutorials. btw: Muss es SOAP sein? PayPal bietet eine wesentlich modernere REST API. |
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
Code:
Ich wage aber zu bezweifeln, dass das einerseits funktioniert und das andererseits die richtige Vorgehensweise ist.
client := TPayPalAPIInterfaceClient.Creeate();
credentials := TCustomSecurityHeaderType.Create(); credentials.Credentials := TUserIdPasswordType.Create(); credentials.Credentials.Username := PaypalUsername; credentials.Credentials.Password := PaypalPassword; credentials.Credentials.Signature := PaypalSignature; request := TTransactionSearchReq.Create(); request.TransactionSearchRequest := TTransactionSearchRequestType.Create(); request.TransactionSearchRequest.StartDate = DateTime.Now.AddYears(-1), request.TransactionSearchRequest.Status = PaymentTransactionStatusCodeType.Success, request.TransactionSearchRequest.Version = "95.0" response := client.TransactionSearch(credentials, request); |
AW: PayPal SOAP Konto Bewegungen abfragen
Also ich habs jetzt aber ein Problem hab ich noch.
Delphi-Quellcode:
Wie kann ich den Response.PaymentTransactions[i].NetAmount.currencyID; in ein String umwandeln
CurrencyCodeType = (
AFA, ALL, DZD, ADP, AOA, ARS, AMD, AWG, AZM, BSD, BHD, BDT, .... ) Response.PaymentTransactions[i].NetAmount.currencyID; |
AW: PayPal SOAP Konto Bewegungen abfragen
![]() Übrigens wäre es für Leute mit ähnlichen Problemen sicherlich sehr nett und hilfreich, wenn Du Deine Lösung auch hier zur Verfügung stellen würdest. |
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
![]() |
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
Delphi-Quellcode:
Definition von GetEnumName will integer warum auch immer.
function GetEnumName(TypeInfo: PTypeInfo; Value: Integer): string;
Delphi-Quellcode:
Getname ist Privat
TRttiEnumerationType.GetName
|
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
Bitte poste Deinen Code. |
AW: PayPal SOAP Konto Bewegungen abfragen
Delphi-Quellcode:
Fehlermeldung [DCC Fehler] Unit2.pas(83): E2010 Inkompatible Typen: 'Integer' und 'CurrencyCodeType'
D_VT1.FieldByName('GrossAmountcurrencyID').Text:=GetEnumName(TypeInfo(CurrencyCodeType),Response.PaymentTransactions[i].NetAmount.currencyID);
Hier nochmal der Code vom RTTI...
Delphi-Quellcode:
TRttiEnumerationType = class(TRttiOrdinalType)
private function GetMaxValue: Longint; override; function GetMinValue: Longint; override; function GetUnderlyingType: TRttiType; constructor Create(APackage: TRttiPackage; AParent: TRttiObject; var P: PByte); override; {$HINTS OFF} function GetNames: TArray<string>; class function GetName<T{: enum}>(AValue: T): string; reintroduce; static; class function GetValue<T{: enum}>(const AName: string): T; static; {$HINTS ON} public property UnderlyingType: TRttiType read GetUnderlyingType; end; |
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
![]() Das Beispiel für
Delphi-Quellcode:
in dem von @TiGü genannten Blogpost ist tatsächlich fehlerhaft.
GetEnumName
(Aber mal ernsthaft: Da hätte man auf Grund der Fehlermeldung des Compilers aber auch durchaus drauf kommen können...) |
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
|
AW: PayPal SOAP Konto Bewegungen abfragen
So jetzt habe ich die Gesamte Lösung
Delphi-Quellcode:
Var
client : PayPalAPIInterface; credentials : RequesterCredentials; trans : TransactionSearchReq; UserID : UserIdPasswordType; trans1 : TransactionSearchRequest; Response : TransactionSearchResponse; i : Longint; begin HTTPRIO1.URL:='https://api-3t.paypal.com/2.0/'; client:=(HTTPRIO1 as PayPalAPIInterface); credentials:=RequesterCredentials.Create; UserID:=UserIdPasswordType.Create; UserID.Username:=''; UserID.Password:=''; UserID.Signature:=''; credentials.Credentials:=UserID; HTTPRIO1.SOAPHeaders.Send(credentials); trans1:=TransactionSearchRequest.Create; trans:=TransactionSearchReq.Create; trans1.StartDate:=TXSDateTime.Create; trans1.Version:='94.0'; trans1.StartDate.AsDateTime:=Now-10; trans.TransactionSearchRequest:=trans1; Response:=client.TransactionSearch(trans); D_VT1.Open; D_VT1.Clear; For i:=Low(Response.PaymentTransactions) To High(Response.PaymentTransactions) do Begin D_VT1.Append; D_VT1.FieldByName('timestamp').AsDateTime:=Response.PaymentTransactions[i].Timestamp.AsDateTime; D_VT1.FieldByName('type').Text:=Response.PaymentTransactions[i].Type_; D_VT1.FieldByName('payer').Text:=Response.PaymentTransactions[i].Payer; D_VT1.FieldByName('payerdisplayname').Text:=Response.PaymentTransactions[i].PayerDisplayName; D_VT1.FieldByName('TransactionID').Text:=Response.PaymentTransactions[i].TransactionID; D_VT1.FieldByName('Status').Text:=Response.PaymentTransactions[i].Status; D_VT1.FieldByName('GrossAmount').Text:=StringReplace(Response.PaymentTransactions[i].GrossAmount.Text,'.',',',[]); D_VT1.FieldByName('FeeAmount').Text:=StringReplace(Response.PaymentTransactions[i].FeeAmount.Text,'.',',',[]); D_VT1.FieldByName('NetAmount').Text:=StringReplace(Response.PaymentTransactions[i].NetAmount.Text,'.',',',[]); D_VT1.FieldByName('GrossAmountcurrencyID').Text:=GetEnumName(TypeInfo(CurrencyCodeType),Integer(Response.PaymentTransactions[i].GrossAmount.currencyID)); D_VT1.FieldByName('FeeAmountcurrencyID').Text:=GetEnumName(TypeInfo(CurrencyCodeType),Integer(Response.PaymentTransactions[i].FeeAmount.currencyID)); D_VT1.FieldByName('NetAmountcurrencyID').Text:=GetEnumName(TypeInfo(CurrencyCodeType),Integer(Response.PaymentTransactions[i].NetAmount.currencyID)); D_VT1.Post; End; D_VT1.SaveToXML('t1.xml'); D_VT1.Close; |
AW: PayPal SOAP Konto Bewegungen abfragen
GetName ... Wozu auch, gibt ja das Property Name? :roll:
Und natürlich will es einen Integer, da man sonst millionen Überladungen für jeden Enumtypen bräuchte. ![]() |
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
Sonst nimmt er die private function GetName aus der Basisklasse TRttiType. Es ist eine wiedereingeführte generische Klassenfunktion.
Delphi-Quellcode:
uses
System.Rtti; ... var str : string; begin str := TRttiEnumerationType.GetName<CurrencyCodeType>(Response.PaymentTransactions[i].NetAmount.currencyID); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz