Recommended PrestShop Version

Thanks for choosing Agile.
For customers using our Agile Multiple Seller module and its accessry modules, we highly recommend to use PrestaShop 1.6x or 1.7.5 or lower. PrestaShop has made some changes in versions higher than 1.7.6 that makes it possible or very difficult to implement some of features via hooks, or override, since required hooks or override is not available.

Sept. 05, 2019

支払いモジュールの統合ガイド

支払いコレクション モードと統合

支払いモジュールの統合を紹介、私たちアジャイル複数売り手 modul の支払のコレクション モードを理解する必要があります。オンライン市場ソリューションとして、アジャイルの複数の販売業者とそのアクセサリー モジュールを使用している、統合/支払モジュール アジャイルに複数販売の環境をカスタマイズする必要。それを使用しているあなたのアジャイルの複数販売人の支払コレクション モードに依存、支払いモジュールの要件が少し異なります。

ストア収集支払い

統合または支払いモジュールをカスタマイズする必要はありません、第 3 党の支払いモジュールを使用すると、この支払のコレクション モード。支払いモジュールは次の支払いを処理し、注文の作成手順従う必要がありますが、
= > 打ち支払い最初 (全体のショッピング カート)
= > PaymentModule クラスまたはそのオーバーライドの呼び出し valiateOrder() によって注文を作成

売り手が支払いを収集します。
 

支払いモジュールを統合する必要があります。

売り手とストアの両方の支払いを収集します。 

統合する必要があります/支払モジュールをカスタマイズするします。


アジャイル複数販売モジュールと統合することができる第 3 のパーティー支払いモジュールの条件。

A. プロセス支払ストア内
支払いモジュールは、支払いを承認する支払ゲートウェイの web サイトにユーザーをリダイレクトすることがなく、PrestaShop 内支払いプロセスを終了しなければなりません。支払いモジュールのこの種は通常買い手の支払いを送信する支払ゲートウェイ API または web サービスを使用して支払いゲートウェイとサーバー側でお支払い結果が返されます情報、バイヤーは、支払いを承認する決済会社のウェブサイトにリダイレクトする必要はありません。ほとんどのクレジット カード決済モジュールでは、この方法を使用します。

B. まず作成する前にプロセス納付命令します。
モジュールをお支払いは、お支払いを処理する必要があります最初の注文を作成する前に。それはのみ場合お支払いは正常に処理を呼び出す PaymentModule -> validateOrder() 順序を作成します。ValidateOrder() は、支払いモジュール オーバーライド メソッド可能性があります。

複数の売り手 - アジャイル複数売り手 3.2.0.1 以上、第 3 党のモジュールを統合する手順
- 統合のコードでコード行を集中させてください。

1. 支払コレクション モードをサポートするための定義します。
モジュールをサポート支払コレクション モードを定義する支払モジュール クラスに次の行を追加します。

クラス AgilePaypalParallel 拡張 PaymentModule
{
パブリック静的 $PaymentCollectionMode 配列 (=
1 = > true///seller 収集の支払い - 買い手の支払いを売り手のアカウントに分割されます
、2 = > true///both ストアおよび販売者は、支払いを収集 - 買い手の支払いを store(commission) と売り手のアカウントに分割されます
、3 = > true///store バイヤーからの支払いを収集
   );
   ................
}

2. 支払モジュール可用性管理。
以下のモジュールの供給を制御するための hookDisplayPayment() メソッドの先頭でコードの行を追加します。

複数の売り手の支払いコレクション モードになり、false を返す - この支払いモジュールの電流をサポートしていない場合表示されません。
$paymode = (int)Configuration::get('AGILE_MS_PAYMENT_MODE');
if(Module::isInstalled('agilemultipleseller') & &! 自己:: $PaymentCollectionMode [$paymode]); false を返します


3. 統合する複数の売り手のモジュールに通知するフックを登録します。
あなたのモジュールの内部をインストールする方法、複数の売り手モジュールこの支払いモジュールの統合をアジャイルに通知する actionAgilePaymentModuleIntegrate をフック登録に行を追加します。


パブリック関数 uninstall()
{
false を返す if(!parent::uninstall());
場合 (! 親:: インストール
または! $this → registerHook('actionAgilePaymentModuleIntegrate')
または!Configuration::updateValue ('AGILE_PAYPALPL_BUSINESS', '[email protected]')
または!Configuration::updateValue ('AGILE_PAYPALPL_SANDBOX', 1)
または! $this → registerHook('displayPayment')
または! $this → registerHook('displayPaymentReturn')
); false を返します
    .............

}

4. 必要な統合情報を返すフックメソッドを準備します。
作成関連情報の統合を取得する複数の売り手モジュールによって呼び出されますので、支払いモジュールのコア クラスでメソッドを次します。

