404 messaggi dal 09 maggio 2012
Salve ragazzi,
qualcuno ha mai integrato il pagamento con Banca Sella in un progetto .NET ? Purtroppo la documentazione è davvero pietosa e non riesco a capire bene come procedere.

In poche parole il pagamento deve avvenire sulla pagina di banca sella e non sul mio sito e, ovviamente, devo passare dei parametri (utente, numero di ordine etc) che poi devono tornarmi indietro. Mi blocco però sulla prima fase, ovvero quella della chiamata SOAP alla pagina di banca sella. Non capisco come fare. Potete aiutarmi ?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Francesco,
se non ho capito male, devi scambiare dati con un webservice SOAP. Banca Sella ti ha fornito l'url del WSDL (o il WSDL stesso)? La "documentazione" è quella. Da Visual Studio puoi aggiungere un riferimento al webservice in questo modo:
https://msdn.microsoft.com/it-it/library/bb628649.aspx
E qui ci sono un paio di video.
https://www.youtube.com/watch?v=lmQ8uMynZP0
https://www.youtube.com/watch?v=UQ0lqGkVMJU

Aggiungendo il riferimento, Visual Studio ti creerà una classe client che puoi usare per inviare dati al servizio. Non dovrai più preoccuparti di SOAP perché sarà quella classe a costruire la richiesta per te. Tu devi solo invocare i suoi metodi.

ciao,
Moreno
Modificato da BrightSoul il 24 giugno 2017 15.51 -

Enjoy learning and just keep making
404 messaggi dal 09 maggio 2012
OK, questo passaggio l'ho completato. Ora però devo chiamare la pagina di banca sella e inviare i miei dati. E' qui che mi blocco, cioè come faccio ad usare i metodi di questo riferimento ?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
quando hai aggiunto il riferimento al servizio web, hai anche dovuto indicare un namespace (in una casella bianca in basso). E' in quel namespace che si trova la classe che ti permetterà di inviare dati a Banca Sella.

Quindi, da una tua pagina, digita il namespace e poi lasciati guidare dall'intellisense. Al suo interno troverai varie classi. Tu dovrai creare un'istanza della classe che si chiama QualcosaClient.

In questo video che ti ho linkato, al minuto 3:23, vedi appunto come creare un'istanza di quella classe.
A questo punto, usane i metodi per inviare i dati.

ciao,
Moreno
Modificato da BrightSoul il 24 giugno 2017 18.02 -

Enjoy learning and just keep making
404 messaggi dal 09 maggio 2012
Si fatto, ora devo capire come e dome inviare i dati alla pagina di pagamento di banca sella. Ripeto, il pagamento non avviene sul mio sito ma su una pagina esterna. Questo è quanto ho sviluppato finora

Dim _Amount As String = _totale
            Dim _ShopTransactionId As String = "iframeCryptTest"
            Dim _Currency As String = "242" 'UicCode
            Dim _customInfo As String = _stringa
            Dim _Shop_Login As String = "miocodice"

            Dim _oggetto As Object = New WSCryptDecrypt()
            Dim _XMLOUT As String = _oggetto.Encrypt(_Shop_Login, _Amount, _ShopTransactionId, _Currency, _customInfo).OuterXml
404 messaggi dal 09 maggio 2012
Stando alla documentazione devo chiamare questa pagina

https://ecomm.sella.it/pagam/pagam.aspx?a=<ShopLogin>&b=<encrypted string>

dove il parametro "b" è la stringa codificata
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok, WSCryptDecrypt è la classe che ti è stata creata da Visual Studio? Il metodo Encrypt è un'operazione del webservice di Banca Sella?


Stando alla documentazione devo chiamare questa pagina

Ok, se hai ottenuto la stringa cifrata, devi reindirizzare l'utente a quella pagina.

Dim UrlPagamento as String = "https://ecomm.sella.it/pagam/pagam.aspx?a=" & Server.UrlEncode(_Shop_Login) & "&b=" & Server.UrlEncode(_XMLOUT)
Response.Redirect(UrlPagamento)


Ho qualche dubbio su _XMLOUT, lo stai ottenendo in questo modo:

Dim _XMLOUT As String = _oggetto.Encrypt(_Shop_Login, _Amount, _ShopTransactionId, _Currency, _customInfo).OuterXml

