開発者向けサポート

Java開発者向けライブラリでの実装(ebisumartへのAppsインストール)

ライブラリを使用して、ebisumartへのAppsインストール処理を開発する方法についての説明です。
Appsのインストールのうち、以下の処理についてライブラリを用いたコードの説明します。

  1. リダイレクトされてきたリクエストに含まれる認証情報を用いて、ebisumartにアクセスしてアクセストークン・リフレッシュトークンを取得
  2. アクセストークンを用いて、データアクセスAPIにアクセス

※なお、Appsのインストールの「認証の流れ」の7番にある
「アクセストークンの有効期限が切れたら、リフレッシュトークンを用いて新しいアクセストークン・リフレッシュトークンを取得」については、
上記の1の部分をライブラリを用いて行うと、自動的に行われます。

1. 認証情報を用いてアクセストークン・リフレッシュトークンを取得

Appsのインストールにある通り、認証が成功するとcode=認証コードが返却されます。
そして、shopId=ebisumart Noを使用すると、ライブラリを用いて以下のように実装することができます。


private void saveTokens(String shopId, String code) throws IOException {	
	// 抽象クラスDataAccessClientを実装したクラスを取得します。
	// 環境に合わせたDataAccessClientの実装を行っていただく必要があります。
	DataAccessClient client = DataAccessClientHolder.get();

	// ebisumartへの認証要求時に渡したものと同じリダイレクト先URLです。
	String redirectUrl = getRedirectUri(shopId);

	// アクセストークン、リフレッシュトークンの取得を行います。
	// アクセストークンはDataAccessClientの中にキャッシュされています。
	AccessTokenResponse atr = client.requestAccessToken(shopId, code, redirectUrl);

	// リフレッシュトークンを保存します。
	//アクセストークンの期限が切れ、再取得を行う際に使用します。
	DataAccessClientHolder.saveRefreshToken(atr.getShopId(), atr.getRefreshToken());
}

2. アクセストークンを用いて、データアクセスAPIにアクセス

データアクセスAPIでAppsで使用する処理カスタマイズAPIを登録します。


protected void install (String shopId) throws Exception {	
	// 抽象クラスDataAccessClientを実装したクラスを取得します。
	// 環境に合わせたDataAccessClientの実装を行っていただく必要があります。
	DataAccessClient client = DataAccessClientHolder.get();

	// EbisumartServiceはデータアクセスAPI共通で使用します。
	EbisumartService es = new EbisumartService(shopId, client);

	// InstallerServiceは処理カスタマイズAPI、管理画面カスタマイズAPIの登録に使用します。
	InstallerService is = es.getInstallerService();

	// 登録したい処理カスタマイズAPIの情報をCustomizeApiに設定します。
	CustomizeApi ca = new CustomizeApi();
	ca.setFlowName("*");
	ca.setName(CustomizeApiFunction.Userweb_Cart_CustomizeOrderDetailData_After.path());
	ca.setUrl(APP_API_HOST + "/CartCustomizeOrderDetailData");

	// ebisumartへの登録開始
	// データアクセスAPIのトランザクションを開始します。
	es.startTransaction();	
	try {
		// 一度、このAppsが登録していた処理カスタマイズAPIをクリア
		is.deleteCustomizeApi();
		
		// 処理カスタマイズAPI登録
		is.add(ca);
		
		// トランザクションのコミット
		es.commitTransaction();	
		
		} catch (Exception e) {		
		// トランザクションのロールバック
		es.rollbackTransaction();
		
		} finally {
		// トランザクションリソースの開放
		es.endTransaction();
		
		}
	}