2017-11-23 7 views
3

braintree를 통해 paypal 구독에 대한 javascript 코드를 수행하는 방법을 찾을 수 없습니다. 다음은 적어도 현재 단일 트랜잭션 금액에 대한 체크 아웃 부분으로 이동하는 코드입니다. 그러나 매월 반복되는 금액을 구현하는 방법을 알고 싶습니다. 그것이 취소 될 때까지 한 달에 1.99를 말하게한다. 내가 뭘 놓치고 있니?Paypal Braintree Subscription Payments

자바 코드

@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

. 고객이 체크 아웃을 완료하면

// 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를 제출 할 수 있습니다 : 당신이 구독의 작성을 목적으로 한 고객의 결제 정보를 저장하려면, 당신은 PayPal vaulted payment flow 사용해야합니다 customer create call에서 사용하십시오. 그런 다음 subscription create call을 사용하여 최근에 보관 된 PayPal 결제 수단에서 반복 구독을 설정할 수 있습니다.

+0

이상한 .... 그래서 가격이 필요하지 않니? 당신은 이것이 당신과 공급자 사이의 합의라고 말하고 있습니까? 그리고 공급자는 매월 보낼 수 있습니까? – Justin

+0

@Justin 예, 아뜰한 결제 흐름을 사용할 때 금액이 필요하지 않습니다. 옵션의 전체 목록은 [여기에 있습니다] (http://braintree.github.io/braintree-web/current/PayPalCheckout.html#createPayment)입니다. [계획] (https://developers.braintreepayments.com/reference/response/plan/java)에서 구독 가격을 지정할 수 있습니다. – Carter

+0

감사합니다. 그것은 도움이되었고 동시에 매우 간단했습니다. 내가 어떻게 그것을 놓쳤는 지 확신 할 수 없었습니다. 나는 그것이 내 머리 속에서 어떻게 작용할 것인가에 대한 아이디어를 가지고 있었고 나는 그것을 지나치게 보지 못했다고 생각한다. 나는 +50를 주었다. :). 감사! – Justin