你进到这里就说明你也在关心这个问题,嘻嘻,能帮我解决最好,不能解决提点下也好,硬是不行顶下也好<form name="paypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
     <input type="hidden" name="business" value="[email protected]">
     <!--<!–这里填写你的paypal账户email–>-->
    <input type="hidden" name="item_name" value="order information">
    <!--<!–这里填写客户订单的一些相关信息,当客户连到paypal网站付款的时候将看到这些信息–>-->
    <input type="hidden" name="amount" value="2.00">
    <!--<!–订单的总金额信息–>-->
    <input type="hidden" name="currency_code" value="USD">
    <!--<!–订单总金额对应的货币类型 ,客户可以用其他币种来付款,比如这里订单币种是美元USD,客户可以用欧元EUR来付款,由paypal根据当前汇率自动实现币种之间的换算–>-->
    <input type="hidden" name="on0" value="customerId">
    <!--<!– 自定义的参数1 –>-->
     <input type="hidden" name="os0" value="stephen">
     <!--<!– 对应上面自定义参数1对应的值 –>-->
     <input type="hidden" name="on1" value="address">
     <!--<!– 自定义的参数2 –>-->
    <input type="hidden" name="os1" value="shanghai china">
    <!--<!– 对应上面自定义参数2对应的值 –>-->
     <input type="hidden" name="notify_url" value="http://mail.163.com">
     <input type="hidden" name="custom" value="muri-khao">
     <input type="hidden" name="return" value="http://mail.163.com?id=123">
     <input type="hidden" name="cancel_return" value="http://mail.126.com">
     <input type="hidden" name="rm" value="1">
     <!--<!–这里告诉paypal付款的通信url,即当客户付款后调用这个url通知系统–>-->
     <div align="center">
     <input name="Paypal" type="button" value="Go to Paypal" onclick="javaScript:this.form.submit();"></td>
    </div>
    </form>我怎么做后台数据库即时处理,notify_url链接到我后台action能处理吗?能给详细点的操作步骤吗?我试了很多方法但是解决不了...万事拜托了...

