2013-08-22 18 views
8

Nella mia domanda, ho bisogno di impostare la sezione di fatturazione ricorrente utilizzando paypal avanzato e sto usando la sezione del flusso di pagamento per fare lo stesso. Per creare il profilo ricorrente ho bisogno sia della procedura di pagamento Pay with PayPal (processo di Pagamento express) che di pagamento con carta di credito. La mia richiesta iniziale è simile a questo:Paypal Avanzata fatturazione ricorrente con Pagamento express e pagamento con carta di credito utilizzando le pagine ospitate

public static PayPalRedirectAdv PayFlow() 
{ 

    NameValueCollection requestArray = new NameValueCollection() 
    { 

     {"PARTNER", "PayPal"},    // You'll want to change these 4 
     {"VENDOR", "merchantname"},   // To use your own credentials 
     {"USER", "username"}, 
     {"PWD", "abcdenfg"}, 
     {"TRXTYPE", "A"}, 
     {"AMT", "1.00"}, 
     {"CURRENCY", "USD"}, 
     {"CREATESECURETOKEN", "Y"}, 
     {"SECURETOKENID", "tokenId generated"}, 
     {"RETURNURL", UrlReturn}, 
     {"CANCELURL", UrlCancel}, 
     {"ERRORURL", lUrlError}, 
     {"BILLINGTYPE","RecurringBilling"} 

    }; 

    NameValueCollection resp = run_payflow_call(requestArray); // Will call the payflow end point via HttpWebRequest 
    if (resp["RESULT"] == "0") 
    { 
     string mode = "TEST"; 
     return new PayPalRedirectAdv 
     { 
      Url = "https://payflowlink.paypal.com?SECURETOKEN=" + resp["SECURETOKEN"] + "&SECURETOKENID=" + resp["SECURETOKENID"] + "&MODE=" + mode 
     }; 
    } 
    else 
    { 
     return new PayPalRedirectAdv { Url = string.Empty }; 
    } 
} 

Una volta che il processo è completato, ho impostato l'URL di un IFrame ed è incorporato in uno dei miei punti di vista nel mio progetto MVC. Quando l'IFrame è caricato, ha due problemi.

1) La pagina viene reindirizzata al livello superiore. Ciò significa che la finestra del browser viene reindirizzata all'URL IFrame. Ho scelto il layout C come pagina di pagamento in hosting. Quando utilizzo le credenziali fornite nel progetto demo, la navigazione del browser è risolta; I.e Iframe è stato caricato correttamente nella mia vista. Esiste qualche impostazione nelle impostazioni del gestore PayPal per impedirlo? Ho provato a risolvere il problema con sandboxing della navigazione di primo livello, ma questo non mi permetterà di reindirizzare al sito paypal facendo clic sul pulsante "Check out with Paypal".

2) Per un pagamento con carta di credito, una volta che la transazione è riuscita, mi permette di convertire la transazione esistente a un profilo da:

"TRXTYPE=R&TENDER=C&PARTNER=PayPal&VENDOR=Acme&USER=Acme&PWD=a1b2c3d4&ACTION=A&PROFILENAME=RegularSubscription&ORIGID=<PNREF>&START=12012002&PAYPERIOD= 
WEEK&TERM=12&OPTIONALTRX=S&OPTIONALTRXAMT=2.00&COMMENT1=First-time 
customer&AMT=42.00" 

Questo funziona bene e viene creato il profilo ricorrenti.

Tuttavia, quando clicco sul pulsante "Check out with Paypal", questo mi porterà alla pagina di Paypal dove posso accedere a Paypal usando le mie credenziali Paypal e poi quando clicco sul pulsante "paynow", sarà detrarre denaro dal mio account. Questo ha anche un valore PNERF e quando ho usato lo stesso codice sopra per convertire la transazione in profilo ricorrente sostituendo Tender come P, ma mi mostra un messaggio di risposta che "l'ID della transazione corrispondente a questo ID non è stato trovato". Il processo di checkout Paypal non mostra alcuna informazione sull'utente che sta per una sezione di pagamento di pagamento.

Inoltre, ho seguito Express Checkout with recurring billing per eseguire l'operazione, ma ho ottenuto BAID come null nel passaggio DoExpressCheckout.

Ho bisogno di entrambi pagare con paypal e pagare con le opzioni di credito sul mio sito, quindi quali parametri devo usare per realizzare questo?

Grazie in anticipo.

+1

Ti dirò solo quello che ho fatto, perché non sto seguendo esattamente quello che stai dicendo. Ho creato un sito Web e un'app Web per un cliente e l'utente si è registrato sul sito Web, pagato con pagamento ricorrente di PayPal. I server di PayPal hanno inviato un IPN (Instant Payment Notification) all'URL del listener ospitato sul sito web. Il codice sottostante su questo URL listener (Listener.aspx.cs) si è occupato di estrarre i dati dalla risposta di PayPal tra cui nome, indirizzo email, indirizzo, ecc. Il mio codice ha quindi creato un utente in base a tali informazioni e inserito nel database. –

