この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
最近、アリペイを試験ECサイトへ導入しています。導入しながら、まとめて少しずつメモします。ご参考まで
PS:
エンドユーザ⇒例、ECサイトで注文者
パートナーシステム⇒例、ECサイト及び運用者
第一回
——————2011-03-11(金)晴れ—————————————-
1.概要
アリペイ外部向けAPIには2種類あり、
一つは外部からリクエストを受け取るAPIであり、受取APIと言い、
もうひとつはアリペイから外部に通知するAPIであり、通知APIと言う。
受取API、通知APIの例はこの後詳しく説明するのでここで省略
2.交互パタン
(1)要求/応答パタン
もっとも使われているパタンで、パートナーシステムからリクエストを送信して、アリペイシステムにて処理を行って、処理結果を同期にパートナーシステムに戻すこと。
画面上から見れば呼出と遷移に分かれて、
呼出:パートナーシステムがアリペイの関連APIを呼び出すこと
遷移:パートナーシステムからアリペイの支払い画面に遷移して、エンドユーザはアリペイ支払システムにて支払いを行うこと。
アリペイ支払処理完了後、またパートナーシステムに戻らせたい場合、パートナーシステムからアリペイAPIを呼び出す時、パラメータの一つとして、return_url(戻り先)を渡す必要があります。
・処理フローとしては、
・呼出先URL:
https://www.alipay.com/cooperate/gateway.do
(2)通知モード
エンドユーザがパートナーシステムからアリペイシステムに遷移して、アリペイシステムにて今回の操作を完了させる。(パートナーシステムに戻らない)
アリペイシステムはパートナーが関心しているイベント、ステータスなどをパートナーシステムに通知する。
アリペイシステムの処理結果を非同期に通知されたい場合、パートナーシステムからアリペイAPIを呼び出す時、パラメータの一つとして、notify_url(通知先)の指定が必要です。
例、エンドユーザがパートナーシステムにて注文して、アリペイシステムにて支払う。支払いステータスが変わる時、アリペイシステムから
最新の支払いステータスや関連情報をパートナーシステムに通知する。
・処理フローとしては
・1.アリペイシステムからパートナーシステム(通知URL:nofity_url)に通知する。
・2.通知到着後、パートナーシステムは通知ID(nofity_id)で通知の有効性をアリペイシステムに確認する。
・3.アリペイシステムは通知の有効性を判断して、判断の結果をパートナーシステムに戻す。(True/False)
・4.パートナーシステムは通知により処理を行い、処理結果をアリペイシステムに戻す。
・5.パートナーシステムから戻された処理結果によりアリペイシステムは処理を行う。
アリペイシステムはHTTP/HTTPSプロトコルのpostメソッドで、データをパートーナシステムに送信する。
通知URLはアリペイとの契約に静的に指定できる。通知URL(notify_url)が指定されたら、すべての通知を指定されたURLに通知する。
アリペイ通知失敗またはパートーナシステムから処理成功の応答がない場合、アリペイシステムは定期的(1分間、3分間、5分間、10分間…)にデータを再送するが、すべての通知がパートーナシステムに届けることを保証しない。
重複送信の可能性がある、かつ、必ず業務上に前後順位で通知するわけではないので、パートーナシステムには重複送信無視及びだたしくソートする処理が必要だ。通知を受け取って処理する前に本システムの処理ステータスなどで処理されたかどうか判断する。本システムの処理ステータスをチェックする時、データロックかタイムスタンプを見るのをお勧め。
2-2.通知検証
システムの安全性から考えると、パートーナシステムはアリペイの通知を受けると、通知の有効性を検証する必要がある。アリペイAPIが正しく利用されているのを保証するために、パートーナシステムが1分間以内(現状1分間、今後調整可能性もある)の通知のみ検証できる。
検証用URL:
HTTPSの場合
https://www.alipay.com/cooperate/gateway.do
検証リクエスト例
https://www.alipay.com/cooperate/gateway.do?service=notify_verify&partner=1234567890¬ify_id=abcdefghijklmnopqrst
HTTPの場合
http://notify.alipay.com/trade/notify_query.do
検証リクエスト例
http://notify.alipay.com/trade/notify_query.do?partner=1234567890¬ify_id=abcdefghijklmnopqrst
通知検証APIの出力パラメータ
出力内容 説明
Invalid パラメータ無効
True 検証成功
False 検証失敗
——————————————————————————
まだまだありますが、今回はここまでです。☆.。*・゜゜‥*。.☆.。*・゜゜‥*。. ☆.。*・゜゜‥*