Как я могу использовать javascript, чтобы проверить цвет и размер ветровки и отправить электронное письмо, когда PayPal одобрит платеж

#javascript #php #html #paypal #paypal-sandbox

#javascript #php #HTML #paypal #paypal-песочница

Вопрос:

Как вы можете видеть на моем веб-сайте здесь, у меня есть работающая кнопка PayPal, которая принимает платежи при покупке в sandbox (вы можете проверить это самостоятельно с помощью электронного письма:hyunsupply@armyspy.com и пароль: Hyuntest), но я хочу также отправить электронное письмо самому себе (или владельцу веб-сайта) с указанием размера и цвета, чтобы я мог знать, что изготовить или отправить. Как я могу использовать javascript, чтобы проверить цвет (переключатель) и размер ветровки (список с помощью css и javascript, который делает его похожим на выпадающий список) и отправить электронное письмо с этой информацией и, предпочтительно, идентификатором заказа или адресом (или каким-либо способом я могу узнать, какой заказ какой). Я пытался использовать if вместе с ответами, которые я нашел в Интернете, но предупреждение не отображается, чтобы проверить, работает ли if. Я работал с php раньше, и я знаю, как заставить php отправлять электронное письмо с переменными и прочим, но я не знаю, как бы я подошел к этому с помощью javascript или есть ли способ сделать это с paypal на php.

 <main>
    <table>
        <tr>
            <th style="width: 60%;">
                <div class="product-photo">
                    <img class="small" style="z-index: 1;" src="images/Windbreaker_white (Back).png">
                    <img class="big" style="z-index: 2;" src="images/Windbreaker_white (Front).png">
                </div>
            </th>
            <th style="padding: 0px 100px 0px 0px;">
                <div style="right: 10%;">
                    <img class="Script_text" src="images/Script_text.png" style="margin: 0px 0px 30px 0px;">
                    <div class="wrap-drop" id="noble-gases" align="left" style="z-index: 101; border-radius: 5px;">
                        <span class="size">Select your size</span>
                        <ul class="drop">
                            <li>X-Small</li>
                            <li>Small</li>
                            <li>Medium</li>
                            <li>Large</li>
                            <li>X-Large</li>
                            <li>XX-Large</li>
                        </ul>
                    </div>
                    <div align="right">
                        <ul class="product-color" style="z-index: 100;">
                            <li>
                                <input type="radio" name="color" id="black" style="z-index: 100;" />
                                <label for="black" style="background-color:rgb(22, 22, 22); z-index: 100;"></label>
                            </li>
                            <li>
                                <input type="radio" name="color" id="white" style="z-index: 100;" checked="checked" />
                                <label for="white" style="background-color:rgb(196, 196, 196); z-index: 100;"></label>
                            </li>
                        </ul>
                    </div>
                    <div id="paypal-button-container" style="padding: 20px 0px 0px 0px"></div>

                    <script>
                        paypal.Buttons({
                            createOrder: function (data, actions) {
                                return actions.order.create({
                                    purchase_units: [{
                                        amount: {
                                            value: '70.00'
                                        }
                                    }]
                                });
                            },

                            onApprove: function (data, actions) {
                                return actions.order.capture().then(function (details) {
                                    var BlackCheckbox = document.getElementById("black");

                                    if (BlackCheckbox.checked == true) {
                                        if ($('.size').find('span:contains("X-Small")').length !=
                                            0) {
                                            alert('Its the extra small black windbreaker');
                                        } else if ($('.size').find('span:contains("Small")').length !=
                                            0) {
                                            alert('Its the small black windbreaker');
                                        } else if ($('.size').find('span:contains("Medium")').length !=
                                            0) {
                                            alert('Its the medium black windbreaker');
                                        } else if ($('.size').find('span:contains("Large")').length !=
                                            0) {
                                            alert('Its the large black windbreaker');
                                        } else if ($('.size').find('span:contains("X-Large")').length !=
                                            0) {
                                            alert('Its the extra large black windbreaker');
                                        } else if ($('.size').find('span:contains("XX-Large")')
                                            .length != 0) {
                                            alert(
                                                'Its the double extra large black windbreaker'
                                            );
                                        }
                                    } else {
                                        if ($('.size').find('span:contains("X-Small")').length !=
                                            0) {
                                            alert('Its the extra small white windbreaker');
                                        } else if ($('.size').find('span:contains("Small")').length !=
                                            0) {
                                            alert('Its the small white windbreaker');
                                        } else if ($('.size').find('span:contains("Medium")').length !=
                                            0) {
                                            alert('Its the medium white windbreaker');
                                        } else if ($('.size').find('span:contains("Large")').length !=
                                            0) {
                                            alert('Its the large white windbreaker');
                                        } else if ($('.size').find('span:contains("X-Large")').length !=
                                            0) {
                                            alert('Its the extra large white windbreaker');
                                        } else if ($('.size').find('span:contains("XX-Large")')
                                            .length != 0) {
                                            alert(
                                                'Its the double extra large white windbreaker'
                                            );
                                        }
                                    }

                                    //alert('Transaction completed by '   details.payer.name.given_name);
                                    return fetch('/paypal-transaction-complete', {
                                        method: 'post',
                                        body: JSON.stringify({
                                            orderID: data.orderID
                                        })
                                    });
                                });
                            },
                            style: {
                                color: 'white',
                                layout: 'horizontal',
                                shape: 'rect',
                                label: 'pay',
                                height: 55
                            },

                        }).render('#paypal-button-container');
                    </script>

                    <script type="text/javascript">
                        PAYPAL_CLIENT = 'PAYPAL_SANDBOX_CLIENT';
                        PAYPAL_SECRET = 'PAYPAL_SANDBOX_SECRET';

                        PAYPAL_OAUTH_API = 'https://api.sandbox.paypal.com/v1/oauth2/token/';
                        PAYPAL_ORDER_API = 'https://api.sandbox.paypal.com/v2/checkout/orders/';

                        basicAuth = base64encode(`${ PAYPAL_CLIENT }:${ PAYPAL_SECRET }`);
                        auth = http.post(PAYPAL_OAUTH_API, {
                            headers: {
                                Accept: `application/json`,
                                Authorization: `Basic ${ basicAuth }`
                            },
                            data: `grant_type=client_credentials`
                        });

                        function handleRequest(request, response) {

                            orderID = request.body.orderID;

                            details = http.get(PAYPAL_ORDER_API   orderID, {
                                headers: {
                                    Accept: `application/json`,
                                    Authorization: `Bearer ${ auth.access_token }`
                                }
                            });

                            if (details.error) {
                                return response.send(500);
                            }

                            if (details.purchase_units[0].amount.value !== '5.77') {
                                return response.send(400);
                            }

                            database.saveTransaction(orderID);

                            return response.send(200);
                        }
                    </script>
                </div>
            </th>
        </tr>
    </table>
  

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

