Conversation
| # Transform the redirect_url | ||
| # "ACS=2&RedirectUrl=https://manage.tds2gw.gmopg.jp/api/v2/brw/callback?transId=6e48e31f-2940-48e1-a702- ebba2f3373ee&t=dccc8a7ed85372c9accff576bff59b3a" => { "ACS" => "2", RedirectUrl => "https://manage.tds2gw.gmopg.jp/api/v2/brw/callback?transId=6e48e31f-2940-48e1-a702- ebba2f3373ee&t=dccc8a7ed85372c9accff576bff59b3a" } | ||
| if response['RedirectUrl'].present? && response['t'].present? && response.keys.index('RedirectUrl') + 1 == response.keys.index('t') | ||
| response['RedirectUrl'] = response['RedirectUrl'] + '&t=' + response['t'] | ||
| response.delete('t') | ||
| end |
There was a problem hiding this comment.
@jiikko
3DS2.0の対応をさせていただいております。
specはToDoになりますが、実装方針が問題ないかを確認したいです。
レスポンスの中に &を含む値があり、そのまま使用すると &tが別のkeyと認識されてしまう問題がありましたので、上記のように手動でパースする実装を入れています。
上記の方法以外だと、idPass ではなく json でリクエストしなければならなくなりそうなのでもう少し大きな改修が必要になりそうです。
他のparse方法でも無理でした。
pry(main)> Rack::Utils.parse_nested_query("ACS=2&RedirectUrl=https://manage.tds2gw.gmopg.jp/api/v2/brw/callback?transId=6e48e31f-2940-48e1-a702-ebba2f3373ee&t=dccc8a7ed85372c9accff576bff59b3a")
=> {"ACS"=>"2", "RedirectUrl"=>"https://manage.tds2gw.gmopg.jp/api/v2/brw/callback?transId=6e48e31f-2940-48e1-a702-ebba2f3373ee", "t"=>"dccc8a7ed85372c9accff576bff59b3a"}
ご確認よろしくお願いいたします。
There was a problem hiding this comment.
返信が遅くなって申し訳ないです。
レスポンスの中に &を含む値があり、そのまま使用すると &tが別のkeyと認識されてしまう問題がありましたので、上記のように手動でパースする実装を入れています。
私は3DS2.0を使ったことがないので微妙なところですが、
テストを気持ち厚く書いて、動いているのであれば手動パースで問題ないと思います。
ドキュメントは公開されていないっぽいので頑張って手に入れてみます。
| :register_disp_8 => "RegisterDisp8", | ||
| :reserve_no => "ReserveNo", | ||
| :ret_url => "RetURL", | ||
| :ret_url => "RetUrl", |
There was a problem hiding this comment.
要求されるパラメータが RetURL と RetUrl の2種類混在してるようですね。
3Dセキュアの場合は後者でよさそうですが、他の決済手段の場合前者を要求されるケースがあるようです。
|
2025年3月末にECサイトでの3DSの利用が義務化されるようです。 |
|
本PRは引き続き開発中でしょうか? |
|
続きは #76 でやっています! |
SSIA