单击 Paypal 按钮后的电子邮件表单

Posted

技术标签:

【中文标题】单击 Paypal 按钮后的电子邮件表单【英文标题】:Email form after Paypal button is clicked 【发布时间】:2013-06-23 00:30:38 【问题描述】:

我正在为网站上的预订功能制作一个 Paypal 按钮。唯一的问题是,Paypal 将只接受每个表单 200 个字符。任何额外费用均不结转。这没有问题,除非我希望我的访问者能够给我一个可能超过 200 个字符的预订描述。

有没有办法:

1) 通过 Paypal 发送超过 200 个字符(不要认为这是可能的)

2) 单击按钮时发送一封包含此单个表单内容的电子邮件。

或者,如果你们中的任何人有其他想法,我会全力以赴。如果你能让我的事情尽可能简单,我将不胜感激。我只知道 html/CSS,但我认为这里需要 php。如果你们中的任何人能帮助我弄清楚我也会很感激。如果表单是通过电子邮件发送的,则不需要通过 Paypal 发送,但是当用户单击“立即购买”按钮时,这两个操作都需要进行。我怎样才能做到这一点?

表格代码如下:

    <form name="Booking" class="formoid-default" style="float:right;font-size:14px;font-family:'Open Sans','Helvetica Neue','Helvetica',Arial,Verdana,sans-serif;color:#666666;width:480px" onSubmit="return validateForm()" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="MPNJK99ZNT994">
<table>
<tr class="pay"><td><input type="hidden" name="on0"value="Package">Packages & Addons</td></tr><tr><td><select name="os0">
    <option value="Standard Rental">Standard Rental $199.00 USD</option>
    <option value="All In Special">All In Special $399.00 USD</option>
    <option value="Standard Rental + Custom Software Graphics">Standard Rental + Custom Software Graphics $149.00 USD</option>
    <option value="Standard Rental + Custom Frame Paint">Standard Rental + Custom Frame Paint $99.00 USD</option>
    <option value="Standard Rental + Custom Frame Decal">Standard Rental + Custom Frame Decal $99.00 USD</option>
    <option value="Reservation Date Deposit">Reservation Date Deposit $100.00 USD</option>
</select> </td>
 </tr>
<tr class="pay"><td><input type="hidden" name="on1" value="Contact Name"><strong>Reservation date deposit</strong> ensures that your unit will be reserved for your specific date and time (units are limited). Your deposit will go towards your remaining balance due upon delivery. Please give us a call if you have any questions about reservation date deposit.<hr style="height:0px; visibility:hidden;" />Contact Name*</tr></td><tr><td><input type="text" name="os1" maxlength="200"></td></tr>
<tr class="pay"><td><input type="hidden" name="on2" value="Contact Phone">Contact Phone*</td></tr><tr><td><input type="text" name="os2" maxlength="200"></td></tr>
<tr class="pay"><td><input type="hidden" name="on3" value="Address of event location">Address of event location*</td></tr><tr><td><input type="text" name="os3" maxlength="200"></td></tr>
<tr class="pay"><td><input type="hidden" name="on4" value="Start time for your rental">Start time for your rental*</td></tr><tr><td><input type="text" name="os4" maxlength="200"></td></tr>
<tr class="pay"><td><input type="hidden" name="on5" value="Date of event">Date of event*</td></tr><tr><td><input type="text" data-date-format="mm/dd/yy" id="dp2" name="os5" maxlength="200"></td></tr>
<tr class="pay"><td><input type="hidden" name="on6" value="Comments/Information">Comments/Information<br>Please provide us any information about the event. Theme, colors, name of person being celebrated, logo, etc. Keep in mind we use this information to design your custom software graphics and watermark. The more information the better.</td></tr><tr><td><textarea type="text" cols="20" rows="5" name="os6" maxlength="2000"></textarea></td></tr>
<tr class="pay"><td><input type="hidden" name="on7" value="How did you hear about us?">How did you hear about us?</td></tr><tr><td><input type="text" name="os7" maxlength="200"></td></tr>
</table><br>
<center>
<label for="disclaimer"> <input type="checkbox" name="agree" value="agree_terms" id="disclaimer" />&nbsp;I accept all <a style="color:#3387D4;" href="terms_of_use.html" target="_blank">terms of use</a></label>
<input type="hidden" name="currency_code" value="USD">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" >
<img  border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif"  >
</center>
</form>

倒数第二个表格就是我所说的那个表格。如您所见,我已将其设置为 2000 的最大字符数,但 Papal 仅携带前 200 个。 validateForm() 检查以确保检查所需的表格和使用条款,以防您想知道。

非常感谢任何意见。感谢阅读/回复。

【问题讨论】:

【参考方案1】:

我更喜欢有一个 PHP 脚本来处理和重定向到支付网关,包括 PayPal。

您可以使用向 PayPal 发送交易详情的 HTML 表单,而不是使用托管按钮。您还可以将 POST 请求发送到 PayPal 的服务器,并将详细信息作为发布数据,这是我的首选方法,因为这意味着像 business 这样的变量不在您的客户端代码中并且无法被操纵。

给定一个像这样的简单形式:

<form action="checkout.php" method="post">
  <input type="hidden" name="item_number" value="1" />
  <input type="hidden" name="item_name" value="My fabulous product" />
  <input type="submit" name="buy" />
</form>

您的 checkout.php 脚本可能如下所示:

<?php
if (isset($_POST['buy'])) 
    // merge other details PayPal needs
    $query_data = array(
        'amount' => 'COST OF ITEM',
        'business' => 'YOUR PAYPAL ADDRESS',
        'cmd' => '_xclick',
        'currency_code' => 'GBP',
        'item_number' => $_POST['item_number'],
        'item_name' => $_POST['item_name']
    );

    // redirect to PayPal
    header('Location: https://www.paypal.com/?' . http_build_query($query_data));
    exit;

这只是一个示例,但您应该得到图片。

针对您的实际问题,如果您采用上述方法,那么您可以在结帐脚本中执行任何操作。

一种方法是在您的数据库中创建一个订单记录(状态为“未付款”)。这将为您提供一个订单 ID,您可以将其作为 custom 参数传递给 PayPal。同时,您也可以通过电子邮件发送$_POST['comments'] 的内容,但您需要先捕获用户的电子邮件地址,然后才能重定向到 PayPal。

【讨论】:

【参考方案2】:

您可以使用脚本向您发送包含数据的电子邮件,然后允许买家继续通过 PayPal 进行付款。但是,我要做的是让表单将信息写入数据库,然后将订单号/ID 等分配给客户,在他们进行购买时转移到 PayPal。然后在付款完成后,您可以在系统上查找该订单 ID,并查看买家输入的所有内容。

【讨论】:

【参考方案3】:

我遇到了这个确切的问题。

我将两个 200 个字符的表单域堆叠在一起,并将第二个标记为“额外空间”。然后所有的文本都会从 PayPal 整齐完整地返回。交通没有任何问题,只是有几个问题。

【讨论】:

请给出您的解决方案的代码示例,并更具体地说明流量问题。目前的答案非常不清楚,在它改善之前我会投反对票。

以上是关于单击 Paypal 按钮后的电子邮件表单的主要内容,如果未能解决你的问题,请参考以下文章

HTML 电子邮件 - 电子邮件中的表单形式的按钮

即使未单击单选按钮,仍会提交表单[重复]

在 PayPal 按钮单击上解析表单数据?

电子邮件链接中的 PayPal 自定义变量

在单击 Wordpress 按钮旁边打开 Mailchimp 订阅表单

如何在 laravel 中使用 jquery 自动填写 PayPal Guest Checkout 表单