1. Вы действительно поделились своим настоящим паролем?

2. @RopAliMunshi нет, это только учетная запись в изолированной среде, что означает, что я могу удалить ее в любое время. Кроме того, прямо сейчас веб-сайт работает в изолированной среде, поэтому вы не можете ничего купить / оплатить (это предназначено только для тестирования). У него около 500000 фальшивых долларов, просто чтобы протестировать платежную систему, не волнуйтесь, ха-ха

3. Вы можете с помощью ajax отправить подробную информацию о заказе, такую как (размер, цвет, электронная почта, адрес), а затем $_POST все данные и обработать их (вставить в вашу базу данных или направить вам электронное письмо). Вы можете отправить электронное письмо с помощью mail из php или с помощью phpmailer.

Ответ №1:

Почему бы вам не добавить цвет и размер элемента в теле этого вызова?

 return fetch('/paypal-transaction-complete', {
  method: 'post',
  body: JSON.stringify({
    orderID: data.orderID
  })
});
  

Вы onApprove измените функцию на:

 onApprove: function(data, actions) {
  return actions.order.capture().then(function(details) {
    var BlackCheckbox = document.getElementById("black");
    // Getting the color by checking if the checkbox `black` is checked or not
    var color = (BlackCheckbox.checked === true) ? 'black' : 'white';
    // Finding the size by seeing which size the user has selected from the dropdown.
    var size = $('span.size').text();

    //alert('Transaction completed by '   details.payer.name.given_name);
    return fetch('/paypal-transaction-complete', {
      method: 'post',
      body: JSON.stringify({
        orderID: data.orderID,
        color: color,
        size: size
      })
    });
  });
}
  

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

1. Извините, я все еще новичок в javascript, и я получил свой код из документов paypal, поэтому я не уверен во всем этом. Первый вопрос заключается в том, что мне указать вместо <ЗНАЧЕНИЕ ЦВЕТА> и <РАЗМЕР>. Я полагаю, что у меня есть переменные, которые меняются в зависимости от того, какой цвет / размер я выбираю. Кроме того, что все это позволяет мне делать? Он автоматически отправляет его в мою панель управления PayPal или что-то в этом роде. Извините, если я новичок и все это звучит очевидно.

2. Вся ваша onApprove функция в основном проверяет размер и цвет и оповещает об этом клиента. Я обновлю свой ответ, включив значения для <ЗНАЧЕНИЕ ЦВЕТА> и <РАЗМЕР>

3. @TahaInc, я обновил свой ответ, чтобы получить эти значения и отправить его в запросе. Дайте мне знать, если у вас все еще есть какие-либо вопросы.

4. Итак, я попробовал это, и цвет работает нормально, но, к сожалению, размер регистрируется как неопределенный. Я попробовал это оповещение, чтобы увидеть значения переменных: alert('Its the ' color ' and ' size ' and ' data.orderID ' windbreaker'); но размер отображается как неопределенный. Вот [изображение ошибки] ( i.imgur.com/MYmHDRr.png )