+0

Ora, dato quello che ho detto, non sono abbastanza sicuro di capire la tua domanda. –

+0

Se desideri istruzioni dettagliate passo passo su come ho fatto questo, sarò felice di farlo - fammelo sapere! –

risposta

1
string strUsername = "<<paypal_username>>"; 
    string strPassword = "<<paypal_password>>"; 
    string strSignature = "<<paypal_signature>>"; 
    string strCredentials = "USER=" + strUsername + "&PWD=" + strPassword + "&SIGNATURE=" + strSignature; 

    string strNVPSandboxServer = "https://api-3t.sandbox.paypal.com/nvp"; 
    string strAPIVersion = "2.3"; 
    //4456193676582624                 4025609244685781 
    string strNVP = strCredentials + "&METHOD=DoDirectPayment" + 
     "&CREDITCARDTYPE=VISA" + 
     "&ACCT=<<CARDNO>>" + 
     "&EXPDATE=<<EXPDATE>>" + 
     "&CVV2=<<CVV>" + 
     "&AMT=<<AMOUNT>>" + 
     "&FIRSTNAME=<<CUST_NAME>>" + 
     "&LASTNAME=<<CUST_LASTNAME>>" + 
     "&CURRENCYCODE=<<CURRENCY_CODE>>" + 
     "&IPADDRESS=<<USER_IP>>" + 
     "&STREET=<<ADDRESS>>" + 
     "&CITY=<<CITY>>" + 
     "&STATE=<<STATE>>" + 
     "&COUNTRY=<<COUNTRY>>" + 
     "&ZIP=<<XIPCODE>>" + 
     "&COUNTRYCODE=<<COUNTRY>>" + 
     "&PAYMENTACTION=SALE" + 
     "&L_NAME0=item1&L_DESC0=test1description&L_AMT0=1&L_QTY0=1" + 
     "&L_NAME1=item2&L_DESC1=test2description&L_AMT1=2&L_QTY1=2" + 
     "&L_NAME2=item3&L_DESC2=test3description&L_AMT2=3&L_QTY2=3" + 
     "&VERSION=" + strAPIVersion; 
    //strNVP = Server.UrlEncode(strNVP); 
    try 
    { 
     //Create web request and web response objects, make sure you using the correct server (sandbox/live) 
     HttpWebRequest wrWebRequest = (HttpWebRequest)WebRequest.Create(strNVPSandboxServer); 
     wrWebRequest.Method = "POST"; 
     StreamWriter requestWriter = new StreamWriter(wrWebRequest.GetRequestStream()); 
     requestWriter.Write(strNVP); 
     requestWriter.Close(); 

     // Get the response. 
     HttpWebResponse hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse(); 
     StreamReader responseReader = new StreamReader(wrWebRequest.GetResponse().GetResponseStream()); 

     //and read the response 
     string responseData = responseReader.ReadToEnd(); 
     responseReader.Close(); 

     string result = Server.UrlDecode(responseData); 

     string[] arrResult = result.Split('&'); 
     Hashtable htResponse = new Hashtable(); 
     string[] responseItemArray; 
     foreach (string responseItem in arrResult) 
     { 
      responseItemArray = responseItem.Split('='); 
      htResponse.Add(responseItemArray[0], responseItemArray[1]); 
     } 

     string strAck = htResponse["ACK"].ToString(); 

     if (strAck == "Success" || strAck == "SuccessWithWarning") 
     { 
      string strAmt = htResponse["AMT"].ToString(); 
      string strCcy = htResponse["CURRENCYCODE"].ToString(); 
      string strTransactionID = htResponse["TRANSACTIONID"].ToString(); 
      //ordersDataSource.InsertParameters["TransactionID"].DefaultValue = strTransactionID; 

      string strSuccess = "Thank you, your order for: $" + strAmt + " " + strCcy + " has been processed."; 
      Response.Write(strSuccess); 
      //successLabel.Text = strSuccess; 
     } 
     else 
     { 
      string strErr = "Error: " + htResponse["L_LONGMESSAGE0"].ToString(); 
      string strErrcode = "Error code: " + htResponse["L_ERRORCODE0"].ToString(); 
      //errLabel.Text = strErr; 
      //errcodeLabel.Text = strErrcode; 
      return; 
     } 
    } 
    catch (Exception ex) 
    { 
     // do something to catch the error, like write to a log file. 
     Response.Write("error processing"); 
    }`enter code here` 

provare a utilizzare questo codice .... nessuna DLL necessaria per richiedere il pagamento paypal.

Problemi correlati