PaypalのWebペイメント スタンダードについて  【解決済み】

困った時はこちらで質問してください。回答を担当する人は特に決まっていませんので、分かる方は回答をお願いします。
アバター
maron
記事: 20
登録日時: 2008/2/19 21:41

PaypalのWebペイメント スタンダードについて

投稿記事by maron » 2017/2/26 22:09

PaypalがWebペイメントスタンダードの使用者に対してエクスプレス チェックアウトに変更するように要請していますが、
Webペイメントスタンダードを使い続けるためには千円単位のカンマを外す必要があるとのことです。

https://www.zen-cart.com/showthread.php?221541-PayPal-deleting-the-comma-from-PayPal-Standard-in-Jan-2017

そのためには

/includes/modules/payment/paypal.php
/includes/modules/payment/paypal/paypal_functions.php

のnumber_formatを変更する(roundに変更する)必要があるようなんですが、
PHPの知識が不十分なため、具体的にどこをどどのように変更すればよいかわかりません。
当面、Webペイメントスタンダードを使う必要があるため、ご存じの方がいればご教授ください。
よろしくお願い申し上げます。
アバター
k
記事: 28
登録日時: 2006/2/25 20:17

PaypalのWebペイメント スタンダードについて  【解決済み】

投稿記事by k » 2017/3/02 17:55

>Change "number_format(" to "round(" on the following lines of the files found in /includes/modules/payment:

とのことですので、"number_format(" を "round(" に変えるだけですね。

例えば1.3.9のpaypal.phpだと、
'amount' => number_format($this->transaction_amount, $currencies->get_decimal_places($my_currency)),

'amount' => round($this->transaction_amount, $currencies->get_decimal_places($my_currency)),

でしょうか。
アバター
maron
記事: 20
登録日時: 2008/2/19 21:41

PaypalのWebペイメント スタンダードについて

投稿記事by maron » 2017/3/02 19:10

kさん、ありがとうございます。
対処できました。

3月28日までは修正しなくても今のままで大丈夫なようですが、以後はWebペイメントスタンダードは使わないほうがよいみたいですね。
エクスプレス チェックアウトに変更する予定です。
アバター
竹村
記事: 39
登録日時: 2005/5/20 11:38
お住まい: 東京都

PaypalのWebペイメント スタンダードについて

投稿記事by 竹村 » 2017/3/08 14:15

この件、「2017年3月29日(水)までに実装を更新する件」ということで日本語資料では↓こちらの話ですよね。

実装環境で無効なデータがPayPalに送信されていることを確認しました。どうすればよいですか。
https://www.paypal-knowledge.com/infocenter/index?page=content&id=FAQ2067&pmv=print&impressions=false&viewlocale=ja_JP

Q: 変更を行ったことで問題が解決したかどうかは、どのように確認できますか。
A: 上記のよくある問題とウェブ ペイメント スタンダードの開発情報をご参照ください。2017年1月初旬から、PayPal Sandbox環境で変更点をテストできます。

と、サラッと書いてあって結局どうテストしてどうなっていればいいのか分からないので、
PayPalに質問をして回答をいただき、Zen Cartのどこを修正すればよいか分かりました。

■前提
まず、対象はPayPalの「ウェブ ペイメント スタンダード」の場合ですね。

■どうしたら解決したか判断できるか?
通常、ZenCartからPayPalで決済すると添付画像 before.jpg のようにいつものPayPalログイン画面がでますが、コレだと2017年3月29日(水)以降はアクセスできなくなるそうです。

正常にパラメータ設定をしてPayPalにアクセスした場合は添付画像 after.jpg のように新しいログイン画面になるそうです。

Sandbox環境は既に新しいログイン画面が出るようになっているので、Sandboxに接続して新しいログイン画面がでなければNGです。
なお、Zen CartでSandbox環境に接続するには、管理画面のPayPalの設定で「PayPal ウェブサービス接続先」を「www.sandbox.paypal.com/cgi-bin/webscr」にします。

Sandboxアカウントの作り方などは別トピックの話なので、↓この辺を見るか、ググってみてください。
PayPal Sandboxとは何ですか。
https://www.paypal-knowledge.com/infocenter/index?page=content&id=FAQ1132&pmv=print&impressions=false&viewlocale=ja_JP

