当前位置: 首页 > news >正文

PHP访问NetSuite REST Web Services

“同等看待欢乐和痛苦、得到和失去、胜利和失败、投入战斗。以此方式履行职责,你就不会招致任何罪恶。”

                                                                                                                                -Bhagavad Gita

为了帮助PHP开发者快速起步,以REST Web Services方式打通与NetSuite的接口,我们答应给一个样例。但是我是不懂PHP的,在经历了ChatGPT误导和帮助,调通了代码。心生欢喜,分享如下。

    <?phpclass NetSuiteRestAPI {// NetSuite Credentialsconst NETSUITE_ACCOUNT = '大写账号';const NETSUITE_CONSUMER_KEY = '你的参数';const NETSUITE_CONSUMER_SECRET = '你的参数';const NETSUITE_TOKEN_ID = '你的参数';const NETSUITE_TOKEN_SECRET = '你的参数'; // Search a Employee record        public function searchEmployee($employeeId) {$url = "https://小写域名.suitetalk.api.netsuite.com/services/rest/record/v1/employee/$employeeId";return $this->callNetSuiteAPI($url, "GET", $employeeId);}// Create a new Employee recordpublic function createEmployee($employeeData) {$url = "https://小写域名.suitetalk.api.netsuite.com/services/rest/record/v1/employee";return $this->callNetSuiteAPI($url, "POST", $employeeData);}// Call NetSuite APIprivate function callNetSuiteAPI($url, $method, $payload = null) {$oauth_nonce = md5(mt_rand());$oauth_timestamp = time();$oauth_signature_method = 'HMAC-SHA256';$oauth_version = "1.0";// Generate Signature$baseString = $this->generateBaseString($method, $url, self::NETSUITE_CONSUMER_KEY, self::NETSUITE_TOKEN_ID, $oauth_nonce, $oauth_timestamp, $oauth_version, $oauth_signature_method, $payload);$key = rawurlencode(self::NETSUITE_CONSUMER_SECRET) . '&' . rawurlencode(self::NETSUITE_TOKEN_SECRET);$signature = base64_encode(hash_hmac('sha256', $baseString, $key, true));// Generate OAuth Header$headers = ['Authorization: OAuth '. 'realm="' . self::NETSUITE_ACCOUNT . '", '. 'oauth_consumer_key="' . self::NETSUITE_CONSUMER_KEY . '", '. 'oauth_token="' . self::NETSUITE_TOKEN_ID . '", '. 'oauth_nonce="' . $oauth_nonce . '", '. 'oauth_timestamp="' . $oauth_timestamp . '", '. 'oauth_signature_method="' . $oauth_signature_method . '", '. 'oauth_version="' . $oauth_version . '", '. 'oauth_signature="' . rawurlencode($signature) . '"','Content-Type: application/json'];// Call the API$curl = curl_init();curl_setopt_array($curl, [CURLOPT_URL => $url,CURLOPT_RETURNTRANSFER => true,CURLOPT_CUSTOMREQUEST => $method,CURLOPT_HTTPHEADER => $headers,CURLOPT_SSL_VERIFYHOST => false,CURLOPT_SSL_VERIFYPEER => false,//CURLOPT_VERBOSE =>true,]);if ($payload) {curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($payload));}$response = curl_exec($curl);if ($response === false) {echo 'cURL Error: ' . curl_error($curl);return false;}curl_close($curl);return json_decode($response, true);}// Generate Base Stringprivate function generateBaseString($httpMethod, $url, $consumerKey, $tokenKey, $nonce, $timestamp, $version, $signatureMethod, $postParams = null) {$baseString = strtoupper($httpMethod) . '&' . rawurlencode($url) . '&';// Prepare OAuth parameters$params = ['oauth_consumer_key' => $consumerKey,'oauth_token' => $tokenKey,'oauth_nonce' => $nonce,'oauth_timestamp' => $timestamp,'oauth_signature_method' => $signatureMethod,'oauth_version' => $version,];// Sort parameters by keyksort($params);// Encode and concatenate parameters$encodedParams = [];foreach ($params as $key => $value) {$encodedParams[] = rawurlencode($key) . '=' . rawurlencode($value);}$baseString .= rawurlencode(implode('&', $encodedParams));return $baseString;}}// Instantiate the API class$api = new NetSuiteRestAPI();// Call to search a Employee record$employeeData=员工InternalID;$response = $api->searchEmployee($employeeData);// Output the responseif ($response) {echo "Response: " . json_encode($response, JSON_PRETTY_PRINT);}/*// Employee data to create$employeeData = ["firstname" => "R","lastname" => "M"];// Call to create a new Employee record$response = $api->createEmployee($employeeData);// Output the responseif ($response) {echo "Response: " . json_encode($response, JSON_PRETTY_PRINT);} else {echo "Call Successfully.";}*/?>

如果有任何关于NetSuite的问题,欢迎来谈。邮箱:service@truston.group

http://www.lryc.cn/news/486457.html

相关文章:

  • 【编译】多图解释 什么是短语、直接短语、句柄、素短语、可归约串
  • React中事件绑定和Vue有什么区别?
  • 【DBA攻坚指南:左右Oracle,右手MySQL-学习总结】
  • C++中的内联函数
  • ssh.service could not be found“
  • tensorflow有哪些具体影响,和chatgpt有什么关系
  • Android OpenGL ES详解——几何着色器
  • Java学生管理系统(GUI和数据库)
  • 035_Progress_Dialog_in_Matlab中的进度条对话框
  • 【GPTs】Ai-Ming:AI命理助手,个人运势与未来发展剖析
  • 如何利用SAP低代码平台快速构建企业级应用?
  • Redis设计与实现 学习笔记 第十七章 集群
  • 多端校园圈子论坛小程序,多个学校同时代理,校园小程序分展示后台管理源码
  • 鸿蒙核心技术理念
  • 8. 基于 Redis 实现限流
  • 241117学习日志——[CSDIY] [ByteDance] 后端训练营 [05]
  • 蓝桥杯备赛(持续更新)
  • k8s 学习笔记之 k8s 存储管理
  • ios swift开发--ios远程推送通知配置
  • 【JavaEE进阶】CSS
  • 基于Java Springboot宠物领养救助平台
  • C/C++ 中有哪些类型转换方式? 分别有什么区别?
  • 小程序租赁系统开发为企业提供高效便捷的租赁服务解决方案
  • Scala的Array
  • 等保测评怎么做?具体流程是什么?
  • 基于YOLOv8深度学习的汽车车身车损检测系统研究与实现(PyQt5界面+数据集+训练代码)
  • 力扣 LeetCode 144. 二叉树的前序遍历(Day6:二叉树)
  • Adobe Illustrator(Ai)修图软件入门操作参考,收集查过的各个细节用法
  • Apache Paimon、Apache Hudi、Apache Iceberg对比分析
  • [ 网络安全介绍 5 ] 为什么要学习网络安全?