天道酬勤,学无止境

Submit PayPal form & Update Database at same time

If I use the standard PayPal form for payments can I also update my db at the same time, by changing the code slightly to include the update details?

This is the standard PayPal payment form I want to use - Will change as necessary..

 <form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="payPalForm">

 <input type="hidden" name="item_number" value="01 - General Payment to FreelanceSwitch.com">
 <input type="hidden" name="cmd" value="_xclick">
 <input type="hidden" name="no_note" value="1">
 <input type="hidden" name="business" value="your@paypalaccount.com">
 <input type="hidden" name="currency_code" value="USD">
 <input type="hidden" name="return" value="http://freelanceswitch.com/payment-complete/">

 Item Details:<br /><input name="item_name" type="text" id="item_name"  size="45">
 <br /><br />
 Amount: <br /><input name="amount" type="text" id="amount" size="45">
 <br /><br />
 <input type="submit" name="Submit" value="Submit">

 </form>

This is my update coding in my page:

 $editFormAction = $_SERVER['PHP_SELF'];
 if (isset($_SERVER['QUERY_STRING'])) {
   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
 }

 if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form")) {
   $updateSQL = sprintf("UPDATE db SET payment_page_completed=%s WHERE id=%s",
                   GetSQLValueString($_POST['payment_page_completed'], "text"),
                   GetSQLValueString($_POST['id'], "int"));

   mysql_select_db($database_connAdmin, $connAdmin);
   $Result1 = mysql_query($updateSQL, $connAdmin) or die(mysql_error());

   //$updateGoTo = "confirmation"; WILL NEED TO CHANGE AS NEEDS TO GO TO PAYPAL


   if (isset($_SERVER['QUERY_STRING'])) {
     $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
     $updateGoTo .= $_SERVER['QUERY_STRING'];
   }
   header(sprintf("Location: %s", $updateGoTo));
 }

This is my current form

 <form action="<?php echo $editFormAction; ?>" name="form" class="" id="form" method="POST" enctype="multipart/form-data">
 <input type="hidden" name="id" value="<?php echo $_SESSION['id']; ?>" readonly="readonly">
 <input type="hidden" name="payment_page_completed" value="yes" readonly="readonly">
 </form>

Thank you

标签

评论

Yes you can do it in two ways by submitting form to two sides with two submits on one form, one to paypal and other to the page where you can save it in your db.

EDIT 1:

In your form add two submits like this:

<input type="submit" name="submit" class="btns" id="submit1" value="Save in DB" onclick="changeWhere('http://yourwebsite.com/savedata.php');" >

<input type="submit" name="submit" class="btns" id="submit2" value="Move to PayPal"
onclick="changeWhere('https://www.paypal.com/cgi-bin/webscr');" disabled="true">

and in your script add this:

<script type="text/javascript">

function changeWhere(place){

    document.form.action=place;   //use your forms name inplace of form

}

</script>

EDIT 2:

using single submit for two form actions

add this in your form:

<input type="button" value="Submit" onclick="submitTwice(this.form)">

and in script add this:

<script type="text/javascript">
 function submitTwice(form){
 form.action = 'https://www.paypal.com/cgi-bin/webscr';
 form.submit();
 form.action = 'savedata.php';
 form.submit();
}
</script>

It works for me. :-)

EDIT 3:

savedata.php may include code like;

<?php
$item_name   = $_POST['item_name'];
$item_price  = $_POST['item_price'];
$item_number = $_POST['item_number'];

$sql="Insert into sales (name, price, number) values ('$item_name', '$item_price', '$item_number')";
$result=mysql_query($sql);
?>

Hope this helps.

An identical question was posed here and should give you the answers you need. If you need clarification please comment.

To quote that answer, it involves submitting data to your PHP, then using a socket request to send that data to PayPal:

function post($host, $path, $data) { 
$http_response = ''; 
$content_length = strlen($data); 
$fp = fsockopen($host, 80); 
fputs($fp, "POST $path HTTP/1.1\r\n"); 
fputs($fp, "Host: $host\r\n"); 
fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n"); 
fputs($fp, "Content-Length: $content_length\r\n"); 
fputs($fp, "Connection: close\r\n\r\n"); 
fputs($fp, $data); 
while (!feof($fp)) $http_response .= fgets($fp, 28); 
fclose($fp); 
return $http_response; 
}
$postdata = '?foo=bar'; 
foreach($_POST as $key => $val) $postdata .= '&'.$key.'='.$val;

Important Notes: I copied that code from the thread I linked, so check it out for more information. Also, this will submit to your PHP. You'll need to redirect the user to that POST request if you want them to actually view the PayPal page.

