omcrn/yii2-quickbooks

为 Yii2 的 Quickbooks Online OAuth2 和 API 包装器

安装: 220

依赖: 0

建议者: 0

安全: 0

星星: 2

关注者: 2

分支: 0

开放性问题: 2

类型:yii2-extension

0.0.3 2017-12-10 17:33 UTC

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
   ]
]);