PayPal沙箱账户之间的资金未能转移

3
我正在尝试使用Paypal Express驱动程序将ci-merchant集成到codeigniter中。我按照文档中给出的步骤进行操作。我能够让我的网站重定向到Paypal沙盒付款网站,其中包括总费用和其他信息。但是,当我尝试使用Paypal沙盒账户登录并支付时,即使我有足够的资金在我的账户中,也不会显示我的Paypal余额。当我点击“现在付款”时,它会成功地将我重定向到返回URL,并在URL中提供了令牌和付款者ID,但是没有资金被转移。不确定我做错了哪些步骤。
URL: ../retSuccess?token=EC-01M80248BN787213M&PayerID=9WLBBV9LM6TPA
    $this->load->model('mainmodel');
    $this->mainmodel->orderDetails();

    $query = $this->mainmodel->retrieveOrder();

    foreach ($query as $row){
        $transaction_id = $row['transaction_id'];
    }    
          $this->load->library('merchant');
    $this->merchant->load('paypal_express');

    $settings = array(
            'username' => 'merchant_api1.canada.com',
            'password' => '1369782104',
            'signature' =>'AmTaSH3lkRIYxxjxUjB.1zqxD0cRA1hfMGBX2dV9h4DkcYQcjGtqDaYa',
            'test_mode' => true);

    $this->merchant->initialize($settings);

    $params = array(
             'amount' => $this->input->post('price'),
             'currency' => 'CAD',
             'description'=> $this->input->post('model_no'),
             'return_url' => base_url('payment/transaction/'.$transaction_id),
             'cancel_url'=> base_url('payment/cancel'));

    $response = $this->merchant->purchase($params);

}

public function transaction(){

    $transaction_id = $this->uri->segment(3);

    $this->load->model('mainmodel');
    $query = $this->mainmodel->loadTransaction($transaction_id);

    foreach ($query as $row){
        $price = $row['price'];
        $desc = $row['model_no'];
        $trans_id = $row['transaction_id'];
    }

    $this->load->library('merchant');
    $this->merchant->load('paypal_express');

    $params = array(
            'amount' => '21.3',
            'currency' => 'CAD',
            'description' => 'SP66');

    $response = $this->merchant->purchase_return($params);


    if ($response->success())
    {
        $data['gateway_reference'] = $response->reference();
        $data['model_no'] = $this->session->userdata('model_no');
        $data['category'] = $this->session->userdata('category');
        $data['specs'] = $this->session->userdata('specs');
        $data['quantity'] = $this->session->userdata('quantity');

        $newData = array('status'=>'complete',
                'reference'=>$data['gateway_reference']);
        $this->db->where('transaction_id',$trans_id);
        $this->db->update('transactions',$newData);

        $this->load->view('templates/success',$data);

    }else{

        $data['message'] = $response->message();

        //$this->db->where('transaction_id',$trans_id);
        //$this->db->delete('transactions');

        $this->load->view('templates/failure',$data);

    }

}
3个回答

0

如果我理解正确,沙盒账户应该有买家和卖家账户。您需要检查卖家账户以查看来自买家账户的购买。

我认为问题不是来自CI Merchant。


我已经仔细检查过了。我确实拥有一个买家和卖家账户,这些账户都是活跃的并且已验证。当我在Paypal沙盒站点上进行时,资金可以正常转移,但是在使用这个Ci-merchant时就不行了。 - Ram
现在这是我的回应。 Merchant_response对象 ( [_status:protected] => 失败 [_message:protected] => 您没有权限进行此API调用 [_reference:protected] => [_data:protected] => [_redirect_url:protected] => [_redirect_method:protected] => GET [_redirect_message:protected] => [_redirect_data:protected] => )您认为这是ci-merchant问题还是paypal问题? - Ram

0

确保CI Merchant正在调用PayPal的DoExpressCheckout API。这是快速结账的最后一个API调用,也是实际完成付款和转移资金的API。


现在我也收到了一个错误消息,显示为“您没有权限进行此API调用”,我猜这可能也是资金问题的原因。我该如何授予权限? - Ram
如果您正在尝试在您的账户上运行此API调用,您应该拥有相应的权限。如果您正在使用第三方权限在不同的账户上运行此API调用,您需要确保您要处理的账户已经在他们的账户中授予了您正确的权限。如果您仍然遇到错误,请提供您收到的完整API响应,我可以在我的日志中查找可能导致错误的原因。 - PP_MTS_Chad
我正在尝试在我的沙盒账户中运行此代码。我在我的PayPal登录下创建了2个账户,一个买家账户和一个卖家账户。然后,我像上面展示的那样将卖家API凭据添加到我的代码中。然后,在我的网页中,当我尝试使用我的买家账户进行购买时,我遇到了权限错误。我需要授予一些特殊权限吗?如果需要,该如何操作?这是我的卖家账户(merchant@Canada.com),您能够检查权限吗? - Ram
非常抱歉回复晚了,我离开了几个星期。您现在还有这个问题吗?我检查了您的账户,看到付款已经成功。 - PP_MTS_Chad
很抱歉耽搁了,最后我不得不更改API。我的PayPal账户没有问题。由于某种原因,之前的API对我来说无法正常工作。感谢您的关注和支持 :) - Ram

0
使用ci-merchant,您需要在返回页面上调用purchase_return来完成付款,看起来您只是将所有内容放在初始(预付款)页面上,这样不会有任何作用。

是的,我修改了我的代码。我提供了我的当前代码。实际上,当前的代码是基于您的想法。但现在我得到的响应是“您没有权限进行此API调用”。我已经检查了所有我的API凭据,删除并重新创建了卖家帐户,但没有改进。 - Ram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接