FROM CACHE - jp_header
解決済

iOS 向け Shopify の環境にて、Shopify アプリの課金処理が正常に完了できない

ryosuke_sato
Shopify Partner
8 0 5

iOS 向け Shopify の環境にて、弊社の Shopify アプリの課金処理が正常に完了できないという事象を確認しております。原因を調査したところ、以下のような事象が発生している事がわかりました。

 

  1. アプリのバックエンドにて appSubscriptionCreate を実行し、 confirmationUrl を発行
  2. 埋め込みアプリのフロントエンドにて confirmationUrl へリダイレクト
  3. リダイレクトの際に新しい WebView でconfirmationUrl へ遷移する 
  4. マーチャントが confirmationUrl にて「承認」を実行
  5. 埋め込みアプリのフロントエンドに戻ってくるが、新しい WebView では Session Token が取得できず、バックエンドと通信ができなくなる

Shopify アプリの仕様上、課金処理の際は confirmationUrl へのリダイレクトが必須であり、その際に iOS 向け Shopify で新しい WebView で開かれてしまうことは避けられないように思えます。

この点について他社のアプリではどのように処理をされているのでしょうか?

 

なお、iOS の Safari や Chrome ブラウザから埋め込みアプリを利用している場合は上記のような不具合は発生しません。

1 件の受理された解決策
junichiokamura
Community Manager
1200 280 506

成功

ご回答ありがとうございます。

 

OS アプリで表示する場合は、埋め込みアプリ内のプラン変更ページを差し替えて、承認フローを開始できないようにするなどの対応が必要ということでしょうか?

これは規約という点ですと、どちらかいうとShopifyが制御すべき部分かと思いますが、おそらくiOSやAndroidアプリの中で課金承認させるのは、想定外(サポート外)のフローかと思います。

 

ですので可能であれば、User Agentなどで判別して、ネイティブアプリ内の承認の場合は、ブラウザに飛ばすか、アプリの外からアクセスするように促すメッセージなどを表示いただくのが良いかと思います。

 
Senior Partner Solutions Engineer

元の投稿で解決策を見る

3件の返信3

junichiokamura
Community Manager
1200 280 506

iPhone、iPadのアプリで試しましたが、アプリ内の追加ボタンでは、Shopify提供の無料アプリしか表示されません。おそらくAppleの規約で、外部課金を使ったアプリ内課金は許可されないので、iOSアプリには有料アプリの承認フローはないと思うのですが、いかがでしょうか? もしくは、新規インストールではなくて、アプリ側でバージョンアップやプラン変更などで強制的に課金承認をするケースでしょうか? 

Senior Partner Solutions Engineer
ryosuke_sato
Shopify Partner
8 0 5

早速のコメントありがとうございます。


もしくは、新規インストールではなくて、アプリ側でバージョンアップやプラン変更などで強制的に課金承認をするケースでしょうか? 

はい、新規インストールではなく、埋め込みアプリ内にプラン変更ページが用意されており、そちらから課金承認が実施されるというケースになります。

 


Appleの規約で、外部課金を使ったアプリ内課金は許可されないので、iOSアプリには有料アプリの承認フローはないと思うのですが、いかがでしょうか?

こちら勉強不足でした。

実際の挙動としては、前述の通り iOS アプリでも confirmationUrl へリダイレクトすると承認フローが実行できてしまうようです。iOS アプリで表示する場合は、埋め込みアプリ内のプラン変更ページを差し替えて、承認フローを開始できないようにするなどの対応が必要ということでしょうか?

junichiokamura
Community Manager
1200 280 506

成功

ご回答ありがとうございます。

 

OS アプリで表示する場合は、埋め込みアプリ内のプラン変更ページを差し替えて、承認フローを開始できないようにするなどの対応が必要ということでしょうか?

これは規約という点ですと、どちらかいうとShopifyが制御すべき部分かと思いますが、おそらくiOSやAndroidアプリの中で課金承認させるのは、想定外(サポート外)のフローかと思います。

 

ですので可能であれば、User Agentなどで判別して、ネイティブアプリ内の承認の場合は、ブラウザに飛ばすか、アプリの外からアクセスするように促すメッセージなどを表示いただくのが良いかと思います。

 
Senior Partner Solutions Engineer