PayPal REST API:获取子类,例如销售,来自PayPalModel Superclass

时间:2016-03-25 15:53:52

标签: php rest symfony paypal

我正在尝试在Symfony 2网络应用程序中使用PayPal REST API。目前我正在处理WebhookEvent,这是我的页面从PayPal API收到的回调。

除了WebhookEvent之外,getResourceType()提供了两个方法getResource()getResourceType()。根据事件的具体类型,交付的资源是不同的。因此getResource()返回一个String,指示包含哪种资源,getResourceType()将返回资源本身。

问题:无论使用什么getResource()PayPal\Common\PayPalModel始终返回getResourceType()类型的对象,这是所有不同资源的超类类。因此,即使salePayPal\Common\PayPalModel,也会返回\PayPal\Api\Sale个对象,而不是... $webhookEvent = \PayPal\Api\WebhookEvent::validateAndGetReceivedEvent($request->getContent(), $this->getApiContext()); $resource_type = $webhookEvent->getResourceType(); // ==> 'sale' $sale = $webhookEvent->getResource(); // get_class($sale) ==> 'PayPal\Common\PayPalModel' 个对象:

PayPal\Common\PayPalModel

由于返回\PayPal\Api\Sale,我不能使用子类$id = $sale->getParentPayment(); // ==> Fatal Error: Call to undefined method PayPal\Common\PayPalModel::getParentPayment() 引入的任何方法:

\PayPal\Api\Sale

那么,我该怎样做才能将所提供的资源用作DataSet并使用其所有方法?

1 个答案:

答案 0 :(得分:2)

如果返回的ResourceType等于" sale",那么您可以像这样创建销售对象:

use PayPal\Api\Sale;
$eventResource = $webhookEvent->getResource();
$sale = new Sale($eventResource->toJSON());
echo "PAY-ID: ".$sale->getParentPayment();