univapay/php-sdk
Composer 安装命令:
composer require univapay/php-sdk
包简介
PHP SDK for Univapay Payments
README 文档
README
UnivaPay PHP SDKは、UnivaPay決済ゲートウェイと連携する便利なメソッドを提供します。
必要なもの
- PHP 7.2.x 以上
- Composer
- UnivaPayのストアアプリケーショントークンまたはマーチャントアプリケーショントークン
インストール
composer require univapay/php-sdk
利用方法
use Univapay\UnivapayClient; use Univapay\UnivapayClientOptions; use Univapay\Requests\Handlers\RateLimitHandler; $client = new UnivapayClient(AppJWT::createToken('token', 'secret')); // その他のオプションは、クライアントをインスタンス化する前にクライアントオプションオブジェクトを作成および変更します // すべてのオプションについては、UnivapayClientOptionsを参照してください $clientOptions = new UnivapayClientOptions(); $clientOptions->rateLimitHandler = new RateLimitHandler(5, 2); $client = new UnivapayClient(AppJWT::createToken('token', 'secret'), $clientOptions); // 使用例については、examplesフォルダを参照してください
アプリケーショントークン
このSDKでは、ストアタイプとマーチャントタイプの両方のアプリケーショントークンがサポートされています。 ストアタイプトークンを必要とするトランザクショントークンや課金の作成以外のすべての機能は、両方のトークンタイプでサポートされています。
通貨モデル
このSDKはmoneyphpライブラリを使用して金額と通貨をモデル化します。詳細は、ドキュメントを参照してください。
すべての通貨と金額は自動的にCurrencyとMoneyオブジェクトに変換されます。フォーマットされた金額(.*Formattedキーで示される)のみがString形式になります。
use Money\Currency; use Money\Money; use Univapay\PaymentMethod\CardPayment; $paymentMethod = new CardPayment(...); $charge = $client ->createToken($paymentMethod) ->createCharge(Money::USD(1000)); $charge->currency === new Currency('USD'); // true $charge->requestAmount === new Money(1000, $charge->currency); // true
列挙型
PHPにはネイティブの組み込み列挙型サポートがないため、列挙子を操作するときに型の安全性を提供するために、TypedEnumというクラスを提供します。各列挙子クラスは最終版であり、 TypedEnumを拡張して、Javaなどの他の言語の列挙子と同様に動作する静的関数を提供します。列挙型クラスは、Univapay\Enumsという名前空間にあります。
デフォルトでは、作成時に値が指定されていない場合、スネークケースになります。
use Univapay\Enums\ChargeStatus; $values = ChargeStatus::findValues(); // 列挙子のすべての名前と値のリストを取得する $chargeStatus = ChargeStatus::PENDING(); // 最後のカッコに注意してください $chargeStatus->getValue() === 'pending'; // true $chargeStatus === ChargeStatus::fromValue('pending'); // true // switchステートメントでも機能します switch ($chargeStatus) { case ChargeStatus::PENDING(): // Do something break; // ... }
リソースモデルの更新
リソースモデル(Resourceを拡張するモデルクラス)を更新するには、下記のようにします。
$charge->fetch();
ポーリング
次のリソースは、ステータス変更を待機するためのロングポーリングがサポートされています。
ChargeRefundCancelSubscription
これらのリクエストは最初にPENDINGステータスを戻します。ロングポーリングでは、リソースのステータスが変更されたときに、更新されたモデルをフェッチできます。3秒以内に変更が発生しない場合、その時点のリソースが返されます。オプションとして、PENDINGステータスが返された場合に、自動的にリトライするためのリトライ回数を渡すことができます。
$charge = $client ->createCharge($token->id, Money::USD(1000)) // $charge->status == PENDING ->awaitResult(); // $charge->status == SUCCESSFUL // OR $charge = $client ->createCharge($token->id, Money::USD(1000)) // $charge->status == PENDING ->awaitResult(5); // `PENDING`以外ステータスを返すまで、5回まで(最大15秒)をリトライを実行
リストとページネーション
SDKのすべてのリスト関数は、作成日時の降順でPaginatedオブジェクトとして返されます。配列を介してパラメーターを渡すときは、入力が期待されるタイプと一致するように注意してください。一致しない場合、InvalidArgumentExceptionがスローされます。
use InvalidArgumentException; use Univapay\Enums\CursorDirection; try { $transactionList = $client->listTransactionsByOptions([ 'from' => date_create('-1 week'), 'to' => date_create('+1 week') ]); } catch (InvalidArgumentException $error) { // 入力パラメーターが正しいタイプに対応していない場合 } $transactions = $transactionList->items; // 1ページあたりのデフォルトの上限 = 10アイテム if ($transactionList->hasMore) { $transactionList = $transactionList->getNext(); // リストは内部で変化しない $transactions = array_merge($transactions, $transactionList->items); } $firstTenItems = $client->listTransactionsByOptions([ 'from' => date_create('-1 week'), 'to' => date_create('+1 week'), 'cursor_direction' => CursorDirection::ASC() ]);
リクエスト/レスポンスハンドラ
データをオブジェクトに解析する前に追加の変更または応答への反応を必要とする場合の使用例です。 SDKは、APIからのバックプレッシャーに基づいてリクエストを調整する RateLimitHandlerを提供します(これはデフォルトで UnivapayClientOptions-> rateLimitHandlerに実装されています)。 さらに、 BasicRetryHandlerも提供されており、再試行のために特定の例外をキャッチしてフィルタリングします。 キャッチする例外を指定するには:
use Univapay\Requests\Handlers\BasicRetryHandler; $subscriptionTokenRetryHandler = new BasicRetryHandler( UnivapayResourceConflictError::class, 5, // 5回トライする 2, // 2秒毎 // エラーに基づいたより具体的なフィルタリングは、最初のパラメーターからエラー内容を取得してください // 再試行する場合はtrueを、無視する場合はfalseを返します function (UnivapayResourceConflictError $error) { return $error->code === 'NON_UNIQUE_ACTIVE_TOKEN'; } ); $client->addHandlers($subscriptionTokenRetryHandler); // 新しいハンドラーをリセットするか、クリアして最初から追加する // rateLimitHandlerはUnivapayClientOptionsから自動的に追加されます $client->setHandlers($subscriptionTokenRetryHandler);
SDK開発者向け
ビルド:
composer install
コードフォーマット:
composer lint composer lint:fix
テスト:
テストを実行するには、次の環境変数が必要です。
UNIVAPAY_PHP_TEST_TOKEN-testモードのトークンである必要がありますUNIVAPAY_PHP_TEST_SECRETUNIVAPAY_PHP_TEST_ENDPOINT- ローカルAPIインスタンスまたはステージングインスタンスを指します
composer test
注:Github Actionsは、プルリクエストがOpenされているブランチでのみ実行されます
univapay/php-sdk 适用场景与选型建议
univapay/php-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 143.73k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2019 年 08 月 27 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「payment」 「credit card」 「japan」 「univapay」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 univapay/php-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 univapay/php-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 univapay/php-sdk 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
This Extension integrates a credit check and more made by the LEONEX Risk Management Platform into your order process. Extensive configuration and evaluation options is provided in the Platform
Integration with Cielo gateway.
Settings Card for Laravel Nova.
A tool for scraping URL resources (oEmbed, OpenGraph, Twitter cards, JSON-LD)
Validate credit card number, expiration date, cvc
A Laravel Nova Card to show Fathom Analytics stats.
统计信息
- 总下载量: 143.73k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 19
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-08-27