ソフト開発 プログラミング 楽天RMS

RMS 決済API(Payment API) オーソリ処理(authori)のPHPサンプル解説・使い方

更新日:

RMS APIは楽天市場の店舗管理、商品管理の自動化を実現するAPIです。あまりサンプルがまとまっていないので、APIの全パターンを下記記事でまとめています。

楽天 RMS APIのPHPサンプル集・使い方 ほぼ全パターン(随時更新中)

今回は決済API(Payment API)、authoriを解説します。

APIを使用できる環境がない場合は、下記から出店申請をしてください。毎度言ってますが料金が高いので、APIを試すだけなら既に店舗アカウントを持っている人に頼んでテスト店舗を使わせてもらうのも手です。

APIを使用するための出店手続き・資料請求はこちら

サンプルソースコードは下記です。

authoriのサンプルソースコード

authoriの概要

authoriを使えば、クレジットカードでの受注に対して、支払い処理を行うことができます。

デフォルトのRMSであれば、受注が入った後、受注管理画面から手動でオーソリ処理を行う必要があります。

これが割と手間なため、自動決済サービスなんてものもありますがこれはあまり自由度がありません。どんな注文でも自動でオーソリ処理をして支払いまでいってしまうので、柔軟な対応が損なわれるケースがあります。そんな時にauthori APIを用いてある一定のルールを満たした注文だけオーソリする、などの対応が可能となります。

 

authoriはSOAP APIです。エンドポイントにPOSTすると、受注された注文に対して、クレジットカードのオーソリ処理を行ってくれます。

指定するパラメータ、設定値は下記です。

  • 受注番号
  • 請求額
  • 一括払いや分割払い、リボ払いなどの指定

 

POST リクエスト例

SOAPのリクエストなのでRESTしかやったことない人はギョッとします。(俺もギョッとしました)

 

 

ソースコード解説

authori APIが非同期のため、やることが2つあります。

  • 非同期APIのためのリクエストIDの取得
    • getRCCSRequestIdに向けてSOAPクライアントでPOSTする
  • authori API POST
    • POSTリクエストする決済情報パラメータのクラスを作成
    • SOAPクライアントを用いてリクエストIDと決済情報を添えてPOSTする

リクエストIDを取得後、authori APIにPOSTします。リクエストIDを保存しておけば、getRCCSResult APIを使って処理結果を取得できます。

クレジットカードの情報が間違っていたり、カード限度額に引っかかった場合はオーソリ処理に失敗します。処理失敗に備えて、リクエストIDをつけたgetRCCSResult APIを叩いて結果を取得する必要がありますが、本エントリーでは割愛します。getRCCSResultで処理結果を取得する方法は下記です。

getRCCSResultのAPIで非同期決済APIの結果を取得する方法はこちら(準備中)

 

非同期APIのためのリクエストIDの取得

getRCCSRequestIdのAPIのエンドポイントにSOAPでPOSTを行うと、決済API全般で使用するリクエストIDを取得できます。

SOAPのPOST方法としてはauthoriのAPIと同じなので、ここでは処理部分を載せるに留めます。

authori.php

 

POSTリクエストする決済情報パラメータのクラスを作成

 

POSTする際に一番頭を悩ませるのが、POSTパラメータの文字列の作成方法です。今回はPOSTの形式がSOAPなので、SOAPクライアントを使うと、クラスオブジェクトをパラメータにぶち込むだけでいい感じにリクエストのXMLを作成してくれます。

ということで、まずはリクエストとして設定するパラメータをクラス定義します。

class/uiAuthoriRequestModel.php

 

 

クラスを作ったら、決済情報の値を入れて、POSTの関数authori にぶち込みます。リクエストIDを入れるのも忘れずに。

authori.php

 

 

SOAPクライアントを用いてリクエストIDと決済情報を添えてPOSTする

決済情報のクラスをSOAPクライアントに入れて実行することで、SOAPクライアントが自動でいい感じのリクエストのXMLを作ってPOSTしてくれます。

API申請時に発行した店舗URLやユーザーネーム、APIのキーを付与する必要があります(★部分)。RMSのRESTのAPIのサービスシークレットとライセンスキーとは別物なのでご注意ください。

authori.php

 

ポイントは、SoapClientをnewする時の第一引数に、WSDLファイルというSOAPのAPIの情報が詰まったURLを指定してやるところです。

$client = new SoapClient(RMS_API_PAYMENT_SOAP_WSDL, array(‘trace’ => 1 ));

WSDLファイルの中身を見ると分かりますが、どんなAPIがあるか、パラメータは何かみたいな情報が書いてあります。これを元に、Soapクライアントは

$params = array(‘userAuthModel’ => _convertClassObjectToArray($userAuthModel), ‘intVal’ => $requestId, ‘uiAuthoriRequestModels’ => $uiAuthoriRequestModels);

のパラメータ情報をいい感じにXMLに変換してPOSTします。

 

レスポンスとして下記のようなのが返ってきたら成功です。

 

繰り返しになりますが、authori APIは非同期APIのため、この時点ではオーソリ処理が成功したかは判別つきません。

オーソリ処理の結果を取得するには、注文API(Order API)のgetOrderで定期取得して状態を監視するか、リクエストIDから処理結果を取得するgetRCCSResultを叩く必要があります。

 

注文API(Order API)のgetOrder解説はこちら

RMS 受注API(Order API) 受注取得処理(getOrder)のPHPサンプル解説・使い方

 

getRCCSResultのAPIで非同期決済APIの結果を取得する方法はこちら(準備中)

 

 

まとめ

authori APIは非同期のAPIのため同期のAPIと比べて多少煩雑な処理が必要でした。

処理の流れは下記です。

  • リクエストIDをSOAP APIで取得
  • authori を SOAP APIで実施
  • 処理結果をリクエストIDで取得

 

なお、テスト店舗ではテスト用のクレジットカードも割り当てられますので、自由にクレジット決済のテストを試すことができます。試してみたい方は是非下記から資料請求などをして準備をはじめてみてくださいね。

authoriのサンプルソースコード

APIを使用するための出店手続き・資料請求はこちら

  • この記事の筆者

Y平

札幌のWebデザイナー。オモコロライターも。Webデザイン、Web集客、コーダーできます。最近7年勤めた富士通を退職しました。1歳の娘いるのに年収下がっちゃう。仕事ください。

-ソフト開発, プログラミング, 楽天RMS

Copyright© バイラシー , 2018 All Rights Reserved.