二区間定期券などの特殊な定期券の定期代を調べる
探索経路に定期券の種類として、複数の選択肢が存在する場合があります。
例えば、「一般定期」と「だぶるーと」がある場合、「一般定期」と「全線定期」がある場合、等です。
ここでは、二区間定期券が存在する経路の場合に、二区間定期券として定期代を取得する方法を記載します。
関連URL
- 探索条件生成 /toolbox/course/condition
- 経路探索 /search/course/extreme
- 探索結果の運賃切り替え /course/recalculate
手順
1. 経路探索に用いる条件を生成する
二区間定期券は、デフォルトでは経路探索結果に返りません。
二区間定期券の利用を有効にするには、探索条件生成のnikukanteikiパラメータに、二区間定期券の利用フラグを指定します。
なお、定期券の種類のうち、二区間定期券に分類されるもの以外は、探索条件での利用フラグの指定によらず、経路探索結果から取得できます。
GET /v1/xml/toolbox/course/condition?key=アクセスキーを入力してください&nikukanteiki=true
<?xml version="1.0" encoding="UTF-8"?>
<ResultSet apiVersion="1.27.0.0" engineVersion="202010_02a">
<Condition>T3221233232319:F3321122220000:A23121141:</Condition>
</ResultSet>
2. 経路探索を行う
1で生成した詳細探索条件を用いて経路探索 /search/course/extreme
を行います。
※リクエスト例では日本語で記述しておりますが、リクエストパラメータに日本語が含まれる場合には、日本語の部分をUTF8でURLエンコード(パーセントエンコード)してください。
GET /v1/xml/search/course/extreme?key=アクセスキーを入力してください&viaList=和光市:池袋:飯田橋&conditionDetail=T3221233232319:F3321122220000:A23121141:&searchType=plain
<?xml version="1.0" encoding="UTF-8"?>
<ResultSet apiVersion="1.27.0.0" engineVersion="202206_04a">
<Course searchType="plain" dataType="plain">
:
<!-- 金額は一般定期の定期代になっている -->
<Price kind="Teiki1Summary">
<Oneway>16960</Oneway>
</Price>
<Price passClassIndex="1" kind="Teiki1" index="1" selected="true" nikukanteikiIndex="1" ...>
<Type>Teiki1</Type>
<Oneway>16960</Oneway>
<RevisionStatus>latest</RevisionStatus>
</Price>
<Price kind="Teiki3Summary">
<Oneway>48340</Oneway>
</Price>
<Price passClassIndex="1" kind="Teiki3" index="1" selected="true" nikukanteikiIndex="1" ...>
<Type>Teiki3</Type>
<Oneway>48340</Oneway>
<RevisionStatus>latest</RevisionStatus>
</Price>
<Price kind="Teiki6Summary">
<Oneway>91590</Oneway>
</Price>
<Price passClassIndex="1" kind="Teiki6" index="1" selected="true" nikukanteikiIndex="1" ...>
<Type>Teiki6</Type>
<Oneway>91590</Oneway>
<RevisionStatus>latest</RevisionStatus>
</Price>
<!-- 一般定期の PassStatus/selected が true になっている -->
<PassStatus kind="nikukanteiki" index="1" selected="true" ...>
<Name>一般定期</Name>
<Type>Normal</Type>
<Comment />
</PassStatus>
<PassStatus kind="nikukanteiki" index="2" selected="false" ...>
<Name>二区間定期券</Name>
<Type>ToubuTwoRoute</Type>
<Comment />
</PassStatus>
</Course>
:
</ResultSet>
この時点では、 ResultSet/Course/PassStatus/selected
が一般定期券の方がtrueになっているので、定期代は一般定期として計算されています。
ResultSet/Course/PassStatus/selected
をtrueにすることで、二区間定期券としての定期代が算出されます。
3. 経路の運賃を切り替える
探索結果の運賃切り替えを行います。
2のレスポンスのResultSet/Course/PassStatus
のうち、二区間定期券を表しているPassStatus(kind="nikukanteiki"
)のindexの値を、passClassIndexパラメータの値に指定して、定期券の種類を切り替えることで、二区間定期としての定期代が取得できます。
nikukanteikiIndex
は非推奨としています。これから開発を始める方は、passClassIndex
をご利用ください。
GET /v1/xml/course/recalculate?key=アクセスキーを入力してください&passClassIndex=2&serializeData=2で取得できる経路シリアライズデータを入れてください
<?xml version="1.0" encoding="UTF-8"?>
<ResultSet apiVersion="1.27.0.0" engineVersion="202206_04a">
<Course dataType="plain">
:
<!-- 金額が二区間定期券の定期代に切り替わっている -->
<Price kind="Teiki1Summary">
<Oneway>18790</Oneway>
</Price>
<Price passClassIndex="2" kind="Teiki1" index="1" selected="true" nikukanteikiIndex="2" ...>
<Type>Teiki1</Type>
<Oneway>18790</Oneway>
<RevisionStatus>latest</RevisionStatus>
</Price>
<Price kind="Teiki3Summary">
<Oneway>53560</Oneway>
</Price>
<Price passClassIndex="2" kind="Teiki3" index="1" selected="true" nikukanteikiIndex="2" ...>
<Type>Teiki3</Type>
<Oneway>53560</Oneway>
<RevisionStatus>latest</RevisionStatus>
</Price>
<Price kind="Teiki6Summary">
<Oneway>101480</Oneway>
</Price>
<Price passClassIndex="2" kind="Teiki6" index="1" selected="true" nikukanteikiIndex="2" ...>
<Type>Teiki6</Type>
<Oneway>101480</Oneway>
<RevisionStatus>latest</RevisionStatus>
</Price>
<PassStatus kind="nikukanteiki" index="1" selected="false" ...>
<Name>一般定期</Name>
<Type>Normal</Type>
<Comment />
</PassStatus>
<!-- 二区間定期券の PassStatus/selected が true に切り替わっている -->
<PassStatus kind="nikukanteiki" index="2" selected="true" ...>
<Name>二区間定期券</Name>
<Type>ToubuTwoRoute</Type>
<Comment />
</PassStatus>
</Course>
</ResultSet>