2017-11-23 4 views
3

Ich kann nirgends finden, wie man den Javascript-Code für Paypalabonnement über braintree tut. Hier ist der Code, den ich derzeit habe, der mich zumindest zum Checkout-Teil für einen einzelnen Transaktionsbetrag bringt. Aber ich möchte wissen, wie man einen monatlichen wiederkehrenden Betrag implementiert. Sagen wir 1,99 pro Monat, bis es abgebrochen wird. Was vermisse ich?Paypal Braintree Subscription Payments

Java-Code

@Path("/braintree") 
public class TestBraintree { 
    private static BraintreeGateway gateway = new BraintreeGateway(
      Environment.SANDBOX, 
      "myMerchantId", 
      "myPublicKey", 
      "myPrivateKey" 
    ); 

    @GET 
    @Path("/client_token") 
    public String getMsg() { 
     return gateway.clientToken().generate(); 
    } 

    @POST 
    @Consumes("application/json") 
    @Path("/checkout") 
    public String getCheckoutMessage(String json) { 
//  String nonceFromTheClient = request .queryParams("payment_method_nonce"); 
     System.out.println(); 
     return ""; 
    } 
} 

Html-Code

<head> 
    <script src="https://www.paypalobjects.com/api/checkout.js"></script> 
    <script src="https://js.braintreegateway.com/web/3.11.0/js/client.min.js"></script> 
    <script src="https://js.braintreegateway.com/web/3.11.0/js/paypal-checkout.min.js"></script> 
</head> 
<body> 
    <div id="paypal-button-container"></div> 
     var client_token = document.getElementById('clientId').value; 
       <script> 
        paypal.Button.render({ 
         braintree: braintree, 
         client: { 
          production: client_token, 
          sandbox: client_token, 
         }, 
         env: 'sandbox', // Or 'sandbox' 
         commit: true, // This will add the transaction amount to the PayPal button 

         payment: function (data, actions) { 
          return actions.braintree.create({ 
           flow: 'checkout', // Required 
           amount: 10.00, // Required 
           currency: 'USD', // Required 
           enableShippingAddress: true, 
           shippingAddressEditable: false, 
           shippingAddressOverride: { 
            recipientName: 'Scruff McGruff', 
            line1: '1234 Main St.', 
            line2: 'Unit 1', 
            city: 'Chicago', 
            countryCode: 'US', 
            postalCode: '60652', 
            state: 'IL', 
            phone: '123.456.7890' 
           } 
          }); 
         }, 

         onAuthorize: function (payload) { 
          // Submit `payload.nonce` to your server. 
         }, 
        }, '#paypal-button-container'); 
       </script> 
</body> 

Antwort

2

Es sieht aus wie Sie Checkout mit PayPal verwenden, die für Einmalzahlungen vorgesehen. Wenn Sie eine Kundenzahlungsinformationen zum Zwecke der Erstellung eines Abonnements speichern möchten, müssen Sie die PayPal vaulted payment flow verwenden:

// Set up PayPal with the checkout.js library 
paypal.Button.render({ 
    env: 'production', // or 'sandbox' 

    payment: function() { 
    return paypalCheckoutInstance.createPayment({ 
     flow: 'vault', 
     billingAgreementDescription: 'Your agreement description', 
     enableShippingAddress: true, 
     shippingAddressEditable: false, 
     shippingAddressOverride: { 
     recipientName: 'Scruff McGruff', 
     line1: '1234 Main St.', 
     line2: 'Unit 1', 
     city: 'Chicago', 
     countryCode: 'US', 
     postalCode: '60652', 
     state: 'IL', 
     phone: '123.456.7890' 
     } 
    }); 
    }, 

    onAuthorize: function (data, actions) { 
    return paypalCheckoutInstance.tokenizePayment(data) 
     .then(function (payload) { 
     // Submit `payload.nonce` to your server. 
     }); 
    } 

Sobald Ihr Kunde schließt die Kasse, können Sie das resultierende payload.nonce auf Ihren Server und senden Verwenden Sie es in einer customer create call. Sie können dann ein wiederkehrendes Abonnement für die neugewählte PayPal-Zahlungsmethode unter Verwendung einer subscription create call einrichten.

+0

Seltsam .... Sie brauchen also keinen Preis? Sie sagen nur, hey, das ist eine Vereinbarung zwischen Ihnen und dem Anbieter? Und dann kann der Provider für die monatlichen senden? – Justin

+0

@Justin yep, der Betrag ist nicht erforderlich, wenn der vaulted Zahlungsstrom verwendet wird. Eine vollständige Liste der Optionen ist [verfügbar hier] (http://braintree.github.io/braintree-web/current/PayPalCheckout.html#createPayment). Sie können den Preis des Abonnements im [Plan] (https://developers.braintreepayments.com/reference/response/plan/java) angeben. – Carter

+0

Danke! Das war hilfreich und gleichzeitig super einfach, nicht sicher, wie ich das vermisst habe. Ich glaube, ich hatte gerade diese Idee, wie es in meinem Kopf funktionieren würde und ich konnte nicht darüber hinwegsehen. Ich gab die +50 :). Vielen Dank! – Justin

Verwandte Themen