pay.jpのテスト決済が正常に動作しない 投稿する

投稿者:tk8  投稿日時:2023-03-02 15:09:38
お世話になっております。

最近齋藤さんバージョンの最新版にsoyshop、soyCMSともにアップデートを行いました。

バージョンアップに伴ってpay.jpの決済システムを導入しようとしたのですが、うまく動作しません。

pay.jp内でテストと本番用のAPIキーを取得し、soyshop側の決済プラグインの設定にも正しくコードを入れています。

カートで使っているテンプレートはbryonになります。

そしてダウンロード販売用のプラグインを使っており、データのダウンロード販売をメインでsoyshopを活用しています。


具体的な現象としては、soyshop内のカートを最後まで進み、最後にVisaのテストカード番号を入れてテストモードで決済を行うと、エラーのメッセージが一切表示されずにカートのページがリロードされ、入力していたカード番号が全て空欄になります。

そしてページのURLの末尾がhttps://www.domain.com/cart?errorとなります。

商品を購入したことにはなっていないようで、soyshop上では注文が仮登録状態かつ支払い待ちとして記録されています。


pay.jpのサイトにアクセスしてイベントの項目を見ると、以下のようなイベントが記録されていました。

---------------------------------
イベントID:evnt_de73dad2781ee0738fab6f49337
詳細:トークンが作成されました
作成日時:2023/03/02 13:52:08 +09:00
タイプ:token.created

{
"livemode": false,
"object": "event",
"id": "evnt_de73dad2781ee0738fab6f49337",
"data": {
"id": "tok_45ab401ce4d3c9de673809dd3204",
"card": {
"id": "car_40b903e35b59e485a586eedb2f23",
"name": null,
"brand": "Visa",
"last4": "4242",
"object": "card",
"country": null,
"created": 1677732728,
"customer": null,
"exp_year": 2024,
"livemode": false,
"metadata": {},
"cvc_check": "passed",
"exp_month": 4,
"address_zip": null,
"fingerprint": "e1d8225886e3a7211127df751c86787f",
"address_city": null,
"address_line1": null,
"address_line2": null,
"address_state": null,
"address_zip_check": "unchecked",
"three_d_secure_status": null
},
"used": false,
"object": "token",
"created": 1677732728,
"livemode": false
},
"pending_webhooks": 0,
"created": 1677732728,
"type": "token.created",
"description": "トークンが作成されました"
}
---------------------------------

現在はまだpay.jpへの本番利用の申請中ですぐに使える訳でなないので急ぎではないのですが、エラーから復帰する方法があればご対応頂ければ幸いです。

追加で必要な情報があればお伝え出来ますので、何なりとお申し付けください。


soyshopを引き続き開発してくださっていることに重ねて感謝です。
いつもありがとうございます。
投稿者:齋藤毅  投稿日時:2023-03-02 15:31:10
ページのURLの末尾がhttps://www.domain.com/cart?errorとなります
上記のURLということは、原因不明のエラーになっています。

/CMSインストールディレクトリ/soyshop/webapp/src/module/plugins/payment_pay_jp/soyshop.payment.php
の186行目付近にあります
list($res, $err) = $this->payJpLogic->charge($chargeCard);

list($res, $err) = $this->payJpLogic->charge($chargeCard);
var_dump($res);
var_dump($err);
exit;
に変更して、再度クレジットカードの支払い手続きを行ってみてください。

何らかの値が出力されるはずです。
投稿者:tk8  投稿日時:2023-03-02 16:25:16
ご対応ありがとうございます。

NULL array(1) { ["error"]=>array(3) { ["message"]=>string(50) "Invalid API Key: *****************************0713" ["status"]=>int(401) ["type"]=>string(10) "auth_error" } }

という表示となりました。

apiキーが無効?
ということでしょうか?もう一度soyshop内のキーの設定に空白等が入っていないかも見てみます。
投稿者:tk8  投稿日時:2023-03-02 16:30:07
ごめんなさーーーい。

テスト側のAPIキーの最初に半角の空白が入ってしまっていました。

そしてそれを除去したところ正常動作を確認いたしました。

pay.jp内からキーをコピーするときに半角空白が入ってしまっていたようです。


soyshopのシステムとpay.jp用プラグインの問題ではなく、完全に僕の問題でした。

煩わせてしまい申し訳ありませんでした。

ご対応に感謝です。


ありがとうございました。
投稿者:齋藤毅  投稿日時:2023-03-02 18:03:01
解決したとのことで良かったです。
半角空白はよくあることですので、文字列の両端の空白を除くように改修しておきます。
ログインして投稿する