Dunque, è passatoun pò di tempo, ma rovistando nel repository ho trovato un'implementazione di quanto chiedi.
Ho estrapolato solo la parte che interessa a te, a grandi linee; ma proprio a grandi linee!
String trackID = "..."; // Genera un track ID
e24PaymentPipeLib.e24PaymentPipeCtlClass pipe = new e24PaymentPipeLib.e24PaymentPipeCtlClass();
pipe.Action = "4";
pipe.Currency = "978"; // Euro
pipe.Amt = String.Format(CultureInfo.GetCultureInfo("en-US").NumberFormat, "{0:f2}", order.GetTotalAmount());
pipe.Language = "ITA";
pipe.ResponseUrl = String.Format("http://{0}/TransactionNotification.aspx?result=Success", Request.Url.Authority);
pipe.ErrorUrl = String.Format("http://{0}/TransactionNotification.aspx?result=Cancel", Request.Url.Authority);
pipe.Alias = "..."; // Indicare l'alias
pipe.ResourcePath = "..."; // Indicare l'ubicazione del file "resource.cgn"
pipe.TrackId = trackID;
pipe.Udf1 = order.ID.ToString();
Int16 result = pipe.PerformInitTransaction();
if (result != 0)
{
// Errore...
// Esegui il logging
throw new Exception();
}
String paymentID = pipe.PaymentId;
String paymentUrl = pipe.PaymentPage;
if (String.IsNullOrEmpty(paymentID) || String.IsNullOrEmpty(paymentUrl))
{
// Errore...
// Esegui il logging
throw new Exception();
}
// Memorizza ora da quale parte la relazione tra l'id
// dell'ordine e l'id del pagamento.
// Ad esempio
TransactionTrackerService.Store(paymentID, order.ID);
Response.Redirect(String.Format("{0}?PaymentID={1}", paymentUrl, paymentID));
Qualche consiglio, visto che, come avrai notato, hai a che fare con un'interfaccia che definire "l'artigianato del software" sarebbe un complimento.
1) Controlla i permessi per la cartella all'interno della quale risiede il file di risorse (.cgn).
2) Cerca di monitorare la chiamata a PerformInitTransaction e verifica che esista un contesto di sicurezza che ne garantisca l'esecuzione.
Noi, dopo svariate peripezie (sulle quali ti sei già soffermato), siamo riusciti ad implementare la funzionalità e attualmente è tutto in produzione.
Fammi sapere.
PS. E' buffo. Siamo nel 2010 e ci sono ancora individui che non si sono stancati di COM. Autolesionismo?
Modificato da naighes il 24 settembre 2010 08.55 -