■Zen Cartで修正が必要なパラメータ

  • cmd を「_ext-enter」から「_xclick」に変更する
  • amount から , を抜く
  • address_override=1 という設定を追加する
  • quantity=1 という設定を追加する

■Zen CartのPayPalソースのどこを具体的に修正する必要があるか
includes/modules/payment/paypal.php より、
修正前:

コード: 全て選択

    $optionsAggregate = array(
                   'cmd' => '_ext-enter',
                   'item_name' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_TITLE,
                   'item_number' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_ITEMNUM,
                   //'num_cart_items' => sizeof($order->products),
                   'amount' => number_format($this->transaction_amount, $currencies->get_decimal_places($my_currency)),
                   'shipping' => '0.00',
                    );

修正後:

コード: 全て選択

    $optionsAggregate = array(
                   'cmd' => '_xclick',
                   'address_override' => '1',
                   'quantity' => '1',
                   'item_name' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_TITLE,
                   'item_number' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_ITEMNUM,
                   //'num_cart_items' => sizeof($order->products),
                   'amount' => round($this->transaction_amount, $currencies->get_decimal_places($my_currency)),
                   'shipping' => '0.00',
                    );


■さいごに
2017年3月29日(水)を超えてみないと本当に大丈夫かどうかは分かりませんが、今やれることはやったと思います。
うまくいけば、この日以降も「ウェブ ペイメント スタンダード」の利用は可能そうですね。
添付ファイル
after.jpg
新しいPayPal画面
after.jpg (71.83 KiB) 閲覧数: 573 回
before.jpg
以前のPayPal画面
before.jpg (74.57 KiB) 閲覧数: 573 回
アバター
maron
記事: 20
登録日時: 2008/2/19 21:41

PaypalのWebペイメント スタンダードについて

投稿記事by maron » 2017/3/08 17:25

竹村さん

ありがとうございます。
結局、ウェブペイメント スタンダードからエクスプレス チェックアウトに変更しました。

ちなみにsandboxですが、ウェブペイメントスタンダードのテストは
sandbox用のPDT Token(支払いデータ転送IDトークン)が提供されていないようなので
実施しませんでした。

色々とありがとうございました。
アバター
竹村
記事: 39
登録日時: 2005/5/20 11:38
お住まい: 東京都

PaypalのWebペイメント スタンダードについて

投稿記事by 竹村 » 2017/3/08 19:01

maronさん

設定変更おつかれさまです!

sandbox用のPDT Token(支払いデータ転送IDトークン)が提供されていない

補足の話を深掘りしてしまってアレなのですが、↓これのことじゃないでしょうか。

Sandbox (https://www.sandbox.paypal.com/)にBUSINESSアカウントでログインして、
「個人設定」を押して、左メニューの「販売ツール」を押して、「ウェブサイトの設定」の更新を押した先に
「ウェブ ペイメントの自動復帰」と「支払いデータ転送(オプション)」の設定があります。

IDトークンはこのページを一旦【保存】してから再度このページにアクセスすると表示されています。
アバター
maron
記事: 20
登録日時: 2008/2/19 21:41

PaypalのWebペイメント スタンダードについて

投稿記事by maron » 2017/3/08 21:22

竹村さん

ありがとうございます。
sandbox用のPDT Tokenありました。
大変、参考になりました。
本当にありがとうございました。
アバター
竹村
記事: 39
登録日時: 2005/5/20 11:38
お住まい: 東京都

PaypalのWebペイメント スタンダードについて

投稿記事by 竹村 » 2017/3/29 12:59

運命の2017年3月29日(水)ですが、PayPalの「ウェブ ペイメント スタンダード」については↓この対応で問題なしでした。
viewtopic.php?f=11&t=6414&p=28694&hilit=paypal#p28694

以上、結果報告のみで失礼します。
アバター
maron
記事: 20
登録日時: 2008/2/19 21:41

PaypalのWebペイメント スタンダードについて

投稿記事by maron » 2017/3/29 13:12

竹村さん

丁寧なフォロー、誠にありがとうございます。

“Zen Cart 質問コーナー” へ戻る