omcrn / yii2-quickbooks
为 Yii2 的 Quickbooks Online OAuth2 和 API 包装器
0.0.3
2017-12-10 17:33 UTC
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-29 05:01:35 UTC
README
为 Yii2 的 Quickbooks Online OAuth2 和 API 包装器
安装
安装此扩展的首选方式是通过 composer。
运行以下命令
php composer.phar require --prefer-dist omcrn/yii2-quickbooks "*"
或者在 composer.json
文件的 require 部分添加以下内容
"omcrn/yii2-quickbooks": "*"
使用
将以下值保存到 .env 文件中
QB_BASE_URL = https://quickbooks.api.intuit.com/ QB_DISCOVERY_DOCUMENT = https://developer.intuit.com/.well-known/openid_sandbox_configuration/ QB_CLIENT_ID = **************************************** QB_CLIENT_SECRET = **************************************** QB_OAUTH_SCOPE = com.intuit.quickbooks.accounting QB_REALM_ID = ****************************************
你必须配置 Yii::$app->keyStorage
,因为该扩展使用 KeyStorage 来保存 Quickbooks 授权令牌。同时,你需要在 KeyStorage 中保存你的 redirect-url,作为键 quickbooks.redirect-url
现在你可以像这样初始化扩展
$qb = new Quickbooks([ 'authMode' => "oauth2", 'clientId' => getenv("QB_CLIENT_ID"), 'clientSecret' => getenv("QB_CLIENT_SECRET"), 'baseUrl' => getenv("QB_BASE_URL"), 'realmId' => getenv("QB_REALM_ID"), 'discoveryDocumentUrl' => getenv("QB_DISCOVERY_DOCUMENT"), 'oauthScope' => getenv("QB_OAUTH_SCOPE") ]);
按照 Intuit 文档中的方式实现 '连接到 Quickbooks' 按钮
https://developer.intuit.com/docs/00_quickbooks_online/2_build/10_authentication_and_authorization/40_oauth_1.0a/widgets
基本上,你需要包含他们的 .js 文件并运行以下脚本
intuit.ipp.anywhere.setup({ grantUrl: '/redirect-url', //the one you saved in KeyStorage datasources: { quickbooks : true, payments : true }, paymentOptions:{ intuitReferred : true } });
你需要实现你的 redirect-url 处理器动作,在那里初始化 Quickbooks 扩展并调用 connect 方法
$qb->connect();
现在你需要点击该按钮以获取 auth 令牌。令牌将在每次请求时自动刷新,因此这是一个一次性操作。
配置完成后,你可以创建自定义操作,在那里初始化扩展并调用所需的方法,例如,要创建客户,你可以在你的操作中这样做
$newCustomer = $qb->createCustomer([ "BillAddr" => [ "Line1" => $address->address, "Line2" => $address->address2, "City" => $address->town, "Country" => $address->country->name, "CountrySubDivisionCode" => $address->country->iso_code_2, "PostalCode" => $address->postcode ], "Notes" => $notes, "Title" => $title, "GivenName" => $name, "MiddleName" => "", "FamilyName" => $surname, "Suffix" => $suffix, "FullyQualifiedName" => $this->name . " " . $this->surname, "CompanyName" => $companyName, "DisplayName" => $displayName, "PrimaryPhone" => [ "FreeFormNumber" => $mobile ], "PrimaryEmailAddr" => [ "Address" => $email ] ]);