質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

3377閲覧

Laravel→セールスフォース連携

reiya_fujiwara

総合スコア9

Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/01/20 06:06

【Laravelでのsalesforce連携について】

お世話になります。
Laravelでセールスフォースへの顧客登録の機能を実装したいのですが
エラーが発生してしまっているので質問させていただきます。


##【実装したい機能】

  1. ホームページから顧客情報が入力・登録されたらsalesforceに顧客(取引先)を登録する。
  2. 登録された顧客情報に紐付けてサービスの登録内容をカスタムオブジェクトに登録する。
  3. 顧客情報が重複した場合はカスタムオブジェクトの追加のみ行う。

###【エラーが発生している箇所・内容】
下記のコードを実行した際に
・新規登録の際は問題なくオブジェクトが追加される
・重複があった場合にのみ、createSfOwnserviceの処理で400エラーが返される。

Client error: POST https://cs72.salesforce.com/services/data/v45.0/sobjects/OwnServices__c resulted in a 400 Bad Request response

EntryService.php

PHP

1 2 public function generateSfParams(array $SfParam){ 3 /* 4 * 取引先(顧客情報),自社サービス登録内容 5 */ 6 7 $account = [ 8 "LastName" => $SfParam['name1'], 9 "FirstName" => $SfParam['name2'], 10 "Furigana__c" => $SfParam['kana1'].' '.$SfParam['kana2'], 11 "LastnameKana__c" => $SfParam['kana1'], 12 "FirstnameKana__c" => $SfParam['kana2'], 13 "Phone1__c" => $SfParam['tel'], 14 "PostalCode_del__c" => $SfParam['zipcode1'].$SfParam['zipcode2'], 15 "Address__c" => $SfParam['address1'].$SfParam['address2'].$SfParam['address3'], 16 "PersonBirthdate" => $SfParam['birthday_year'].'-'.$SfParam['birthday_month'].'-'.$SfParam['birthday_day'], 17 "Sex__c" => $SfParam['sex'], 18 "PriorityContact__c"=> '電話①' 19 ]; 20 21 $OwnService = [ 22 'EntryDate__c' => date('Y-m-d'), 23 'Member_name__c' => TAROU YAMADA, 24 'Name' => uniqid(),//ユニークID付与 25 'Option_name__c' => 'サービス名' 26 ]; 27 28 29 30  // 顧客情報作成・追加 31 public function createSfAccount($SfParam){ 32 Forrest::authenticate(); 33 34 $a = Forrest::query("SELECT Id FROM Account WHERE LastName='".$SfParam['LastName']."'AND Phone1__c='".$SfParam['Phone1__c']."'"); 35 36 if($a['totalSize'] === 0){ 37 $a = Forrest::sobjects('Account',[ 38 'method' => 'post', 39 'body' => $SfParam 40 ]); 41 return $a; 42 } 43 return ['id' => $a['records'][0]['Id']]; 44 } 45 46  // 取引先責任者Id取得 47 public function getSfContactId($account_id){ 48 // dd($account_id); 49 // 0015D00000QmJDXQA3 50 Forrest::authenticate(); 51 52 $c = Forrest::query("SELECT Id FROM Contact WHERE AccountId='".$account_id."'"); 53 // dd($c); 54 55 // 取引先責任者ID取得 56 $contact_id = $c['records'][0]['Id']; 57 // dd($contact_id); 58 59 // dd($contact_id,$account_id); 60 return $contact_id; 61 62 } 63 64  // カスタムオブジェクト追加 65 // エラーが発生する箇所 66 public function createSfOwnservice($SfParam){ 67 68 Forrest::authenticate(); 69 $c = Forrest::sobjects('OwnServices__c',[ 70 'method' => 'post', 71 'body' => $SfParam 72 ]); 73 return $c; 74 }

EntryController.php

php

1public function store (Request $request){ 2 $SfParam = $this->entryService->generateSfParams($request->all()); 3 4 $SfAccount = $this->entryService->createSfAccount($SfParam['account']); 5 6 $contact_id = $this->entryService->getSfContactId($SfAccount['id'],$SfParam); 7 8 $SfParam['OwnService']['Contact__c'] = $contact_id; 9 10 $OptionParam = $this->entryService->createSfOwnservice($SfParam['OwnService']); 11 12return view('entryform.thanks'); 13 14

###【試したこと】
パラメータに誤りがあるのかと思うのですが、以前は上記のコードで運用できていたことと
稀に重複している顧客でも登録処理が走ることがあるのでパラメータに誤りはないのかと思っております。

IDなどの格納された値も確認しましたが問題なく取得できていました。

思い当たる節は一通り試したのですが、何か見落としていることがあるのか解決できず困っています。
つたない質問で申し訳ありませんが、お力添え頂けますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/20 12:45

Bad Request は リクエスト方法(もしくは不足データ)が誤ってるときに発生してるので、基本的に共通対応はありません。 カスタムObjectなんて貴方(と共同開発者等)しか知りえないです。 ※ ***__c はカスタムオブジェクトであって取引先(標準Object)ではない
reiya_fujiwara

2019/01/21 09:58

ご指摘ありがとうございます。 指摘いただいた点を再度確認して解決することができました。 ありがとうございます。
guest

回答1

0

自己解決

コードの問題かと思い、ひたすらコードの修正など行っていましたが、
原因はオブジェクトのユニーク項目にチェックがついており、重複する値が入力できなかったことによるエラーでした。

ユニーク項目チェック外したところ、問題なく処理できました。

投稿2019/01/21 09:59

reiya_fujiwara

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問