2017-11-23 1 views
3

braintreeを使用してpaypal購読のjavascriptコードをどのように行うか見つけることができません。私が現在持っているコードは、少なくとも1回の取引金額で私をチェックアウト部分に連れてくるコードです。しかし、私は毎月再発する金額をどのように実施するかを知りたい。キャンセルされるまで月に1.99と言うことができます。私は何が欠けていますか?Paypal Braintree Subscription Payments

Javaコード

@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コード

<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> 

答えて

2

あなたは一回の支払いのために意図されてPayPalでチェックアウトを使用しているように見えます。サブスクリプションを作成する目的のために、顧客の支払い情報を保存したい場合は、PayPal vaulted payment flowを使用する必要があります:

// 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. 
     }); 
    } 

顧客がチェックアウトを完了したら、サーバーへの結果のpayload.nonceを提出することができますし、 customer create callで使用してください。 subscription create callを使用して、新しく保管されたPayPal支払い方法で定期購読を設定することができます。

+0

奇妙な....だから、あなたは価格が必要ない?あなたはこれがあなたとプロバイダの間の合意だと言っているだけですか?そしてプロバイダは毎月のために送ることができますか? – Justin

+0

@ジャスティン。円滑な支払いフローを使用する場合、金額は必要ありません。オプションの完全なリストは[ここにあります](http://braintree.github.io/brainree-web/current/PayPalCheckout.html#createPayment)です。 サブスクリプションの価格は、[計画](https://developers.braintreepayments.com/reference/response/plan/java)で指定できます。 – Carter

+0

ありがとう!それは助けになり、同時にスーパーシンプルで、私はそれを逃した方法を確信していませんでした。私はちょうどそれが私の頭の中でうまくいくだろうというこのアイディアを持っていて、それを見過ごすことができなかったと思う。私は+50を与えた:)。ありがとう! – Justin

関連する問題