Non credo sia corretto. In particolare stai usando la proprietà OuterXml (???) che a naso dovrebbe restituirti un pezzo di XML. Qui invece si tratta di ottenere una stringa cifrata, che potrebbe essere rappresentata in notazione esadecimale o base64. Una roba tipo:
ab52fe51bae482b31....


Spiega bene cos'è WSCryptDecrypt. Mi confonde un po' il fatto che il suo metodo Encrypt restituisca un oggetto che ha una proprietà OuterXml.

ciao,
Moreno

Enjoy learning and just keep making
404 messaggi dal 09 maggio 2012
No, è solo uno spezzone di codice incompleto che ho prelevato dalla pagina di esempio. Te la riporto per intero. E' in C# ed è la pagina di default. Solo che nel progetto di esempio si riferisce solo al pagamento sul proprio sito web quindi mediante form etc .. credo che alla fine sia la stessa cosa.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
//using iFrameProjectExample.it.sella.ecomms2s; //PRO
using iFrameProjectExample.it.sella.testecomm; //TEST

using System.Xml;

namespace iFrameProjectExample
{

    public partial class WebForm1 : System.Web.UI.Page
    {
        public string Shop_Login = ""; //ADD YOUR SHOP_LOGIN CODE HERE
        public string EncryptedString;
        public string ErrorCode;
        public string ErrorDescription;
        public string XMLOUT;
        public string PARes;
        public string TransKey;
        public string ErrorClass = "Off";
        Page page = HttpContext.Current.Handler as Page;

        protected void Page_Load(object sender, EventArgs e)
        {
            //Handle postback after 3D authentication
            PARes = Request.Params["PARes"];
            if (PARes != null)
            {
                //This is a 2nd call after 3D authentication
                //Read EncryptedString and Trankey from the cookie
                HttpCookie myEncStringCookie;
                HttpCookie myTransKeyCookie;
                myEncStringCookie = Request.Cookies["encString"];
                if (myEncStringCookie != null) EncryptedString = myEncStringCookie.Value;
                myTransKeyCookie = Request.Cookies["TransKey"];
                if (myEncStringCookie != null) TransKey = myTransKeyCookie.Value;

            }
            else
            {
                //Encrypt the needed parameters 
                string Amount = "0.05";
                string ShopTransactionId = "iframeCryptTest";
                string Currency = "242"; //UicCode
                PaymentTypeDetail PaymentTDetail = new PaymentTypeDetail();
                ShippingDetails ShipDetails = new ShippingDetails();
                RedBillingInfo RedBilling = new RedBillingInfo();
                RedCustomerData RedCustomerData = new RedCustomerData();
                RedCustomerInfo RedCustomerInfo = new RedCustomerInfo();
                RedItems RedItem = new RedItems();
                RedShippingInfo RedShipping = new RedShippingInfo();
                ConselCustomerInfo ConselCustomer = new ConselCustomerInfo();
                string[] PaymentTypes = { "" };
                string[] RedCustomInfo = { "" };

                WSCryptDecrypt objCrypt = new WSCryptDecrypt();
                XMLOUT = objCrypt.Encrypt(Shop_Login, Currency, Amount, ShopTransactionId, "", "", "", "", "", "", "", "", "", "", ShipDetails, PaymentTypes, PaymentTDetail, "", RedCustomerInfo, RedShipping, RedBilling, RedCustomerData, RedCustomInfo, RedItem, "", ConselCustomer, "").OuterXml;

                XmlDocument XmlReturn = new XmlDocument();
                XmlReturn.LoadXml(XMLOUT);
                XmlNode ThisNode = XmlReturn.SelectSingleNode("/GestPayCryptDecrypt/ErrorCode");
                ErrorCode = ThisNode.InnerText;
                if (ErrorCode == "0")
                {
                    XmlNode ThisNode2 = XmlReturn.SelectSingleNode("//GestPayCryptDecrypt/CryptDecryptString");
                    EncryptedString = ThisNode2.InnerText;

                }
                else
                {
                    //Put error handle code HERE
                    ThisNode = XmlReturn.SelectSingleNode("/GestPayCryptDecrypt/ErrorDescription");
                    ErrorDescription = ThisNode.InnerText;
                    ErrorClass = "on";
                }
            }
        }
    }
}

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.