更新されたYandex.Kassi APIのリリースから数か月後、新しいテクノロジーを使用した最初の統合ソリューションが登場し始めました。 統合の先駆者の1人はLodoss Teamで 、Node.jsでキャッシャーと連携するSDKライブラリを開発しました。
作者ほどこのプロジェクトについて誰も話さないでしょう。 したがって、私はフロアをLodossチームの技術的イデオロギー家であるAntonに渡します。Antonは、なぜキャッシャーに選択肢が落ちたのか、そしてどのようにすべてがキャッシャーに役立つのかについて話します。
私の名前はアントンです。私はロドスチームのテクニカルディレクターです。 2008年からWeb開発に取り組んでいます。 テクノロジースタック-Javascript:Node.js、Angular、React。 主な顧客はアメリカとヨーロッパからです。
現在までに、私のチームは400を超える商用プロジェクトを完了しました。 その中には、支払いシステムに関連するものがあります。
この記事では、ロシア市場向けのアプリケーションに決済システムを統合した経験を共有し、Yandex.Cashを選択した理由、Node.js用のSDKライブラリを作成した理由、決済システムの実装を簡素化して開発に役立てる方法について説明します。
ロシアの電子商取引と連携する機能
私のチームは、外国の顧客向けの支払いシステムの統合に問題を抱えたことはありません。 しかし1年前、私たちは国内市場で働き、自分用の複雑な製品を作ることにしました。 支払いシステムを選択し、同意して、それを使用する基本機能を実装しました。 しかし、彼らはリリースの約2週間前に学んだ重要な詳細を考慮していませんでした。この支払いシステムはロシアの企業では機能しません。 解決方法はまだ1つあります。できるだけ早く支払いシステムを交換することです。 同僚とともに、私たちは決済サービス市場を分析し、Yandex.Cashに決着しました。
私たちとクライアントの両方に適したパラメーターに従って選択しました。
- ロシア市場でルーブルを扱う。
- 人気のあるサービス。
- 必要な機能の実装。
- 月額料金の不足;
- 支払いからの小さな手数料-2.8%から6%;
- 統合速度-±3日間;
- Apple Payを接続する機能。
- 54-FZの下で働く能力。
誰かが最後の段落をよく知らないかもしれません。 54--レジの使用に関する連邦法。 2017年、彼は改革を行いました。これから、ロシアのすべてのキャッシュデスクはインターネットに接続し、税務署に電子小切手を送る必要があります。 オンラインキャッシュデスクは、オンラインストアを持ち、ビジネスを所有し、商品を販売したり、有料サービスを提供したりするすべての人が設置する必要があります。
Yandex.Kassaは、54-のオンラインサービスおよびオンラインストアでの作業に便利なソリューションの取得と提供に取り組んでいます。 クライアントはオンラインキャッシャーを接続し、サービスはそれとの連携を確立するのに役立ちます。小切手データを送信し、税務署への送信を確認し、トランザクションを実行します。 Yandex.Cashを使用しないで、たとえば銀行との取得契約を締結する場合、ストアはすべての操作を電子チェックで個別に実行する必要があります。
私のチームは、Yandex.Kassa APIの最初のバージョンを使用して支払いシステムの実装を開始しました。 しかし、このバージョンには欠点がありました。複雑でわかりにくいドキュメント、接続されていない支払いプロトコルです。 APIを使用するプロセスは、多くのことを実装するためにアップグレードを取得し、サポート部門に連絡し、アプリケーションを作成し、アプリケーションを終了する必要があるように構成されました。 これにはすべて時間がかかりました。
...そしてリリースの1週間前に、新しいYandex.Kassi APIがリリースされます
更新されたバージョンのドキュメントで、情報が開発者により「近い」ことがわかりました。 Yandex.Kassiのスタッフは、支払いプロトコルと共通のロジックと説明を組み合わせることで、開発者のインターフェースをより便利にしました。 現在、支払いシステムの統合プロセスは、StripeやBraintreeなど、仕事で出会った有名な外国の類似物と大差ありませんでした。
チームのバックログには、支払い機能に関連する多数のタスクが含まれていました。 APIの新しいバージョンに切り替えることを考えました。これは、以前のバージョンよりも優れた高速なタスクをいくつか解決したためです。
新しいYandex.Kassi APIで、開発者は非同期性やべき等性などの特定のものを最適化しました。 データを扱うのがさらに便利になりました。 これはYandex.Cashチームによって伝えられました 。
チームはYandex.Kassiの新しいアプローチが気に入りました。彼らは開発者を本当に気にかけています。 しかし、APIの新しいバージョンでは、Yandex.KassaはNode.jsをそのまま使用するためのライブラリを提供しませんでした。つまり、その上にプロジェクトを作成しました。 そして、これが私が言うことです。市場にはそのようなライブラリはまったくありません。 しかし、私たちのスタッフは、Yandex.Kassa APIを操作するためのOpenSourceライブラリを考えてまとめました。
その結果、ライブラリは開発を簡素化および最適化し、カスタムおよび電子商取引ソリューションに統合できます。 NPMモジュールは、eコマースの支払いモジュールを作成し、アプリケーションで商品やサービスの支払いの可能性を導入するのに役立ちます。 たとえば、サイトへの予約またはチケット購入の支払いを追加する必要がある場合は、SDKを使用できます。
NPMモジュールの接続
Yandex.CashのSDKを開発するとき、StripeとBraintreeの支払いシステムの例に触発され、同様のスタイルでライブラリを実装しようとしました。これらの外国人のツールは開発者にとって本当に便利です。 いくつかの手順で、支払いシステムをプロジェクトに統合する方法の例を見てみましょう。
まず、NPMパッケージマネージャーを使用してライブラリ自体をインストールする必要があります。近い将来、Yarnにも投稿します。
npm install yandex-checkout
shopIdとsecretKeyを指定してライブラリをインポートします。
const yandexCheckout = require('yandex-checkout')('shopId', 'secretKey');
要求の認証には、通常の基本認証が使用されます。
- shopId-Yandex.Cashにストア識別子。
- secretKeyは秘密鍵です。
Yandex。Cashデスクの[設定]セクションで秘密キーを発行できます。
ライブラリを接続するとき、テキストパラメータだけでなく、構成オブジェクトも転送できます。
const yandexCheckout = require('yandex-checkout')({ shopId: ' ', secretKey: ' c ', timeout: 20000, // 120000 debug: false, // FALSE host: '', // https://payment.yandex.net path: '', // '/api/v3/' });
これで統合プロセスは終了です。 これで、ライブラリを使用できます。
作業例-支払いの作成
支払いを作成するには、べき等キーを指定する必要があります。 Yandexは、APIのドキュメントでUUID V4を使用することを推奨しています。 べき等キーが関数に渡されない場合、ライブラリは推奨アルゴリズムを使用して毎回新しいキーを生成します。
使いやすくするために、すべてのメソッドをPromiseでラップしたため、関数の結果は約束となり、その後、catchを使用できます。
const yandexCheckout = require('yandex-checkout')('shopId', 'secretKey'); const idempotenceKey = '02347fc4-a1f0-49db-807e-f0d67c2ed5a5'; yandexCheckout.createPayment({ 'amount':{ 'value': '2.00', 'currency': 'RUB', }, 'payment_method_data':{ 'type': 'bank_card', }, 'confirmation':{ 'type': 'redirect', 'return_url': 'https://www.merchant-website.com/return_url', } }, idempotenceKey) .then((result) => { console.log({payment: result}); }) .catch( err => console.log(err));
Yandex.Kassaは、リクエストの24時間後にべき等性を維持します。 この時間が経過すると、繰り返されるリクエストは新規として処理されます。
支払いに関する情報を取得するには、getPaymentInfo関数を使用して、支払い識別子のパラメーターを渡す必要があります。
const yandexCheckout = require('yandex-checkout')('shopId', 'secretKey'); const paymentId = '21966b95-000f-50bf-b000-0d78983bb5bc'; yandexCheckout.getPaymentInfo(paymentId) .then((result) => { console.log({payment: result}); }) .catch( err => console.log(err)); });
ライブラリは、 ドキュメントで説明されているすべての利用可能なメソッドをサポートしています 。
結果は何ですか
ロシアの電子商取引IT市場は欧米市場に遅れをとっていますが、前向きな傾向があります。 開発方法は、実際の消費者に注目して徐々に改善されています。 Kassaの場合、この消費者はeコマースプログラマであり、新しいYandex.Kassi APIはこの視聴者専用に開発されました。
NPMモジュールの開発は、新しいCashier APIのシンプルさとわかりやすさを示すものと考えることもできます。モジュールのアーキテクチャと基本原則は、たった1日で設定できます。
支払いシステムを統合し、NPMモジュールを作成するときにチームが直面した主なポイントについて説明しました。 おそらくあなたは何かを見逃した-コメントで尋ねる。