質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

0回答

2396閲覧

GMOのPaymentClientがDIできない

flumchaso

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2019/07/22 09:39

前提・実現したいこと

クレジットカードの登録をGMOペイメントのサービスで利用していて、これまでリンク型というもので実施していたものをAPI型に変更したいため修正をしているところです。
クレジットカードの新規登録を行う部分の実装なのですが、GMO側で用意しているPaymentClientというインターフェイスを利用するとのことで以下のコードを書きテストを実施しましたが、エラーとなってしまいます。

Controllerが呼び出せていない状態です。まずい箇所がわかる方はいらっしゃいますでしょうか?

発生している問題・エラーメッセージ

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'creditApiController': Unsatisfied dependency expressed through field 'paymentClient'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.gmo_pg.g_pay.client.PaymentClient' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

該当のソースコード

Java

1package com.test.controller; 2 3// ※各種必要なものはimportされている。 4 5@Scope("prototype") 6@Controller 7public class CreditApiController extends BaseApiController { 8 9 @Autowired 10 private CreditService creditService; 11 12 @Autowired 13 PaymentClient paymentClient; 14 15 /** サイトID */ 16 @Value("${gmo.site.id:}") 17 private String P_SITE_ID; 18 19 /** サイトパスワード */ 20 @Value("${gmo.site.pass:}") 21 private String P_SITE_PASS; 22 23 /** ショップID */ 24 @Value("${gmo.shop.id:}") 25 private String P_SHOP_ID; 26 27 /** ショップパスワード */ 28 @Value("${gmo.shop.pass:}") 29 private String P_SHOP_PASS; 30 31 @RequestMapping(value = "/credit", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, method = RequestMethod.POST) 32 public ResponseEntity<CreditAddResponse> addAccounts ( 33 @RequestHeader(value = "X-Acl-Token") String aclToken, 34 @Validated @ApiParam(value = "登録するクレジットカード情報", required = true) @RequestBody CreditAddForm input, 35 Errors errors) throws PaymentException { 36 37 // aclトークンをセット. 38 creditService.setAclToken(aclToken); 39 40 String userId = creditService.getUserId(); 41 42 // クレカの属性を取得する 43 SearchCardDetailInput searchCardDetailInput = new SearchCardDetailInput(); 44 searchCardDetailInput.setShopID(P_SHOP_ID); 45 searchCardDetailInput.setShopPass(P_SHOP_PASS); 46 searchCardDetailInput.setToken(input.getToken()); 47 SearchCardDetailOutput output = paymentClient.doSearchCardDetail(searchCardDetailInput); //ここでエラーになっている。 48 List<CardInfo> cardList = output.getCardList(); 49 for (CardInfo cardInfo : cardList) { 50 String debitFlag = cardInfo.getDebitPrepaidFlag(); 51 // debidFlag =0 は正常なクレジットカード 52 if ("0".equals(debitFlag)) { 53 // GMO会員登録を行う 54 SaveMemberInput saveMemberInput = new SaveMemberInput(); 55 saveMemberInput.setSiteId(P_SITE_ID); 56 saveMemberInput.setSitePass(P_SITE_PASS); 57 saveMemberInput.setMemberId(userId); 58 SaveMemberOutput saveMemberOutput = paymentClient.doSaveMember(saveMemberInput); 59 String gmoMemberId = saveMemberOutput.getMemberId(); 60 61 // GMOカード登録を行う 62 SaveCardInput saveCardInput = new SaveCardInput(); 63 saveCardInput.setSiteId(P_SITE_ID); 64 saveCardInput.setSitePass(P_SITE_PASS); 65 saveCardInput.setMemberId(gmoMemberId); 66 saveCardInput.setToken(input.getToken()); 67 paymentClient.doSaveCard(saveCardInput); 68 // debidFlag != 0 はデビッドまたはプリペイドなのでエラーにする 69 } else { 70 throw new Exception("CRE_E001"); 71 } 72 } 73 74 // GMOに登録したカードの情報を取得する。 75 SearchCardInput searchCardInput = new SearchCardInput(); 76 searchCardInput.setSiteId(P_SITE_ID); 77 searchCardInput.setSitePass(P_SITE_PASS); 78 searchCardInput.setMemberId(userId); 79 searchCardInput.setSeqMode("0"); 80 SearchCardOutput searchCardOutput = paymentClient.doSearchCard(searchCardInput); 81 List<CardInfo> cardInfoList = searchCardOutput.getCardList(); 82 CreditAddResult result = new CreditAddResult(); 83 for (CardInfo cardInfo : cardInfoList) { 84 result.setCreditNo(cardInfo.getCardNo()); 85 } 86 CreditAddResponse model = new CreditAddResponse(); 87 model.setResult(result); 88 return new ResponseEntity<>(model, HttpStatus.OK); 89 } 90} 91

補足情報(FW/ツールのバージョンなど)

Java8
SpringBoot2.0.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/22 09:43

管理されてないからだろ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問