我正在尝试在Symfony 2网络应用程序中使用PayPal REST API。目前我正在处理WebhookEvent
,这是我的页面从PayPal API收到的回调。
除了WebhookEvent
之外,getResourceType()
提供了两个方法getResource()
和getResourceType()
。根据事件的具体类型,交付的资源是不同的。因此getResource()
返回一个String,指示包含哪种资源,getResourceType()
将返回资源本身。
问题:无论使用什么getResource()
,PayPal\Common\PayPalModel
始终返回getResourceType()
类型的对象,这是所有不同资源的超类类。因此,即使sale
为PayPal\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
并使用其所有方法?
答案 0 :(得分:2)
如果返回的ResourceType等于" sale",那么您可以像这样创建销售对象:
use PayPal\Api\Sale;
$eventResource = $webhookEvent->getResource();
$sale = new Sale($eventResource->toJSON());
echo "PAY-ID: ".$sale->getParentPayment();