実現したいこと
soundBoxにて実装を行なっております。
その中で購入時にクレジットカード情報を入力しトークンを発行(3Dセキュアも含む)したのちに
APIで顧客情報を作成しクレジットカードを保存しその後決済をしようと考えています。
発生している問題・分からないこと
その上でまずは保存のみの実装を行いました。
ですが保存を試みると
The verification token provided is invalid.
とエラーが発生します。
なのでトークンの発行時に何か失敗しているのではないかと思い、
一旦保存は後回しにし決済実行のみ行おうと試みると問題なく決済は実行ができました。
実装方法に問題があるのでしょうか?
わかる方いらっしゃいましたらお願いいたします。
念の為顧客作成と決済時の実装も記載いたします。
該当のソースコード
php
1//顧客情報作成 2$createCustomerRequest = new CreateCustomerRequest(); 3$createCustomerRequest->setFamilyName($name); 4$api_response = $this->_client->getCustomersApi()->createCustomer($createCustomerRequest); 5if ($api_response->isSuccess()) { 6 $result = $api_response->getResult(); 7 $customerId = $result->getCustomer()->getId(); 8} else { 9 $errors = $api_response->getErrors(); 10 errorCommon::sendError('顧客が作成できませんでした。' . $errors[0]->getDetail(), __FILE__); 11}
php
1//顧客情報に決済を紐付ける 2$card = new Card(); 3$card->setCustomerId($customerId); 4$createCardRequest = new CreateCardRequest( 5 uniqid('pk_', true) . bin2hex(random_bytes(4)), 6 $squareToken, 7 $card 8); 9$createCardRequest->setVerificationToken($square3DToken); 10$api_response = $this->_client->getCardsApi()->createCard($createCardRequest); 11if ($api_response->isSuccess()) { 12 $result = $api_response->getResult(); 13 $cardId = $result->getCard()->getId(); 14} else { 15 $errors = $api_response->getErrors(); 16 errorCommon::sendError('カードが紐づけられませんでした。' . $errors[0]->getDetail() , __FILE__); 17}
php
1//決済実行 2$money = new Money(); 3$money->setAmount($amount); 4$money->setCurrency('JPY'); 5 6$createPaymentRequest = new CreatePaymentRequest( 7 $cardId ? null : $squareToken, 8 uniqid('pu_', true) . bin2hex(random_bytes(4)), 9); 10 11$createPaymentRequest->setAmountMoney($money); 12$createPaymentRequest->setDelayDuration('P7D'); 13$createPaymentRequest->setCustomerId($customerId); 14$createPaymentRequest->setVerificationToken($square3DToken); 15$api_response = $this->_client->getPaymentsApi()->createPayment($createPaymentRequest); 16 17if ($api_response->isSuccess()) { 18 $result = $api_response->getResult(); 19 $paymentId = $result->getPayment()->getId(); 20} else { 21 $errors = $api_response->getErrors(); 22 errorCommon::sendError('決済が作れませんでした。' . $errors[0]->getDetail() , __FILE__); 23} 24
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
一旦保存は後回しにし決済実行のみ行おうと試みると問題なく決済は実行ができました。
補足
特になし
あなたの回答
tips
プレビュー