第一个PayPal重定向以错误“无法使用类型的对象...作为数组”结束

时间:2015-09-29 07:28:48

标签: php redirect paypal

我们的PayPal付款流程存在问题。有时用户在重定向到PayPal时会出错,大多数情况下都没有。由于它似乎不依赖于他们正在使用的设备,我不知道该做什么。每个第三次PayPal付款都会出现此问题,如果客户再次发送订单,则可以在第二次或第三次尝试时使用。

我们在非商店网站上使用Jeremy Desvaux的PayPal PHP Manager。意味着没有框架,一切都由我们的开发人员编码。

是否有人将自己称为PayPal天才来帮助我们?

尝试使用PayPal付款时出现错误消息:

  

致命错误:无法使用PayPal \ Api \ Links类型的对象作为数组   ... / 721行的Checkout.php

PHP代码

正如您所看到的,第一行中有一条评论,我们的开发人员试图通过使用getApprovalLink方法解决该问题。

//$redirectUrl = $payment->getApprovalLink();
$redirectUrl = $payment->links[1]["href"];
$paymentID = $payment->id;
$sql = sprintf("INSERT INTO exampleTable VALUES (%d, '%s')", $this->exampleValue1, $exampleValue2);
$this->MainDB->query($sql);

header("Location: ".$redirectUrl);
exit;
break;

我还发现了一个问题,可能是同一个问题,但没有得到答案。

PayPal first redirect crash, second one redirect the user successfully

修改

这是PayPal \ Api \ Links类

<?php

namespace PayPal\Api;

use PayPal\Common\PayPalModel;

/**
 * Class Links
 *
 * 
 *
 * @package PayPal\Api
 *
 * @property string href
 * @property string rel
 * @property \PayPal\Api\HyperSchema targetSchema
 * @property string method
 * @property string enctype
 * @property \PayPal\Api\HyperSchema schema
 */
class Links extends PayPalModel
{
    /**
     * Sets Href
     *
     * @param string $href
     * 
     * @return $this
     */
    public function setHref($href)
    {
        $this->href = $href;
        return $this;
    }

    /**
     * Gets Href
     *
     * @return string
     */
    public function getHref()
    {
        return $this->href;
    }

    /**
     * Sets Rel
     *
     * @param string $rel
     * 
     * @return $this
     */
    public function setRel($rel)
    {
        $this->rel = $rel;
        return $this;
    }

    /**
     * Gets Rel
     *
     * @return string
     */
    public function getRel()
    {
        return $this->rel;
    }

    /**
     * Sets TargetSchema
     *
     * @param \PayPal\Api\HyperSchema $targetSchema
     * 
     * @return $this
     */
    public function setTargetSchema($targetSchema)
    {
        $this->targetSchema = $targetSchema;
        return $this;
    }

    /**
     * Gets TargetSchema
     *
     * @return \PayPal\Api\HyperSchema
     */
    public function getTargetSchema()
    {
        return $this->targetSchema;
    }

    /**
     * Sets Method
     *
     * @param string $method
     * 
     * @return $this
     */
    public function setMethod($method)
    {
        $this->method = $method;
        return $this;
    }

    /**
     * Gets Method
     *
     * @return string
     */
    public function getMethod()
    {
        return $this->method;
    }

    /**
     * Sets Enctype
     *
     * @param string $enctype
     * 
     * @return $this
     */
    public function setEnctype($enctype)
    {
        $this->enctype = $enctype;
        return $this;
    }

    /**
     * Gets Enctype
     *
     * @return string
     */
    public function getEnctype()
    {
        return $this->enctype;
    }

    /**
     * Sets Schema
     *
     * @param \PayPal\Api\HyperSchema $schema
     * 
     * @return $this
     */
    public function setSchema($schema)
    {
        $this->schema = $schema;
        return $this;
    }

    /**
     * Gets Schema
     *
     * @return \PayPal\Api\HyperSchema
     */
    public function getSchema()
    {
        return $this->schema;
    }
}

编辑2:

现在我使用$payment->links->getHref()代替$payment->links[1]["href"]我收到了以下错误:

  

致命错误:在非对象上调用成员函数getHref()    ../ Checkout.php 722

这很奇怪,因为它似乎既不是对象的方法,也不是数组。

有关于此的任何想法吗?

1 个答案:

答案 0 :(得分:0)

您可以发布Paypal \ Api \ Links课程吗?当它是一个对象时,您尝试将链接作为数组进行访问。这意味着Links属性设置不正确,或者您需要将其视为对象而不是数组。