1. TOPTOP
  2. Webサービス
  3. PayPal

WooCommerceにおけるSoapClientとDOMdocumentの設定方法 ~ PayPal SOAP API について

|

woocommerce_soapclient_domdocument

さくらのVPS + WordPress + WooCommerceで決済プラグインをインストールするときに、Webサーバー(Apache)において必ずSoapClientDOMdocumentの設定することが必要となります。

SoapcClientとDOMdocumentとは

ところでSoapClientとDOMdocumentとは何のことを指しているのでしょうか?

SoapClientとは

まずPHPの公式ドキュメント(新しいタブで開く)から引用した文章を紹介します。

SoapClientクラスはSOAP1.1、SOAP1.2サーバー用のクライアントとなります。

この引用した文章だけでは、何のことを言っているのかよく分かりませんね。次にW3Cの公式ドキュメント(新しいタブで開く)でSOAP1.1の説明を確認しましょう。

SOAP is a lightweight protocol for exchange of information in a decentralized, distributed environment. It is an XML based protocol that consists of three parts

W3Cの引用文を要約するとXMLをベースとした通信規格で、APIデータを取得できる形式のことですね。

DOMdocumentとは

こちらもPHPの公式ドキュメント(新しいタブで開く)に掲載されている文章から引用します。

HTMLドキュメントあるいは、XMLドキュメント全体を表し、 ドキュメントツリーのルートとなります。

異なるプログラミング言語の説明に頼ることはあまり良いことではありませんが、MDNのDOMドキュメント(新しいタブで開く)を読むと理解が深まると思います。HTMLやXMLなど構造化表現をツリー状に表したものを指します。

PayPal SOAP API Clientについて

SoapClientとDOMdocumentの意味が分かれば、PayPalにおけるSOAP API Clientの役割も大体分かりますね。

PayPal SOAP API Clientとは

woocommerce_soapclient_domdocument_2_2

上記の画像はPayPal SOAP API Basics(新しいタブで開く)のスクリーンショットです。PayPalのシステム内部にAPIデータがツリー状(DOMdocument)で用意されているので、それをSOAPという通信規格(プロトコル)で取得することが概念図で表現されています。

PayPalにおけるSOAP API Clientの意義

DOMdocumentは一種のデータ構造なのでそれ自体問題があっても、クライアントの開発者側には責任はありません。ただクライアントの開発者側がSOAPという一定の通信規格を用いるのは、ツリーデータを呼び出すときにデータがだだ漏れにならないよう防ぐ必要があるからです。

ちなみにAPIと聞くとRESTという名前の通信規格をイメージされる方もいらっしゃるかもしれません。RESTは不特定多数を対象にした、入力パラメータが少ない情報配信や検索サービス等での利用に向いています。例えばTwitterのAPIではRESTが用いられています。

一方、PayPalでSOAPが用いられるのは複雑な入力を必要としたり、入出力に対してチェックを必要とするようなサービス等での利用に向いているからでしょう。そのあたりの事情はQiitaの記事(新しいタブで開く)が参考になります(ただし現在、PayPalではSOAPよりもRESTを使うことが推奨されています)。

SoapClientとDOMdocumentを使えるようにする

SoapClientとDOMdocumentの意味とその意義はお分かりいただけたでしょうか?冒頭の画像のようにエラーがついている状態では、SoapClientとDOMdocumentを用いることはできません。

冒頭の画像の状態で決済プラグインを用いると、カード番号をはじめとした機密情報が外部にだだ漏れする可能性があります。決済プラグインを用いる以上、SoapClientとDOMdocumentを必ず使える状態にしなければなりません。

1.システム状況の確認

paypalstandard_woo_config_1

まずWordPressの管理画面内にあるWooCommerceの購入手続き画面から、PayPal(スタンダード)の設定画面に入ってシステム状況のリンクをクリックします。

paypalstandard_woo_config_2_2

するとWooCommerce内の設定状況が確認できます。その中でWordPressがインストールされているWebサーバー(Apache)の設定状況を確認します。この画面ではSoapclientDOMdocumentの欄にエラーが出ていることが分かります。

2.PHP7の拡張モジュールをインストール

# yum install --enablerepo=remi,remi-php70 php-xml php-soap
...
インストール:
php-soap.x86_64 0:7.0.26-1.el7.remi                      php-xml.x86_64 0:7.0.26-1.el7.remi

この状態からSoapClientを使うためには、PHP(PHP7)の拡張モジュールをインストールする必要があります。当該のサーバーにroot権限でログインして、上記のyumコマンドを実行しましょう。コマンドの意味はremiリポジトリからphp-xml、php-soapの各モジュールを引っ張ってインストールするという感じです。

# systemctl restart httpd

最後にApacheの再起動を行いましょう。これでSoapclientとDOMdocumentの設定が完了しました。なお、SoapClientDOMdocument(新しいタブで開く)の意味はそれぞれPHPの公式ドキュメントを参考にしてください。

3.システム状況の再確認

再度、WooCommerce内の設定状況を確認します。今度はSoapClientとDOMdocumentの欄に緑色のチェックが付き、安全に決済プラグイン(PayPal)を用いることができます。

【参考サイト】