2016-08-10 10 views
0

Novak Solutions Infusionsoft SDKを使用してユーザーのクレジットカード情報を取得する際に問題が発生しています。どちらのシステムでも「フィールドで検索」クエリを使用できますが、CCオブジェクトでエラーが発生したようです。Infusionsoft Novak Solutions SDKを使用したPHP CC情報

だから、このようなものになります。

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

応答:

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

DataServiceは、すべてのオブジェクトが、Infusionsoft_CreditCard() 1で動作するようですが。

答えて

0

Infusionsoft API documentationのように、CreditCard.CardNumberフィールドは読み取れません。追加アクセスのみが許可されています。

エラースローを回避するには、6番目のパラメータ:array of $returnFieldsを渡すのが最も簡単な方法です。たとえば、別の解決策について

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

は、具体的にはライン101 if(!$returnFields){ $object->removeRestrictedFields(); $returnFields = $object->getFields(); $object->addRestrictedFields(); }

105にこれらのラインは、ライン40において42に交換する必要がありどちらか、 Infusionsoft_DataService.load()メソッドの実装を見てみます同じファイル(変更の findByField()メソッドの実装を変更して、私はちょうどそれを後でリファクタリングする方が良いでしょう、これらの行を複数の用途のために抽象化してください)。

$requiredFieldsをコードの中で(必要な更新を使用して)使用して、上記のようにInfusionsoft_DataService.findByField()メソッドにさらに渡すための読み取り制限フィールドがないようにします。

もう一つの便利な参照が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)); 

これは、制限されたものを除くすべてのCCフィールドを返す必要があります。

関連する問題