Создайте кнопку PayPal для переменной суммы и в австралийских долларах

#paypal

Вопрос:

Я создаю корзину покупок с помощью PHP и HTML, и все это отлично работает. Но я был бы признателен за некоторую помощь в создании кнопки PayPal(PP), которая обслуживает переменную сумму (т. Е. Общую сумму в корзине) и меняет валюту на австралийские доллары (AUD). Когда я отправляю код ниже, все работает нормально, пока я не пытаюсь изменить валюту, которая по умолчанию равна US$. Мне также нужно настроить URL-адрес для возврата «спасибо» и URL-адрес для отмены. Я гуглил в течение нескольких часов, но до сих пор не нашел решения, которое работает для меня.

Любая помощь будет очень признательна и с нетерпением поблагодарит вас.

 <!-- now the button -->
        <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_blank">
           <input type="hidden" name="cmd" value="_cart">
           <input type="hidden" name="business" value="xxxx@yyyy.com.au">
           <input type="hidden" name="item_name" value="Item Description">
           <input type="hidden" name="item_number" value="">
           <input type="hidden" name="amount" value="$total">
           <input type="hidden" name="handling" value="0.00">
           <input type="hidden" name="shipping" value="0.00">
           <!-- <input type="hidden" name="currency_code" value="AUD"> -->
           <input type="hidden" name="lc" value="AU">
           <input type="hidden" name="bn" value="PP-BuyNowBF">
           <input type="image" src="https://www.paypalobjects.com/en_AU/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online!">
                <img alt="" border="0" src="https://www.paypalobjects.com/en_AU/i/scr/pixel.gif" width="1" height="1">
           <input type="hidden" name="add" value="1">
        </form>
 

Благодаря совету Престона PHX мой код теперь выглядит так, что это нормально, но нажатие на ссылку PayPal, даже если на ней отображается значок руки, никуда не ведет. Пожалуйста, скажите мне, что я делаю неправильно или чего не хватает. И спасибо тебе.

 echo <<<DD1
        <!-- DEVELOPMENT TEST!!!-->
        
            <div id="smart-button-container" style="width: 60%; margin-left: 21%;">
            <div style="text-align: left"><label class="checkout_form_mt_right v_align_top" for="description">Item:amp;nbsp;amp;nbsp;amp;nbsp;</label><input type="text" name="descriptionInput" id="description" size="40" value="Text here"></div>
              <p id="descriptionError" style="visibility: hidden; color:red; text-align: center;">Please enter a description</p>
            <div style="text-align: left"><label  class="checkout_form_mt_right v_align_top" for="amount">Amount:amp;nbsp;amp;nbsp;</label><input name="amountInput" type="string" id="amount" value="$total"><span> AUD</span><span class='v_align_top white_text'><small><i>amp;nbsp;amp;nbsp;Australian dollars</i></small></span></div>
              <p id="priceLabelError" style="visibility: hidden; color:red; text-align: center;">Please enter a price</p>
            <div id="invoiceidDiv" style="text-align: center; display: none;"><label for="invoiceid"> </label><input name="invoiceid" maxlength="127" type="text" id="invoiceid" value="" ></div>
              <p id="invoiceidError" style="visibility: hidden; color:red; text-align: center;">Please enter an Invoice ID</p>
            <div style="text-align: center; margin-top: 0.625rem;" id="paypal-button-container"></div>
          </div>
      
      <script src="https://www.paypal.com/sdk/js?client-id=sbamp;currency=AUD" data-sdk-integration-source="button-factory"></script>
      
      <script>
      function initPayPalButton() {
        var description = document.querySelector('#smart-button-container #description');
        var amount = document.querySelector('#smart-button-container #amount');
        var descriptionError = document.querySelector('#smart-button-container #descriptionError');
        var priceError = document.querySelector('#smart-button-container #priceLabelError');
        var invoiceid = document.querySelector('#smart-button-container #invoiceid');
        var invoiceidError = document.querySelector('#smart-button-container #invoiceidError');
        var invoiceidDiv = document.querySelector('#smart-button-container #invoiceidDiv');
    
        var elArr = [description, amount];
    
        if (invoiceidDiv.firstChild.innerHTML.length > 1) {
          invoiceidDiv.style.display = "block";
        }
    
        var purchase_units = [];
        purchase_units[0] = {};
        purchase_units[0].amount = {};
    
        function validate(event) {
          return event.value.length > 0;
        }
    
        paypal.Buttons({
          style: {
            color: 'gold',
            shape: 'rect',
            label: 'paypal',
            layout: 'vertical',
            
          },
    
          onInit: function (data, actions) {
            actions.disable();
    
            if(invoiceidDiv.style.display === "block") {
              elArr.push(invoiceid);
            }
    
            elArr.forEach(function (item) {
              item.addEventListener('keyup', function (event) {
                var result = elArr.every(validate);
                if (result) {
                  actions.enable();
                } else {
                  actions.disable();
                }
              });
            });
          },
    
          onClick: function () {
            if (description.value.length < 1) {
              descriptionError.style.visibility = "visible";
            } else {
              descriptionError.style.visibility = "hidden";
            }
    
            if (amount.value.length < 1) {
              priceError.style.visibility = "visible";
            } else {
              priceError.style.visibility = "hidden";
            }
    
            if (invoiceid.value.length < 1 amp;amp; invoiceidDiv.style.display === "block") {
              invoiceidError.style.visibility = "visible";
            } else {
              invoiceidError.style.visibility = "hidden";
            }
    
            purchase_units[0].description = description.value;
            purchase_units[0].amount.value = amount.value;
    
            if(invoiceid.value !== '') {
              purchase_units[0].invoice_id = invoiceid.value;
            }
          },
    
          createOrder: function (data, actions) {
            return actions.order.create({
              purchase_units: purchase_units,
            });
          },
    
          onApprove: function (data, actions) {
            return actions.order.capture().then(function (details) {
              alert('Transaction completed by '   details.payer.name.given_name   '!');
            });
          },
    
          onError: function (err) {
            console.log(err);
          }
        }).render('#paypal-button-container');
      }
      initPayPalButton();
      </script>
     
        <br /><br />
 