解决方案 »

  1.   

    后台数据库处理是在notify_url指定的页面无声完成,Paypal会给你POST数据,收到后原样返回并加一个成功的符号,网上有很多,大部份都少了一个验证IP的安全过程,如果不验证IP,谁都可以给你POST。
      

  2.   

    我们现在也在做这一块,首先是post到中间商提供的页面然后经过处理之后中间商有post数据回来 根据post回来的数据判断是否支付成功 
      

  3.   

    https://pay3.chinabank.com.cn/PayGate 支付首页
      

  4.   

    post 倒是容易,关键是验证,
      

  5.   


    class paypal
    {
        /**
         * 生成支付代码
         * @param   array   $order  订单信息
         * @param   array   $payment    支付方式信息
         */
        function get_code($order, $payment)
        {
            global $_LANG, $ecs;        $data_order_id      = $order["order_sn"];
            $data_amount        = $order["order_amount"];
            $data_return_url    =  "http://www.XXX.com/?p=trade";
            $data_pay_account   = $payment["paypal_account"];
            $currency_code      = $payment["paypal_currency"];
            $data_notify_url    = return_url(basename(__FILE__, '.php'));        $def_url  = "\n<form action='https://www.paypal.com/cgi-bin/webscr
    ' method='post' target='_blank'>" .   // 不能省略
                "<input type='hidden' name='cmd' value='_xclick'>\n" .                             // 不能省略
                "<input type='hidden' name='business' value='$data_pay_account'>\n" .                 // 贝宝帐号
                "<input type='hidden' name='return' value='$data_return_url'>\n" .                    // 付款后页面
                "<input type='hidden' name='amount' value='$data_amount'>\n" .                        // 订单金额
                "<input type='hidden' name='invoice' value='$data_order_id'>\n" .                      // 订单号
                "<input type='hidden' name='charset' value='utf-8'>\n" .                              // 字符集
                "<input type='hidden' name='no_shipping' value='1'>\n" .                              // 不要求客户提供收货地址
                "<input type='hidden' name='no_note' value=''>\n" .                                  // 付款说明
                "<input type='hidden' name='currency_code' value='$currency_code'>\n" .            // 货币
                "<input type='hidden' name='notify_url' value='$data_notify_url'>\n" .
                "<input type='hidden' name='item_name' value='$order[order_sn]'>\n" .                 // payment for
                "<input type='submit' value='" . $_LANG['paypal_button'] . "'>" .                      // 按钮
                "</form>\n";        return $def_url;
        }
    // 取得支付网关返回的数据中的对应本地系统的 netpayid
    function get_respond_order_sn(){
    return $order_sn = $_POST['invoice'];
    }
        /**
         * 响应操作
         */
        function respond()
        {
            global $DB, $_LANG;        $payment = get_payment('paypal');
            $merchant_id = $payment['paypal_account'];               ///获取商户编号
    $currency_code   = $payment["paypal_currency"];        // read the post from PayPal system and add 'cmd'
            $req = 'cmd=_notify-validate';
            foreach ($_POST as $key => $value)
            {
                $value = urlencode(stripslashes($value));
                $req .= "&$key=$value";
            }        // post back to PayPal system to validate
            $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
            $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
            $header .= "Content-Length: " . strlen($req) ."\r\n\r\n";
            $fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);        // assign posted variables to local variables
            $item_name = $_POST['item_name'];
            $item_number = $_POST['item_number'];
            $payment_status = $_POST['payment_status'];
            $payment_amount = $_POST['mc_gross'];
            $payment_currency = $_POST['mc_currency'];
            $txn_id = $_POST['txn_id'];
            $receiver_email = $_POST['receiver_email'];
            $payer_email = $_POST['payer_email'];
            $order_sn = $_POST['invoice'];
            $action_note = $txn_id . '(' . $_LANG['paypal_txn_id'] . ')' . $_POST['memo'];        if (!$fp)
            {
                fclose($fp);
                return false;
            }
            else
            {
                fputs($fp, $header . $req);
                
                // debug log
                file_put_contents('/tmp/paypal-log', date('Y-m-d H:i:s') . $header . $req . "\n", FILE_APPEND);
                
                
                while (!feof($fp))
                {
                    $res = fgets($fp, 1024);
                    
                    // debug log
                    file_put_contents('/tmp/paypal-log', date('Y-m-d H:i:s') . $res . "\n", FILE_APPEND);
                    
                    
                    if (strcmp($res, "VERIFIED") == 0)
                    {
                        // check the payment_status is Completed
                        if ($payment_status != "Completed")
                        {
                            fclose($fp);
                            return false;
                        }                    // check that txn_id has not been previously processed
                        /*$sql = "SELECT COUNT(*) FROM " . $ecs->table('order_action') . " WHERE action_note LIKE '" . $txn_id . "%'";
                        if ($db->getOne() > 0)
                        {
                            fclose($fp);
                            return false;
                        }*/                    // check that receiver_email is your Primary PayPal email
                        if ($receiver_email != $merchant_id)
                        {
                            fclose($fp);
                            return false;
                        }                    // check that payment_amount/payment_currency are correct
                        $sql = "SELECT dollar FROM " . TABLE_NETPAY . " WHERE id = '$order_sn'";
                        if ($DB->result($sql) != $payment_amount)
                        {
                            fclose($fp);
                            return false;
                        }
                        if ($payment_currency != $currency_code)
                        {
                            fclose($fp);
                            return false;
                        }                    // process payment
                        order_paid($order_sn, PS_PAYED, $action_note);
                        fclose($fp);
                        return true;
                    }
                    elseif (strcmp($res, "INVALID") == 0)
                    {
                        // log for manual investigation
                        fclose($fp);
                        return false;
                    }
                }
            }
        }
    }?>
      

  6.   

    form的action地址和from当前页面是在同一个域里面吗?
    如果不是的话,使用Ajax post来获取返回值吧,自建iframe提交数据,然后Ajax获取iframe的内容。
    如果是在同一个域里面的话,还是建议LZ多扎实一下基本功。