2013-04-08 10 views
26

I Paypals neue REST-API Bezahlen mit Paypal Methode bin der Umsetzung, die hier Bezug genommen werden kann: https://developer.paypal.com/webapps/developer/docs/integration/web/accept-paypal-payment/Bezahlen mit Paypal per Paypal REST API nicht zeigen Zahlung Beschreibung auf Paypal Sandbox oder Live-Sites bis

Die Zahlung führt in Ordnung, genau so, wie es sein sollte. Der Benutzer entscheidet sich für die Zahlung mit Paypal und wird dann auf die Paypal-Seite umgeleitet, wo er sich anmelden und die Zahlung genehmigen soll. Die JSON-Daten, die ich Paypal schicke ist ziemlich viel, was in den obigen Link angegeben ist und mein sieht wie folgt aus:

{ 
    "intent":"sale", 
    "redirect_urls":{ 
    "return_url":"http://<return URL here>", 
    "cancel_url":"http://<cancel URL here>" 
    }, 
    "payer":{ 
    "payment_method":"paypal" 
    }, 
    "transactions":[ 
    { 
     "amount":{ 
     "total":"7.47", 
     "currency":"USD" 
     }, 
     "description":"This is the payment description." 
    } 
    ] 

}

Da es den Benutzer auf die PayPal-Website umleitet, der Beschreibung und Gesamtbetrag Spalte ist leer

Ich bin mir nicht sicher, ob dies ein Fehler auf Paypal REST API ist, aber ich glaube, ich bin die erforderliche Beschreibung + Betrag Zahlung auf dieser Seite wiedergegeben werden. Wenn diese Informationen nicht angezeigt werden, ist es normalerweise eine Abschreckung für den Benutzer, da sie definitiv den Betrag sehen möchten, den sie auf der Paypal-Website bezahlen, obwohl dieser Betrag auf meiner Website aufgeführt ist.

Dies ist, wie es aussieht:

enter image description here

Für diejenigen, die die Benutzer anzuzeigen, möchten, dass nicht angemeldet hat, na ja, auch nach der Anmeldung die Beschreibung und die aktuelle Kauf Spalte bleiben leer.

Fehle ich irgendwelche Parameter, die an Paypal gesendet werden müssen, um diese Beschreibungsdaten anzuzeigen?

Hinweis: Dieses Problem tritt sowohl für Live- als auch für Sandbox-Server auf.

Antwort

41

Die linke Hand in der obigen Seite zeigt: 1. Artikeldetails aus Bestellung. Sie können die Positionsliste als Teil der Transaktionsdetails in die Zahlungsressource aufnehmen. Das gleiche wird hier angezeigt. 2. Komponenten des Transaktionsbetrags, z.B. Versandkosten, Steuern, etc. wenn Sie sie in Anfrage aufnehmen.

Versuchen Sie, diese Anfrage Beispiel zu sehen:

{ 
    "intent": "sale", 
    "payer": { 
     "payment_method": "paypal" 
    }, 
    "redirect_urls": { 
     "return_url": "http://<return url>", 
     "cancel_url": "http://<cancle url>" 
    }, 
    "transactions": [ 
     { 
      "amount": { 
       "total": "8.00", 
       "currency": "USD", 
       "details": { 
        "subtotal": "6.00", 
        "tax": "1.00", 
        "shipping": "1.00" 
       } 
      }, 
      "description": "This is payment description.", 
      "item_list": { 
       "items":[ 
        { 
         "quantity":"3", 
         "name":"Hat", 
         "price":"2.00", 
         "sku":"product12345", 
         "currency":"USD" 
        } 
       ] 
      } 
     } 
    ] 
} 
+1

Vielen Dank. Paypal Rest API ist noch in der Beta und benötigt eine ernsthafte Dokumentation neu zu schreiben. Danke übrigens. –

+0

Hallo Deepesh, Ich benutze Paypal mit Version 1.4.3. Aber ich habe keine Methode, um die Artikeldetails zu senden. Bitte helfen Sie mir. – Madhu

+0

Ich glaube nicht, dass Artikelliste oder Transaktionsliste derzeit von der Rest-API unterstützt wird. – YorkshireKev

-1

Danke. Madhu erinnere dich daran, die Rest-Api-Bibliothek zu benutzen!

Details amountDetails = new Details(); 
        amountDetails.setSubtotal(autoregistro.getPedido().getItems().get(0).getTotal().toPlainString()); 
        amountDetails.setTax("0"); 
        amountDetails.setShipping("0"); 

        Amount amount = new Amount(); 
        amount.setCurrency("USD"); 
        amount.setTotal(autoregistro.getPedido().getItems().get(0).getTotal().toPlainString()); 
        // amount.setTotal("7.47"); // Los decimales deben ser con punto 
        amount.setDetails(amountDetails); 

        Item item = new Item(); 
        item.setCurrency("USD"); 
        item.setQuantity("1"); 
        item.setName(autoregistro.getPedido().getItems().get(0).getDescripcion()); 
        item.setPrice(amountDetails.getSubtotal()); 

        List<Item> items = new ArrayList<Item>(); 
        items.add(item); 

        ItemList itemList = new ItemList(); 
        itemList.setItems(items); 

        Transaction transaction = new Transaction(); 
        transaction.setDescription(item.getName()); 
        transaction.setAmount(amount); 
        transaction.setItemList(itemList); 

        List<Transaction> transactions = new ArrayList<Transaction>(); 
        transactions.add(transaction); 

        Payer payer = new Payer(); 
        payer.setPaymentMethod("paypal"); 
        // payer.setPaymentMethod("credit_card"); 

        Payment payment = new Payment(); 
        payment.setIntent("sale"); 
        payment.setPayer(payer); 
        payment.setTransactions(transactions); 
        RedirectUrls redirectUrls = new RedirectUrls(); 
        redirectUrls.setCancelUrl(this.configParameters.getAutoregistroURL() + "/pay_paypal?cancel=true"); 
        redirectUrls.setReturnUrl(this.configParameters.getAutoregistroURL() + "/pay_paypal?success=true"); 
        payment.setRedirectUrls(redirectUrls); 

        Payment createdPayment = payment.create(apiContext); 
+6

Bitte bieten Sie eine bessere Erklärung, um mit Ihrem Code zu gehen. – bwegs