DD1;
} // завершение разработки

Должна ли панель PayPal быть кнопкой отправки? Если это так, то то, как я это устроил, никуда не приведет. У меня есть ключ API разработчика, но я не знаю, нужно ли/как/куда его включать. Я удалил форму — спасибо за совет.

Опять же, любой совет будет весьма признателен.

Вот фрагмент кода, сгенерированного для желтой кнопки PayPal. Как уже упоминалось, я не вижу никакого HTML

[Царапанье по экрану]

Пожалуйста, обратите внимание, что в данный момент я пытаюсь попасть в песочницу — может быть, есть другая ссылка для создания кнопок для песочницы, хотя я отмечаю, что ссылка, которую предоставил Престон, включает «разработчик»?

Комментарии:

1. Смарт — кнопка, которую вы создаете, не должна входить внутрь <form> . Опубликуйте полный сгенерированный код (ничего не добавляя и не удаляя), если у вас все еще возникают проблемы.

2. Для Preston PHX — я внес некоторые изменения в код области формы, но все они являются стандартными изменениями HTML. Я надеюсь, что эти изменения ничего не испортили. Я также просмотрел код с помощью Firefox CTRL SHIFT I, и никаких ошибок не указано.

3. Привет, Престон PHX, сгенерировано около 6 страниц кода. В Firefox я не смог выбрать код, поэтому я очистил его на экране. Вам от этого какая-нибудь польза? И как бы я передал вам снимки экрана в формате jpg? Еще раз спасибо вам за проявленный интерес.

4. Я добавлю сгенерированный код для желтой кнопки PayPal, но я не вижу никакого HTML

5. Говоря «опубликовать полный сгенерированный код», я имею в виду то, что выводит генератор кнопок, а не то, что отображается в вашем браузере при загрузке и запуске.

Ответ №1:

Вы можете создать более новую «умную» кнопку на переменную сумму с помощью https://www.paypal.com/signin?intent=developeramp;returnUri=https://www.paypal.com/buttons/smart

Комментарии:

1. Спасибо — я попробую — очень признателен.

Ответ №2:

После многих часов это работает 🙂

 <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_blank">
               <input type="hidden" name="cmd" value="_xclick">
               <input type="hidden" name="business" value="xxxx@yyyy.com.au">
               <input type="hidden" name="item_name" value="Item Description">
               <input type="hidden" name="item_number" value="">
               <input type="hidden" name="amount" value="$total">
               <input type="hidden" name="handling" value="0.00">
               <input type="hidden" name="shipping" value="0.00">
               <input type="hidden" name="currency_code" value="AUD">
               <input type="hidden" name="lc" value="AU">
               <input type="hidden" name="bn" value="PP-BuyNowBF">
               <input type="hidden" name="add" value="1">
               <input type="image" src="./images/PayPal_Button.jpg" alt="Submit" width="100"> <!-- the submit button -->
            </form>
 

Большое спасибо Престону за помощь.