2016-08-10 1 views
0

Novak Solutions Infusionsoft SDK를 사용하여 사용자 신용 카드 정보를받는 데 문제가 있습니다. 두 시스템 모두 "필드로 찾기"쿼리를 사용할 수 있다고하지만 CC 오브젝트에 오류가있는 것 같습니다.Novak Solutions SDK와 Infusionsoft PHP CC 정보

그래서 다음과 같이 보일 것입니다 :

Infusionsoft_DataService::findByField(new Infusionsoft_CreditCard(), 'ContactId', 9 (the id), null, 0, false, null); 

응답 : DataService 보인다

Fatal error: Uncaught [NoFieldAccess]Access denied to field CreditCard.CardNumber Attempted: 3 time(s). 

모든 개체하지만 Infusionsoft_CreditCard() 하나와 함께 작동합니다.

답변

0

Infusionsoft API documentation에서 볼 수 있듯이 CreditCard.CardNumber 필드는 읽을 수 없습니다. 액세스 만 추가 할 수 있습니다.

오류가 발생하지 않도록하려면 6 번째 매개 변수 인 배열 $returnFields을 전달하는 것이 가장 간단합니다. 예를 들어 다른 솔루션

Infusionsoft_DataService::findByField(new Infusionsoft_CreditCard(), 'ContactId', 9, null, 0, ['Id', 'Last4', 'ContactId'], null);

는 42로 선 (40)을 교체해야 하나 이러한 라인 Infusionsoft_DataService.load() 방법의 구현을 살펴 구체적 라인 101 105

if(!$returnFields){ $object->removeRestrictedFields(); $returnFields = $object->getFields(); $object->addRestrictedFields(); }

행 같은 파일 (변경 findByField() 메서드 구현을 변경, 그리고 난 그냥 여기에 더 많은 코드를 리팩토링하는 것이 더 좋을 것입니다, 여러 줄을 추상화 이러한 용도로).

또는 위의 그림과 같이 Infusionsoft_DataService.findByField() 메서드로 더 이상 전달할 수 있도록 읽기 제한 필드가없는 $requiredFields을 코드 (필요한 업데이트 포함)에 사용하십시오.

또 하나의 유용한 참고 자료가 Infusionsoft_CreditCard.removeRestrictedFields()method implementation

0

입니다 후 처음 Infusionsoft_CreditCard 객체를 생성하는 쿼리에 그것을 전달하기 전에 제한 필드를 제거하십시오!

$CC = new Infusionsoft_CreditCard(); 
$CC->removeRestrictedFields(); 

// Now continue with your former query and use the above object. 
Infusionsoft_DataService::findByField($CC, 'ContactId', 9, null, 0, false, null); 

// Or use the query method. 
Infusionsoft_DataService::query($CC, array('ContactId' => 9)); 

제한된 항목을 제외한 모든 참조 필드를 반환해야합니다.

관련 문제