Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PayPal express checkout integration with multiple buttons on one page

I currently have a list of items with a Paypal button associated with each of them. Each item will be purchased separately by clicking on its associated button.

<ul>
    <li data-id="1">Item 1 <div class="paypal-button"></div></li>
    <li data-id="2">Item 2 <div class="paypal-button"></div></li>
    <li data-id="3">Item 3 <div class="paypal-button"></div></li>
</ul>

<script src="https://www.paypalobjects.com/api/checkout.js"></script>

<script>
    paypal.Button.render({
        // options
    }, '.paypal-button');
</script>

Unfortunately, it seems that paypal.Button.render() will only render the first element that it finds.

Is it possible to do this call on multiple elements?

like image 736
Mikey Avatar asked Mar 22 '17 15:03

Mikey


1 Answers

You need to give each element a unique id, then call render multiple times:

<ul>
    <li data-id="1">Item 1 <div id="button-1"></div></li>
    <li data-id="2">Item 2 <div id="button-2"></div></li>
    <li data-id="3">Item 3 <div id="button-3"></div></li>
</ul>

<script src="https://www.paypalobjects.com/api/checkout.js"></script>

<script>
    [ '#button-1', '#button-2', '#button-3' ].forEach(function(selector) {
        paypal.Button.render({
            // options
        }, selector);
    });
</script>
like image 153
bluepnume Avatar answered Nov 14 '22 21:11

bluepnume