Moreover, it seems like you might benefit from using PayPal's Instant Payment Notification feature. This essentially calls back a URL of your choosing with all of the payment information. I found this tutorial immensely helpful in learning how to do this in PHP.

I have the same problem, what I did is to do Ajax pausing my submittion and calling my insert.php. My insert.php pretty much the saving to database. I have written the exact steps here. Save HTML form POST to database before redirecting to PayPal

<script>

 $(function () {

        $('#senrollnow').on('submit', function (e) {

      var form = $(this);

      if(!form.hasClass('pending')) {

          e.preventDefault();

          form.addClass('pending');

          $.ajax({

              type: 'post',

              url: 'insert.php',

              data: $('#senrollnow').serialize(),

              success: function () {

                form.submit();

                 alert('form was submitted'+data);

              }
          });
      }
});

  $('#freeform').on('submit', function (e) {

  //e.preventDefault(); //prevents the form to submit

          alert("Your request has been sent! Please check your email within 12 hours for my feedback. Thank you.");

        });

      });

</script>

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 设置PayPal返回网址并使其自动返回?(Setting PayPal return URL and making it auto return?)
    问题 这是对以下问题的跟进问题:PHP:开始PayPal结帐的简便方法? 所以,我的问题是我要指定返回网址。 但是,在使用PayPal付款后,我最终看到一个屏幕,上面写着: 您刚完成付款。 XXXX,您刚完成付款。 您为此付款的交易ID为:XXXXXXXXXXXXX。 我们将向XX@XXXX.com发送确认电子邮件。 该交易将在您的对帐单上显示为PAYPAL。 Go to PayPal account overview 我需要它不显示此屏幕,而是直接转到返回URL。 我有: 设置“返回”变量将“ rm”变量设置为:2(根据指南=“使用POST方法将买方的浏览器重定向到返回URL,并且包括所有付款变量”) 实际上,这是我的整个表格: <form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr"> <input type="hidden" value="_xclick" name="cmd"> <input type="hidden" value="onlinestore@thegreekmerchant.com" name="business"> <!-- <input type="hidden" name="undefined_quantity" value="1" /> --> <input
  • 贝宝notify_url和return_url。 使用PHP接收没有IPN的变量(Paypal notify_url and return_url. Receiving variables without IPN using PHP)
    问题 我正在尝试为Paypal设置一个简单的付款方式,但是在退货和通知URL时遇到一些麻烦/困惑。 我对php很陌生,以前在asp中已经做到了,但是现在迷路了。 所以我的基本贝宝形式: <form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="PayPalForm" name="PayPalForm" target="_top"> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="business" value="email@hotmail.com"> <input type="hidden" name="amount" value="0.01"> <input type="hidden" name="item_name" value="Composite Door"> <input type="hidden" name="item_number" value="<?php echo $orderID ?>"> <input type="hidden" name="currency_code" value="GBP"> <input type="hidden" name="cancel_return
  • 一键提交两种表格(Submit two forms with one button)
    问题 我有HTML两种形式,一种在使用PHP进入数据库时​​提交数据,另一种将用户定向到Paypal付款页面,我的问题是用户将不得不同时提交两种形式,我当然不希望它们必须去做。 无论如何,对于两种形式都可以使用一个提交按钮吗? (欢迎使用Javascript) 回答1 您应该能够使用JavaScript做到这一点: <input type="button" value="Click Me!" onclick="submitForms()" /> 如果您的表单具有ID: submitForms = function(){ document.getElementById("form1").submit(); document.getElementById("form2").submit(); } 如果您的表单没有ID,但有名称: submitForms = function(){ document.forms["form1"].submit(); document.forms["form2"].submit(); } 回答2 提交表单会使页面导航到表单的action 。 因此,您不能以传统方式提交两种形式。 如果您尝试通过依次在每个表单上调用form.submit()来使用JavaScript进行操作,则除最后一次提交外,每个请求都将被中止。 因此
  • Setting PayPal return URL and making it auto return?
    This is a follow up question to: PHP: Easy way to start PayPal checkout? So, my problem is that I am specifying the return url. However, after paying with PayPal, I end up at a a screen that says: You just completed your payment. XXXX, you just completed your payment. Your transaction ID for this payment is: XXXXXXXXXXXXX. We'll send a confirmation email to XX@XXXX.com. This transaction will appear on your statement as PAYPAL. Go to PayPal account overview I need it to not show this screen and go directly to the return URL. I have: Set the "return" variable Set the "rm" variable to: 2 (which
  • PayPal帐户,测试和沙箱(PayPal accounts, testing and sandbox)
    问题 我有一个英国PayPal商业帐户。 我目前正在开发一个网站付款系统,以使用Express Checkout向该帐户付款。 到目前为止,我的PHP代码正在运行,并且我能够连接到沙箱并进行设置和表达结帐。 下一步是将用户重定向到PayPal沙箱以进行测试付款。 在这一点上,我被卡住了。 我无法在PayPal沙箱上创建用作“客户”的“个人测试”帐户。 我正在尝试这样: 访问developer.paypal.com 登录选择“应用程序” 选择“沙盒帐户” 选择“创建帐户” 选择国家作为“英国”,帐户类型为“个人”,有效的电子邮件地址(不与任何其他贝宝帐户关联),密码,名字,姓氏,已验证的银行=是,卡类型=签证。 点击创建帐户。 然后,我收到以下消息: 抱歉,出了点问题。请删除此帐户,然后重试。 当它说“删除此帐户”时,我不知道它的实际含义,因为它没有使用我刚刚输入的详细信息创建一个新的个人帐户(至少没有一个我可以在任何地方看到的帐户)。 我什至尝试创建一个新的企业帐户来创建此个人帐户,但这没有什么区别。 还有其他人遇到问题吗? 我有点卡住了。 我可以使用我的“真实”个人PayPal帐户在沙盒上进行测试,而不会冒着损失任何已建立的测试企业帐户真实资金的风险吗? 回答1 好的,我已经深入到此,回答我自己的问题。 首先感谢那些提供了答案和评论的人。 因此,在我的特殊情况下
  • How do I pass session variables to paypal with buy now button
    When my users are logged in with their username and userid saved in the session variable they can donate using paypal. With the simple buy now button that you can simply generate at paypal. <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="XXX"> <input type="image" src="https://www.paypal.com/en_US/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.paypal.com/en_US/i/scr/pixel.gif"
  • jQuery的表单提交在IE中不起作用(jquery's form submit not working in IE)
    问题 我们在这里试图做的是拥有一个ID为upgrade_form的表单。 我们也有一个名为“ paypal_submit”的表格。 此表格为空白。 “ upgrade_form”具有帐单明细字段(地址,名称,有效期等) 然后,我们只有一个提交按钮,其逻辑是,如果选中了信用卡单选按钮,它将提交表单,但是当您选择贝宝时,它将显示一个nyromodal(http://nyromodal.nyrodev.com)灯箱。单选按钮,然后单击提交。 编辑 * 好的,我们彻底改造了整个过程。 我们首先添加了2个未包含在表单中的隐藏字段。 这2个字段包含信用卡和Paypal的网址。 选择信用卡单选按钮时,您将获得信用卡网址。 选择贝宝单选按钮时,您将获得贝宝URL。 当您单击单选按钮时,我们以此更改表单的操作: $('#upgrade_form').attr('action', $('#credit-card-target-url').val()) (credit-card-url为隐藏字段) 因此,当我们点击nyromodal灯箱中的链接时,我们只需调用 $('#upgrade_form').submit(); 但! 在任何IE中仍然无法使用。 有什么帮助吗? 我们正在安装建议的IE脚本调试器,但我很悲观,我们什么也看不到。 编辑 刚刚重试了这个。 我们取出了灯箱和其他代码。
  • Auto Submitting a form (cURL)
    Im writing a form to post data off to paypal, and this works fine, i create the form with hidden fields and then have a submit button that submits everything to paypal. However, when the user clicks that button, there is more that i want to do, for example change their cart status in the database. So, i want to be able to execute some code when they click submit and then post the data to paypal. I dont want to use javascript for this. My method at the moment is using cURL, the form posts back to the current page, i then check for $_POST data, do my other commands like updating the status of
  • 通过贝宝(一次)支付多个项目(Paying for multiple items (at once) via paypal)
    问题 我有一个要添加“立即付款”按钮的产品列表,这样我就可以允许我的客户通过Paypal付款。 我已经阅读了文档,找不到如何执行此操作。 我可以添加多个项目,但这不会很方便,因为我已经有要处理的项目列表。 我还需要结帐流程来逐项列出订单,因此以1个价格进行“立即购买”也不是一件好事。 任何帮助表示赞赏的人,我都尝试过(没有运气): <form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_cart"> <input type="hidden" name="business" value="email@domain.com"> <input type="hidden" name="lc" value="GB"> <input type="hidden" name="item_name" value="test 1"> <input type="hidden" name="item_number" value="1"> <input type="hidden" name="item_name2" value="test 2"> <input type="hidden" name="item
  • PayPal IPN Issue, but works in Sandbox fine
    Using the code located on GitHub here: https://github.com/Quixotix/PHP-PayPal-IPN Ok, so, I have a php page like so which I am using as my ipnlistener for the sa=paypal_verify part of the url within variables, in Step 3 of button creation like so: notify_url=http://mydomain.com/index.php?page=paypaltest;sa=paypal_verify return=http://mydomain.com/index.php?page=paypaltest;sa=thankyou rm=2 Here is the code linking to http://mydomain.com/index.php?page=paypaltest if (!empty($_REQUEST['sa']) && $_REQUEST['sa'] != 'thankyou') { // Require file for loading up global variables, etc. Might not be
  • php paypal. A way to validate a payment before accepting the payments
    Is there a way to validate a payment before paypal proceed the order ? I Use my own shopping cart. When the customer click on Submit Order, I redirect the user on an other page call, PayPalRedirect.php PayPalRedirect.php <form name="paypalform" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_cart"> <input type="hidden" name="upload" value="1"> <input type="hidden" name="invoice" value="<? echo $idInvoice; ?>"> <input type="hidden" name="business" value="business_email@example.com"> <input type="hidden" name="notify_url" value="http
  • 通过定制网站接受Paypal付款(Accepting a Paypal payment through a custom-built website)
    问题 我一直在制作酒店预订软件,该软件可以计算给定日期和规格的酒店住宿价格。 我希望使用Paypal接受付款,但是浏览了他们的网站后,找不到与之兼容的解决方案。 由于价格是动态的,因此它不像贝宝(Paypal)似乎能最好地处理的普通一价产品。 我需要一种方法,可以将费用发送给贝宝,让贝宝向客户收费,然后让贝宝将确认已正确处理的确认信息发送回网站,这时预订已完成。 我认为Paypal能够处理这样的动态定价商品。 谁能指出我应该去的方向? 回答1 我刚刚在我当前的网站bpremium.com上完成了此过程,基本上,我为付款过程构建了一个Web服务api,它可以通过javascript发送命令,直到到达最后一个阶段,在该阶段,您将构建发送给Paypal的表单。 为了记录付款,您为通知URL设置了另一个Web服务,它将捕获所有$ _POST数据并将其处理到数据库中。 <form id="form-payment-paypal" action="https://www.paypal.com/cgi-bin/webscr"> <input type="hidden" name="cmd" value="_xclick" /> <input type="hidden" name="bn" value="PP-BuyNowBF" /> <input type="hidden" name=
  • 我可以将变量发送给贝宝,并在付款完成后将其发回给我吗?(Can I send a variable to paypal, and have it post it back to me when payment completes?)
    问题 我一直使用Express Checkout API在付款后将我网站上的用户帐户转换为高级帐户。 唯一的问题是,它只有在用户单击按钮返回后才将用户发送回站点,并且在发生这种情况时会更新其权限。 大约40%的用户似乎没有这样做。 尽管Paypal会在成功付款后立即进行回发,但我始终无法立即使它真正更新用户的帐户,因为我无法使它发送回某种能识别刚刚完成付款的用户的信息。 。 只有将您发送回发送回ID的站点(该站点发送事务ID)后,我才能执行此操作。 它搜索它,并在数据库中找到它时授予许可。 有没有一种方法可以将某种变量提交给贝宝,然后将其回发给我? 类似于&user_id = 123之类的东西,它很容易更新用户的权限。 回答1 是的,如果您发送item_number ,则IPN通知在回发给您时将包括该通知。 当用户开始付款过程时,我会在数据库中记录一个唯一的ID,并在将其发送给PayPal时将其包括在内。 当IPN进入时,该唯一ID与数据库中的记录匹配,从而提供了我所需的所有信息。 编辑关于您的评论: 我希望上面链接的站点上有一个代码示例,但基本上,对于我而言,我使用的是我张贴到https://www.paypal.com/cgi-bin/webscr的表单。 在这种形式是在IPN的东西记录各种隐藏字段( cmd什么命令执行, business指定商家ID, item
  • How to prevent duplicate PayPal payments?
    I have a simple Pay Now button, the code created through the button maker, with a "custom" hidden field added to identify it. I wonder if there is some additional hidden field I can add to tell PayPal that "This transaction should not be made twice". <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="custom" value="{MYUNIQUEID}"> <input type="hidden" name="hosted_button_id" value="{MYHOSTEDBUTTONID}"> <input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif"
  • 贝宝篡改金额(PayPal amount tampering)
    问题 我之前从未进行过Paypal集成,但是我曾与其他网关合作过。 与其他网关一起,还以表格形式发送哈希值,这可以防止人们篡改数据(即更改数量)。 如何用Paypal阻止这种篡改,似乎没有任何哈希值。 <form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr"> <input type="hidden" value="_xclick" name="cmd"> <input type="hidden" value="online****@theg*****.com" name="business"> <!-- <input type="hidden" name="undefined_quantity" value="1" /> --> <input type="hidden" value="Order" name="item_name"> <input type="hidden" value="NA" name="item_number"> <input type="hidden" value="22.16" name="amount"> <input type="hidden" value="5.17" name="shipping"> <input type="hidden" value=
  • 贝宝沙盒IPN返回无效(Paypal sandbox IPN return INVALID)
    问题 我正在尝试使用servlet进行IPN回调。 我使用的代码由paypal提供,用于验证ipn数据。 但是,每当我收到无效响应时。 这是代码: Enumeration en = req.getParameterNames(); String str = "cmd=_notify-validate"; while (en.hasMoreElements()) { String paramName = (String) en.nextElement(); String paramValue = req.getParameter(paramName); //str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue,"UTF-8"); // for UTF-8 i set the encode format in my account as UTF-8 //str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue,"ISO-8859-1");// for ISO-8859-1 i set the encode format in my account as ISO-8859-1 str = str + "&" + paramName + "="
  • django-paypal setup
    Has anyone setup django-paypal? Here is the link to it here? I have "myproject" setup, and my folder sturecture looks like this: myproject > paypal > (stdandard and pro folders) to my settins.py file I added INSTALLED_APPS = ( 'myproject.paypal.standard', 'myproject.paypal.pro', ) in my url's file for my account app I added: urlpatterns += patterns('myproject.account.views', (r'^payment-url/$', 'buy_my_item'), ) and in my account view I added: from myproject.paypal.pro.views import PayPalPro from myproject.paypal.pro.forms import PaymentForm, ConfirmForm def buy_my_item(request): item = {'amt'
  • 带重定向参数的PHP重定向(PHP Redirection with Post Parameters)
    问题 我有一个网页。 该网页将用户重定向到另一个网页,或多或少地通过以下方式进行: <form method="post" action="anotherpage.php" id="myform"> <?php foreach($_GET as $key => $value){ echo "<input type='hidden' name='{$key}' value='{$value}' />"; } ?> </form> <script> document.getElementById('myform').submit(); </script> 好吧,您知道,我要做的是将GET参数转换为POST参数。 不要告诉我这很不好,我知道我自己,这也不是我真正要做的,重要的是我从数组中收集数据,然后尝试通过POST将其提交到另一个页面。 但是,如果用户关闭了JavaScript,它将无法正常工作。 我需要知道的是:是否有一种方法可以通过PHP传输POST参数,以便重定向也可以通过PHP方式完成( header('Location: anotherpage.php'); )? 对我来说,通过POST传递参数非常重要。 我不能使用$ _SESSION变量,因为该网页位于另一个域上,因此$ _SESSION变量有所不同。 无论如何,我只需要一种用PHP传送POST变量的方法^^ 提前致谢!
  • Django和PayPal集成(Django & PayPal integration)
    问题 我正在使用Python设计一个网站(使用Django),并且需要通过该网站销售商品。 有人可以帮助我提供源代码来集成paypal-pro(直接付款)或paypal-standard(快速结帐)吗? 回答1 您可能想尝试django-paypal,甚至在首页上也有一个教程。 回答2 paypal.standard.ipn PayPal API生成一个按钮,该按钮将通过paypal.standard.ipn调用其API。 对于API集成,您必须遵循以下给定步骤: 安装django-paypal : pip install django-paypal 更新settings.py文件: INSTALLED_APPS = [ 'paypal.standard.ipn', ] PAYPAL_RECEIVER_EMAIL = 'XXXXX' PAYPAL_TEST = True 写收件人的电子邮件地址。 PAYPAL_TEST = True表示您需要Test API付款。 您可以为原始付款API编写“ False”。 运行命令: python manage.py migrate 在urls.py中: url(r'^paypal/', include('paypal.standard.ipn.urls')), url(r'^payment_process/$', api_views
  • jquery's form submit not working in IE
    What we are trying to do here is that we have a form with an id of upgrade_form. We also have a form called 'paypal_submit' form. This form is blank. 'upgrade_form' has billing detail fields(address, name, expiry etc) We then have just one submit button, and the logic was that it will submit the form if a credit card radio button is checked, but it will show a nyromodal(http://nyromodal.nyrodev.com) lightbox when you choose the paypal radio button and click submit. EDIT * Okay, we totally revamped the whole process. We first added 2 hidden fields that are not included in the form. These 2