paypal導入事例 crowdworks編
TRANSCRIPT
PayPal 導入事例 CrowdWorks 編
自己紹介Github: ToruIwashita
所属 : 株式会社クラウドワークス趣味 : dotfiles いじりOSS: git-switcher.vim
CrowdWorksというサービス
サービス概要
2013/03/22 〜日本最大級のクラウドソーシングサービスユーザー数 113 万人以上マザーズ上場 : 2014/12/12
CrowdWorks
ネット上で仕事を依頼し、納品してもらう
ネット上で仕事を依頼し、納品してもらう
ネット上で仕事を依頼し、納品してもらう
ネット上で仕事を依頼し、納品してもらう
お金を預かる部分がサービスの肝お金を預かるために決済を行う仕事発注にオプションがあり、これも決済対象預かったお金が報酬となり、ユーザーへ送金
CrowdWorks の決済について
銀行振込クレジットカード決済PayPal 決済
決済の種類 ( サービスリリース時〜 )
PayPal 決済の規模
Mar-12Jun
-12Se
p-12Dec-
12Mar-
13Jun
-13Se
p-13Dec-
13Mar-
14Jun
-14Se
p-14Dec-
14Mar-
15Jun
-15Se
p-15Dec-
15Mar-
16Jun
-16Se
p-16
PayPal決済数
Mar-12Jun
-12Se
p-12Dec-
12Mar-
13Jun
-13Se
p-13Dec-
13Mar-
14Jun
-14Se
p-14Dec-
14Mar-
15Jun
-15Se
p-15Dec-
15Mar-
16Jun
-16Se
p-16
PayPal決済数
Mar-12Jun
-12Se
p-12Dec-
12Mar-
13Jun
-13Se
p-13Dec-
13Mar-
14Jun
-14Se
p-14Dec-
14Mar-
15Jun
-15Se
p-15Dec-
15Mar-
16Jun
-16Se
p-16
PayPal決済数 クレカの UX 改善
Mar-12Jun
-12Se
p-12Dec-
12Mar-
13Jun
-13Se
p-13Dec-
13Mar-
14Jun
-14Se
p-14Dec-
14Mar-
15Jun
-15Se
p-15Dec-
15Mar-
16Jun
-16Se
p-16
PayPal決済数 クレカの UX 改善
累計取引 : 8 万件以上
決済方法別 利用割合
クレジットカード (他社 )PayPal銀行振込全体の 1/3
決済方法別 利用割合
クレジットカード (他社 )PayPal銀行振込全体の 1/3
2 年弱のスピード上場を牽引
PayPal 決済導入経緯
導入経緯決済はどんなサービスでも要になるお金を預かって、お金を支払うビジネスモデルサービスリリース時・複数の決済方式を用意したい・知名度の高い決済サービスでユーザーに安心感
導入経緯決済サービスを利用するには審査が必要物販でなく、役務の場合は決済の審査が厳しいサービスリリース前なので実績がない当初の思惑通りに決済の種類を増やす事に難航
導入経緯そこで知名度高く、信頼感が大きい PayPal
Web から申し込むだけで、すぐに利用開始サービスリリースに合わせて導入できた
PayPal 利用シーン
お金を預かる
お金を預かる 報酬を送金
お金を預かる 報酬を送金
報酬の送金表立った機能ではないが、一部対応しているPayPal アカウントの画面から手動で振込依頼CSV で振込依頼も可
CrowdWorks におけるPayPal
( 技術的側面 )
CrowdWorks のインフラRuby 2.3 系Rails 4.2 系MySQL 5.6 系
PayPal 決済Express Checkout
SOAP API
ライブラリ : Active Merchant
Ruby での PayPal 決済ライブラリgem 公式 初回リリース
(GitHub) 最新バージョン 状態
paypal-sdk-rest ◯ 2013/03/08 v1.6.0 開発継続中
paypal-sdk-merchant ◯ 2012/12/11 v1.117.2 2015/08/26 から
リリースがないpaypal-express ☓ 2011/02/08 v0.8.1 2014/12/22 から
リリースがないactivemerchant ☓ 2008/11/26 v1.62.0 開発継続中
Active Merchant を選択世界中 100 以上の決済ゲートウェイに対応している Ruby の gem
元々は EC プラットフォームを運営しているShopify が開発していたが、現在は OSS コミュニティによって開発されているhttp://activemerchant.org/
Active Merchant を選択してみてRuby のバージョン 1.9 系 => 2.3 系Rails のバージョン 3.2 系 => 4.2 系=> Active Merchant は特別な移行作業を行わなくともスムーズに移行できた
今だったら、、REST API を使いたい (paypal-sdk-rest)※ SOAP API は公式ドキュメントで Classic と書いてあるExpress Checkout の新機能 In-context を使いたい※ PayPal 側のサイトにユーザーを遷移させることなく、自サイト内で決済が完結するでも Express Checkout は SOAP API しか対応していない (?)
運用事例
Instant Payment Notification(IPN)
Instant Payment Notification (IPN)決済に関するイベントを通知するサービス通常の決済は IPN を使わず Express Checkout だけで完了するので、あまり活用していなかったリソース不足、決済へのクレームがない状態のため対応が後回しになる
Instant Payment Notification (IPN)PayPal 決済は他社のクレジットカード決済と比べてカジュアルに決済の差戻し申請が来ていたサービスが成長するにつれて通常のフローから逸れた取引が発生するIPN を使ったハンドリングを適切に行う必要が出る
Instant Payment Notification (IPN)IPN のステータスが多く、発生頻度の低いイベントへの対応は限られたリソースの中だとかなり困難IPN の通知は全て記録し、通知を感知できる状態にして少しずつ改善していく体制にした
通知を感知できる状態特殊な IPN の通知を受けたら Slack に即通知サービス内のお金の状態は変化していく 仮払い => 報酬 => 出金決済関連の通知がきた場合、対処が遅くなると難易度が上がる
決済のテスト
Ruby は動的型付き言語、実際に動かしてプログラムの整合性を検証する・ PayPal の sandbox を利用して手動確認・ CI で自動テスト
決済のテスト
PayPal の sandbox の API を自動テストに利用するAPI の Mock が欲しいが、見つからない※ 知ってたら教えて欲しい自前で対応
決済のテスト
Mock 用に主要な API のレスポンスをnetrecording を使って記録外部 URL を偽装するテスト用ライブラリfakeweb を使って疑似レスポンスを返す
決済のテスト
API を Mock
API を Mock (rspec)
API を Mock (他の方法 )vcr + webmock
初回の HTTP 通信を記録し、 2 回目以降は記録したデータから mock としてデータを返す
その他の小ネタ( 運用していて思う事を書いてみる )
ドキュメントが見つけづらいExpress Checkout 以外にも多種の決済サービスがあり、全 7 種で API連携できるものが 4 つ※ https://www.paypal.com/jp/webapps/mpp/compare-business-products
ニッチな状況が起きた時には必ず参照するも、なかなか求める情報にはたどり着けない事が多いネット上に事例があまり存在しないので、状況のアウトラインを把握しづらい
問題の切り分けが難しくて、何をしたら解決するのか分からないような問題が起きた技術サポートのクオリテイが高く、解決できた取引額が一定を超えた場合、アカウントマネージャーがトラブルや質問に対して対応してくれる
PayPal のサポートはクオリティが高い
PayPal 導入事例 CrowdWorks 編