codeigniter和paypal - 点击时没有任何反应

时间:2013-10-30 14:24:04

标签: php jquery codeigniter paypal

我正在使用Pay-pal插件进行codeigniter found here codeigniter 2.0 +,php 5.3.13 with apache 2.2.22。这个插件过时了吗?

所以这就是我所拥有的,问题是什么。

private function getPayPalForm( $first_name, $last_name, $amount, $registration_id ){
    $this->load->library('Paypal_Lib');        
    $this->paypal_lib->add_field('return', site_url('/register/success/'));
    $this->paypal_lib->add_field('cancel_return', site_url('/register/cancel/'));
    $this->paypal_lib->add_field('notify_url', site_url('/register/ipn/'));
    $this->paypal_lib->add_field('custom', $registration_id);
    $this->paypal_lib->add_field('item_name', 'Registration ID - '.$registration_id." for ".$first_name." ".$last_name);
    $this->paypal_lib->add_field('item_number', $registration_id );
    $this->paypal_lib->add_field('amount', $amount);
    return $this->paypal_lib->paypal_form();
}

这是从插件中调用的函数

function paypal_form($form_name='paypal_form') 
{
    $str = '';
    $str .= '<form method="post" action="'.$this->paypal_url.'" name="'.$form_name.'"/>' . "\n";
    foreach ($this->fields as $name => $value)
        $str .= form_hidden($name, $value) . "\n";
    $str .= '<p>'. $this->submit_btn . '</p>';
    $str .= form_close() . "\n";

    return $str;
}

所有信息都出现在我的自定义视图的正确位置。这是该观点。

<div>
       <div class="innerwidget">
        <div class="bubble">
            <div class="rectangle"><span>Make Payment</span></div>
            <div class="triangle-l"></div>
            <div class="triangle-r"></div>
            <div class="info">
                <p>Hari Om <?php echo $firstname; ?>, you are almost done.</p>
                <p> To make your payment, please click the Pay-Pal button below.</p>

<div class="form-button-container">
    <?php echo( $paypal_form ); ?>
    <p style="font-size: 12px; color:blue;"> <b>Check out with Paypal to pay by Paypal Account or credit card.</b></p>
</div>  

            </div>
        </div>
     </div> 
</div> 

所有这一切都很好,问题是,当我点击我的按钮时没有任何反应。我没有转发付款给朋友。我正在加载jquery库作为我的基本模板头部分的一部分。这些图书馆是否有冲突?

这是火虫输出。

<div class="form-button-container">
 <form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr" name="paypal_form"/>
   <input type="hidden" name="rm" value="2" />
  <input type="hidden" name="cmd" value="_xclick" />
  <input type="hidden" name="currency_code" value="USD" />
   <input type="hidden" name="quantity" value="1" />
  <input type="hidden" name="business" value="mymail@gmail.com" />
   <input type="hidden" name="return" value="https://www.mydomain.org/successFunction" />
   <input type="hidden" name="cancel_return" value="https://www.mydomain.org/cancelFunction />
   <input type="hidden" name="notify_url" value="https://www.mydomain.org/ipn" />
   <input type="hidden" name="custom" value="1375" />
  <input type="hidden" name="item_name" value="2013 Annual Banquet - 2 persons" />
   <input type="hidden" name="amount" value="50" />
  <p> <input type="image" name="add" src="https://www.mydomain.org/assets/images/buttons/btn_xpressCheckout.gif" border="0" /></p>
  </form>
  <p style="font-size: 12px; color:red;"> <b>Check out with Paypal to pay by Paypal Account or credit card.</b></p>
</div> 

这是我第一次使用pay-pal而且我完全被难倒了。

编辑: 我应该调整插件,将输入类型称为提交而不是图像吗?这就是插件的来源。

function image()
{
    $this->submit_btn = '<input type="image" name="add" src="' . base_url() . 'images/paypal-button.png" border="0" />';
}

2 个答案:

答案 0 :(得分:0)

好的,如果其他人遇到类似的问题。我正在使用jquery ajax发布我的动作。该操作返回HTML,我只是将其清空并附加到正文。 BIG MISTAKE 我使用http://www.avramovic.info/razno/jquery/redirect/在jquery stye中进行重定向,它运行得很好。另见this post

        $.post( "<?php echo base_url();?>register/finish", mydataobject, function(data){
              //bla bla
        }); 

现在我正在做的就是

$().redirect('<?php echo base_url();?>register/finish', mydataobject);

希望它可以帮助有需要的人

答案 1 :(得分:0)

我会说,是的,它已经过时了。它的版权是2006年。

我的意思并不是简单地插入我自己的东西,但由于你使用的是CodeIgniter,我建议使用我的CI Library for PayPal。我维护它,并且它已经为很多不同的开发人员工作了很多年。

现在,我的图书馆不包含您在此处使用的付款标准,但它确实包括Express Checkout(以及几乎所有其他API PayPal提供的),这是标准结帐表单的API版本。

Express Checkout包含SetExpressCheckout,GetExpressCheckoutDetails和DoExpressCheckoutPayment。这是一项更多的工作,但它比Payments Standard具有的限制更少,并且它将让您在结账体验中做出与标准付款集成无法完成的不同的事情。

例如,使用Payments Standard,即使您的PayPal帐户个人资料中启用了自动退回功能,也无法保证用户最终会返回您的网站。重定向需要5-10秒,用户可以(并经常)在重定向发生之前关闭浏览器。

使用Express Checkout,用户将在完成结帐流程之前始终返回您的站点,这样您就可以更轻松地处理结账中的内容。