Платежи по подписке Paypal Braintree

Я нигде не могу найти, как сделать код javascript для подписки PayPal через BrainTree. Вот код, который у меня есть в настоящее время, который, по крайней мере, приводит меня к части оформления заказа для одной суммы транзакции. Но я хочу знать, как реализовать ежемесячную повторяющуюся сумму. скажем, 1,99 в месяц, пока он не будет отменен. Что мне не хватает?

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>

person Justin    schedule 23.11.2017    source источник


Ответы (1)


Похоже, вы используете Checkout с PayPal, который предназначен для разовых платежей. Если вы хотите сохранить платежную информацию клиента для создания подписки, вам необходимо использовать ссылку Платежный процесс PayPal в хранилище:

// 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 из хранилища, используя подписка создать вызов.

person Carter    schedule 27.11.2017
comment
Странно.... Так тебе цена не нужна? Вы просто говорите, что это соглашение между вами и провайдером? А то провайдер может отправить на месячные? - person Justin; 28.11.2017
comment
@Justin Да, сумма не требуется при использовании платежного потока из хранилища. Полный список опций доступен здесь. Вы можете указать стоимость подписки в плане. - person Carter; 28.11.2017
comment
Спасибо! Это было полезно и в то же время очень просто, не знаю, как я это пропустил. Думаю, у меня просто была идея о том, как это будет работать, в моей голове, и я не мог пройти мимо этого. Я поставил +50 :). Спасибо! - person Justin; 29.11.2017