通知功能在执行PayPal付款时不会更新数据库


Notify function isn't updating the database while performing paypal payments

这是我第一次将PayPal付款集成到项目中,而且是在CI中。所以事情是一切都运行良好,除了通知 URL 应该让我能够将付款状态从"待处理"更改为"成功",但事实并非如此。我有下面的代码,我真的尝试了很多东西,但仍然不知道我在哪里滑落。

    <form id="paypal-pre" action="<?php echo  base_url('auth/process'); ?>" method="post">
    <input type="hidden" name="user_id" value="<?php echo $_POST['register_user_id']; ?>">
    <input type="hidden" name="first_name" value="<?php echo $_POST['customer_first_name']; ?>">
    <input type="hidden" name="last_name" value="<?php echo $_POST['customer_last_name']; ?>">
    <input type="hidden" name="addr1" value="<?php echo $_POST['customer_address1']; ?>">
    <input type="hidden" name="addr2" value="<?php echo $_POST['customer_address2']; ?>">
    <input type="hidden" name="city" value="<?php echo $_POST['customer_city']; ?>">
    <input type="hidden" name="county" value="<?php echo $_POST['customer_county']; ?>">
    <input type="hidden" name="postcode" value="<?php echo $_POST['customer_postcode']; ?>">
    <input type="hidden" name="amount" value="<?php echo $_POST['payment_total']; ?>">
    <!-- Display the payment button. -->
    <input type="image" name="submit" border="0" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif" alt="PayPal - The safer, easier way to pay online">
    <img alt="" border="0" width="1" height="1" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" >
   </form>

以上是帐单信息收集表单。

function process(){
$arr['user'] = array(
    'p_user_id' => $this->input->post('user_id'),
    'p_billing_firstname' => $this->input->post('first_name'),
    'p_billing_lastname' => $this->input->post('last_name'),
    'p_billing_address1' => $this->input->post('addr1'),
    'p_billing_address2' => $this->input->post('addr2'),
    'p_billing_city' => $this->input->post('city'),
    'p_billing_county' => $this->input->post('county'),
    'p_billing_postcode' => $this->input->post('postcode'),
    'p_status' => 'processing',
    'p_amount' => $this->input->post('amount'),
    );
$arr['pay'] = array(
    'p_amount' => $this->input->post('payment_total'),
    );
$this->load->model('demo_auth_model');
$this->demo_auth_model->process($arr);
$this->load->view('paypal',$arr);}
function notify() {
    if($this->input->post('custom') != ''){
    $id = $this->input->post('custom');
    $amt = $_POST['amount'];
    $sql = "UPDATE users_payments SET p_status='success' WHERE p_id='$id'";
    $this->db->query($sql);
    return;
}   
}

处理和通知控制器功能

    <?php $paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
$paypal_id = '******@yahoo.com';
$amount = $_POST['amount'];
$id = mysql_insert_id();?>
<form id="paypal" action="<?= $paypal_url; ?>" method="post">
<input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="<?php echo $paypal_id; ?>">
    <input type="hidden" name="amount" value="<?php echo $amount; ?>">
    <input type="hidden" name="currency_code" value="GBP">
    <input type="hidden" name="item_name" value="<?php echo 'Business Register'; ?>">
    <input type="hidden" name="custom" value="<?php echo $id; ?>" />
    <input type='hidden' name='notify_url' value='<?php echo base_url('auth/notify'); ?>'>
    <input type='hidden' name='cancel_return' value='<?php echo base_url('auth/cancel'); ?>'>
    <input type='hidden' name='return' value='<?php echo base_url();?>'>
</form><script type="text/javascript">
document.getElementById('paypal').submit();
</script>

保存账单信息后自动提交的主PayPal表单。

 public function process($arr) {
        $this->db->set($arr['user']);
        $this->db->insert('user_payments');
        return;
    }

来自demo_auth_model的过程模型

任何帮助将不胜感激。

附言所有数据库信息均正确

对于代码点火器,我更喜欢这个库http://tutsnare.com/integrate-paypal-using-ci-merchant-in-codeigniter/https://github.com/expressodev/ci-merchant原因有二1. 自动重定向到我们的网站2. 将会话中的所有数据带到我们的网站尝试并享受