Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

第9回 Magento Cafe Plus

946 views

Published on

第9Magento Cafe Plusで使用した資料です。
Magento2のエクステンション開発その2と継続課金について説明しています。

Published in: Internet
  • Be the first to comment

第9回 Magento Cafe Plus

  1. 1. Magento Cafe Plus #9
  2. 2. 最近のMagento
  3. 3. セキュリティパッチ • PATCH-SUPEE-5994公開 – まだ適用していないサイトにはすみやかに適用を
  4. 4. Magento1.xのメンテナンス期間 • Magento2リリース後3年間 2015/06 2015/12 2016/06 2016/12 2017/06 2017/12 2018/06 2018/12 Magento1.x as Mainstream Magento2.x as Mainstream Magento2 as Beta / RC 1年目 2年目 3年目 Magento1.x as Maintenance phase Magento2 リリース Magento1.x サポート終了
  5. 5. Meet Magento 2015 Japan • 只今絶賛参加登録受付中 • 講演者も募集中
  6. 6. Magento2エクステンション開発 その2
  7. 7. 前回のおさらい • M1とM2は似て非なるアプリケーション • DBレベルではマイグレーション可能 • M1の知識が全く役に立たないわけではない • XMLファイルが細分化・多様化している
  8. 8. M2でHELLO WORLDをだしてみる
  9. 9. Hello Worldに必要なもの • 設定ファイル • レイアウトXML • テンプレート • ブロック • ヘルパー • composer.json
  10. 10. composer.json { "name":”veriteworks/magento2-helloworld", "type":"magento2-module", "extra": { "map": [ [ "*", ”Veriteworks/Helloworld" ] ] }, "license": [ "OSL-3.0", "AFL-3.0" ], "description":"Magento2 Hello World sample.", "version":”1.0.0.0", "authors":[ { "name":"Hirokazu Nishi", "email":"nishi@principle-works.jp", "homepage":"https://principle-works.jp/", "role":"developer" } ], "require": { "php": "~5.5.0|~5.6.0", "magento/framework": "0.74.0-beta12", "lib-libxml": "*", "magento/magento-composer-installer": "*” } }
  11. 11. etc/module.xml <?xml version="1.0" ?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/M odule/etc/module.xsd"> <module name=“Veriteworks_Helloworld" setup_version="1.0.0.0"> </module> </config>
  12. 12. ヘルパー <?php namespace VeriteworksHelloworldHelper; class Data extends MagentoFrameworkAppHelperAbstractHelper { }
  13. 13. ブロック <?php namespace VeriteworksHelloworldBlock; use MagentoFrameworkViewElementTemplate; /** * Helloworld block * */ class Helloworld extends MagentoFrameworkViewElementTemplate { }
  14. 14. レイアウトXML <?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framewor k/View/Layout/etc/page_configuration.xsd"> <body> <referenceContainer name="before.body.end"> <block class="VeriteworksHelloworldBlockHelloworld" name="helloworld" as="helloworld" template="Veriteworks_Helloworld::helloworld/default.phtml" before="-"/> </referenceContainer> </body> </page>
  15. 15. テンプレート <h1>Hello World!</h1>
  16. 16. エクステンションの有効化 エクステンションを有効化するコマンド php bin/magento module:enable Veriteworks_Helloworld --clear-static-content セットアップスクリプトの実行 php bin/magento setup:upgrade キャッシュの更新 php bin/magento cache:flush
  17. 17. 継続課金
  18. 18. 継続課金(Recurring Payment)とは • ある一定期間ごとに顧客に対して課金を行う処理 • 1年/半年/四半期/毎月/2週などのサイクルがある • 継続課金を行うためには、顧客との間に支払契約 の締結が必要 • 締め日・洗い替え処理など、都度決済より複雑
  19. 19. よくある都度課金の流れ ECサイト顧客 決済サービス 商品をカートに投入 購入手続き開始 支払方法選択 購入確定ボタンクリック 注文受付処理実行 決済データ送信 決済処理実行 決済結果送信決済結果受信 注文データ確定注文完了
  20. 20. 継続課金の処理パターン 1 加盟店側で課金アクションを起こすもの 2 決済サービス側で自動的に課金が行われるもの 継続課金という概念がなく、登録済みカード番号等を用いて繰り返し課金を行うもの。 課金予定データまでは準備してくれるが、確定処理は加盟店側で実施するもの。 都度課金とは独立した仕様として、課金契約データが用意され、指定した期間ごとに自 動的にサービス側で課金が実施される。 洗替処理不可 実装容易 洗替処理可 実装難易度高 洗替処理可?不可? 実装難易度中
  21. 21. 継続課金の流れ〜その1 ECサイト顧客 決済サービス 購入確定ボタンクリック 注文受付処理実行 決済データ送信 継続課金登録処理実行 登録結果送信決済結果受信 注文データ確定注文完了 課金処理実行 決済データ作成 定期課金処理 決済結果通知?決済結果受信 注文履歴作成 注文データ作成 決済データ送信
  22. 22. 継続課金の流れ〜その2 ECサイト顧客 決済サービス 購入確定ボタンクリック 注文受付処理実行 決済データ送信 継続課金登録処理実行 登録結果送信決済結果受信 注文データ確定注文完了 課金処理実行 決済データ作成 定期課金処理 決済結果通知?決済結果受信 注文履歴作成 決済結果照会 決済データ返却
  23. 23. Magentoでの継続課金
  24. 24. そもそもの話 • ベータ版扱い5年以上・・・ • 事実上PayPal専用 • ほかの決済サービスで使えなくもない、が・・・
  25. 25. サードパーティ製といえば・・・ http://www.magentocommerce.com/magento-connect/subscriptions-and-recurring- payments-by-aheadworks.html
  26. 26. サードパーティ製の課題 • 独自実装になっているので、決済モジュールは個 別に対応が必要 • 機能面で標準と異なる点があるため、注意が必要 • そもそもライセンス費用が必要 • 日本の決済になど・・・対応しているわけがない
  27. 27. 継続課金を使う際の設定1
  28. 28. 継続課金を使う際の設定2
  29. 29. 継続課金の仕組み • Recurring Profile • Recurring Product • Nominal Item • 対応する決済方法
  30. 30. Recurring Profile • 継続課金の契約データそのもの • 誰に何を、いくらで、どの周期で、何回課金するか • 1つの継続課金契約には1つのRecurring Profile
  31. 31. Recurring Product • 商品のデータ上、「Recurring Profile」が有効になっ ている商品 • Recurringできるのは、Simple, Virtualのみ • Recurring Profileが有効な商品は、それ単独でしか カートに入れることができない • つまり1回の決済で1つの商品しか買えない
  32. 32. Nominal Item • Recurring Productをカートに入れた際に出る項目
  33. 33. 対応する決済方法 • Mage_Payment_Model_Recurring_Profile_MethodI nterfaceを実装した決済クラス – submitRecurringProfile – getRecurringProfileDetails – canGetRecurringProfileDetails – updateRecurringProfile – updateRecurringProfileStatus • その他、決済サービス側の仕様を満たす実装 – こちらのほうがよほど面倒くさい
  34. 34. 決済サービス側で勝手に課金する場合 • 課金されたことをMagento側で拾う処理が必要 – 定時バッチで実行する方法 – サービス側から通知してもらう方法 • どちらでやるかは仕様に依存 – 通知してもらう場合は注文・請求データの作成処理を実 装する必要あり
  35. 35. Magento側で課金を起こす場合 • 定時バッチによる課金処理を起こす • カード番号の決済サービス側での保存が必要 (カード決済の場合) • Magento側でRecurring Profile毎にいつ課金するか 判定を実施 – 課金処理時に注文データと請求データを作成
  36. 36. 面倒な仕様の例 • 継続課金の課金・取消申請をする期間が1ヶ月の うちに一定期間存在する – その期間を過ぎると諸々面倒であったりとか・・・ • SFTPで所定のデータをアップしろ、とか – もはやWebアプリではなくただのバッチ処理ではと・・・
  37. 37. 継続課金の制約 • Recurring Profileの内容を顧客が自由に変更できない(解 約・停止はできる) • 管理者も解約と停止しかできない – 税率変更時に問題になる – 契約変更時は解約・新規契約になる • カード番号をMagento側に持つのはNGなので、カード番号 お預かり等の機能のない決済サービスでは利用できない (ペイジー・コンビニなどは可) • 継続課金の場合、3Dセキュア認証が行われない事がある
  38. 38. まとめ • Magentoの継続課金機能はベータ版 • 決済側さえ対応していればそれなりに使える – ただし、決済側の仕様がバラバラ • 1つの継続課金で1つの商品しか扱えない • 税率の変更や届け先の変更などは出来ない

×