パブリック関数 hookActionAgilePaymentModuleIntegrate($params)
{
(配列を返す
'名' = > $this → 名前、
'desc' = > $this -> displayName、
'モード' = > 自己:: $PaymentCollectionMode、
'elinks' = > (の配列
配列 (
'ラベル' = > $this → l (' 承認ストライプ接続)
、'url' = > 'https://connect.stripe.com/oauth/authorize'
、「ツールチップ」= > $this → l (ここをクリック」を承認またはこの市場のプラットフォームと接続するストライプ アカウントを再承認する)
             ),
      ),

'info1' = > 配列 ('label' = > $this → l ('API ログイン ID') 'is_unique' = > 1、'is_readonly' > 0、'ヒント' を = = > $this → l (、ρ の ' の説明'))、
'info2' = > 配列 ('label' = > $this → l (' トランザクションのキー ') 'is_unique' = > 1、 'is_readonly' = > 1、「ツールチップ」= > $this → l (、ρ ' の説明')),
'info3' = > 配列 ('label' = > 'なし'、'is_unique' = > 0、'is_readonly' = > 0、'ヒント' = > '),

'info4' = > 配列 ('label' = > 'なし'、'is_unique' = > 0,'is_readonly' = > 0、'ヒント' = > '),
'info5' = > 配列 ('label' = > 'なし'、'is_unique' = > 0,'is_readonly' = > 0、'ヒント' = > '),
'info6' = > 配列 ('label' = > 'なし'、'is_unique' = > 0,'is_readonly' = > 0、'ヒント' = > '),
'info7' = > 配列 ('label' = > 'なし'、'is_unique' = > 0,'is_readonly' = > 0、'ヒント' = > '),
'info8' = > 配列 ('label' = > 'なし'、'is_unique' = > 0,'is_readonly' = > 0、'ヒント' = > '),
    );
}

seller payment setting screen - integrated module

フック メソッドの上を提供する次のアジャイルに情報複数の売り手のモジュール。
-モジュール (内部名) の名前
-モジュール (モジュールの表示名) の説明
-利用可能な支払いコレクション モードでモジュールがサポート
-お支払い情報を売主は、このモジュールを介してバイヤーからの支払いを収集するために提供しています。これは通常あなたのモジュールのコンフィグレーションのフィールド。使用可能な最大 8 フィールドがあります。必要なフィールドの番号は、支払いモジュールに依存します。

ほとんどの場合本店はいつか同じであるが、売り手から別のお礼に情報フィールドです。たとえば、アジャイル Authorize.NET モジュールは、上記のサンプル コードで定義されている次の 2 つのフィールド必要があります。
-API ログ ID
-トランザクションのキー

フィールドのラベルを定義し、また指定フィールドに新しいお支払い情報を追加する売主が検査されます一意なフィールドの一部であるかどうかがあります。モジュールは、is_unique 値 1 を持つフィールドを使用して、お支払い情報が他の売り手の重複を避けるのと同じことが確認されます。

メモ
それは方法のコードを保管してください、のみ、ラベルが複数の言語をサポートできるようになり、フィールド名をバック オフィス - ローカライズ - トランザクション] タブで別の言語に翻訳することができます値を変更

5. お支払い情報フィールド検証コントロール (オプション) を準備しなさい
各売り手は、ストア (または) バイヤーからの支払いを受け、お支払い情報を入力する必要があります。各フィールドを検証する必要がある可能性がありますその売り手に入る有効なデータです。たとえば、それがペイパル モジュールの場合「info1」の最初のフィールドを検証するその売主は有効な電子メール アドレス。

支払いモジュールの検証の例を示します。

パブリック関数 validatePaymentInfoFields($paymentinfo)
{
$errors = array();
   
if(empty($paymentinfo)) $errors = $this → l ('無効な支払い情報');

$info1 = (is_array($paymentinfo)? $paymentinfo ['info1']: $paymentinfo -> info1);
場合があります。Validate::isEmail($info1)) $errors = $this → 名。":" .$this は → l ('Paypl メール アドレス') です。$this → l ('は無効です');

リターン $errors;
}


6. 処理支払いと validateOrder() - 順序を作成します。
支払いモジュールを統合するために支払いモジュールは PrestaShop チェック アウトと注文支払いに関する処理の標準的な手順を従う必要があります。ここでは、注文の支払いに関連するプロセスです。

= = > A. 取得支払情報 = = > B. 実行支払 = = > c. ValidateOrder(Create Order data)

支払データを取得します。

支払いデータ次の Agiile 変化売り手を受信するモジュールのメソッド呼び出しする必要があります。

$payments = AgileMultipleSeller::get_payment_info_from_cart();

モジュール、支払のコレクション モードに基づく支払データ情報を配列で返します。配列の各要素は、次情報

-配列のキーとして $id_seller
-' メール」: 受信者 (売り手) メール アドレス (売り手またはストア)、たとえば、[email protected]
-'量': 受信者の量必要があります受信、たとえば、$230.00
-'委員会': を支払う売り手や受信するストアの手数料

メモ
: ショッピング カート通貨の量は、支払い getway に送信する前にあなたの支払いモジュールの指定した通貨に変換する必要があります。

以下、支払いモジュールの支払データを表示するサンプル コードです。

$payments = AgileMultipleSeller::get_payment_info_from_cart();
foreach ($payments $id_seller = > $payment)
{
... 決済コード
}

$this → validateOrder(...)
 

お支払い処理のためのコードは、別のお支払いモジュールの異なるでしょう。支払いを実行する方法を決定するためのままにします。我々 はまた支払のエラーを処理するため処理を残します。たとえば、1 つのショッピング カート内に複数の売り手が存在する場合は、いくつかの売り手の支払いが失敗した場合の処理をする必要があります。いくつかのクレジット支払サポート 2 ステップをカート - まず支払いを承認し、支払いを終了する量をキャプチャ、まずすべての売り手の支払いを承認するし、validateOrder() し、「キャプチャ」支払いを確定するをお勧めします。

メモ:

支払いゲートウェイによって支払い先が売り手の場合ストアの代わりの必要資格情報 API など出品者の支払の情報があります。次のコードを使用して売り手の支払いを取得できます (資格情報 API) などの決済モジュールについて。

include_once (_PS_ROOT_DIR_。"/modules/agilemultipleseller/AgileSellerPaymentInfo.php");
$paymentinfo = AgileSellerPaymentInfo::getForSellerByModuleName (これは ->$ 名, $id_seller);




統合と楽しい時を過します。