バージョン選択

フォーラム

メニュー

オンライン状況

61 人のユーザが現在オンラインです。 (52 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 61
もっと...

サイト内検索

質問 > フロント機能 > ヤマトフィナンシャル後払いサービスとクーポンプラグイン併用時の不具合回避について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
antiageing
投稿日時: 2019/1/16 19:38
対応状況: −−−
新米
登録日: 2019/1/16
居住地:
投稿: 1
ヤマトフィナンシャル後払いサービスとクーポンプラグイン併用時の不具合回避について
▼テンプレート
[EC-CUBE]
・EC-CUBE2.13.2
[OS]
・CentOS Linux release 7.3.1611 (Core)
[PHP]
・PHP 5.4.16
[導入プラグインの有無]
・クロネコヤマト カード・後払い一体型決済モジュール(2.13-2.12系) Version.2.1.3 2018/12/25
・割引クーポンプラグイン 1.6 (by 株式会社シード)
[現象]
割引クーポンプラグインのプラグインを使用し、クロネコヤマト後払いで支払いをするとエラーになります。

フロント画面のエラー内容
↓↓↓↓↓
後払い決済の与信を行いましたが、大変申し訳ございません、今回のご注文分に関してはお取扱いできません。
お手数ですが、下にある「戻る」ボタンで決済画面に戻っていただき、後払い以外の別の決済手段にて再度
ご注文いただけますようお願いいたします。
※なお、ブラウザの「Back」ボタンを押して戻られますと、確認画面に戻ってしまいますのでご注意ください。
決済処理でエラーが発生しました。
↑↑↑↑↑


ログを確認したところ、下記のエラーが出ていました。

mdl_yfc_paymentapi_YYYYMMDD.logの内容
↓↓↓↓↓
2019/01/16 16:05:07 [/store/dailycare/shopping/load_payment_module.php] user=xxx: Response:200 from zzz.zzz.zzz.zzz
2019/01/16 16:05:07 [/store/dailycare/shopping/load_payment_module.php] user=xxx: 決済金額総計と、購入商品小計の合計金額が一致しません。 from zzz.zzz.zzz.zzz
↑↑↑↑↑

決済モジュールで決済金額総計と購入商品小計の合計金額をチェックして一致しないためエラーが出ているのはわかりますが、どこでチェックされているかがわかりません。
→クーポンを適用しているため決済金額総計と購入商品小計の合計金額が合わないのは当たり前なのでこの辺を改修したいと思っております。

有識者の方、ご教授頂けると幸いです。

宜しくお願いします。





468
投稿日時: 2019/1/17 11:46
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: ヤマトフィナンシャル後払いサービスとクーポンプラグイン併用時の不具合回避について
該当モジュールを手元に持っている方がどれだけいらっしゃるか分かりませんので、
ご自身でモジュール内のソース一式に対して、
「決済金額総計と、購入商品小計の合計金額が一致しません。」のメッセージを元に探されるのが早いかと思います。
あくまで予想ですが、そのメッセージの近くでif判定を行なっているのではないかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

Ringo
投稿日時: 2019/1/17 17:59
対応状況: −−−
常連
登録日: 2018/8/10
居住地:
投稿: 70
Re: ヤマトフィナンシャル後払いサービスとクーポンプラグイン併用時の不具合回避について
※各位:プラグイン内で「word検索」しただけの結果ですので、間違ってたらフォロー願います。
 and 「下記」は、あまり、役に立たない情報かも。(理由:sessionと思ってるけど、そうでもない様なので)

「割引クーポンプラグイン」の決済時「購入品名・金額」画面を見ると、

>決済モジュールで決済金額総計と購入商品小計の合計金額をチェックして一致しないためエラーが出ているのはわかりますが、

ですね。

>どこでチェックされているかがわかりません。



>後払い決済の与信を行いましたが。。。

の結果が

>Response:200 from zzz.zzz.zzz.zzz
>決済金額総計と、購入商品小計の合計金額が一致しません。 from zzz.zzz.zzz.zzz

なので、チェックは「zzz.zzz.zzz.zzz」での「与信チェック」で「判定:否」となっているのではないでしょうか。

上記情報から、検索してみて、

class/client/SC_Mdl_YFCApi_Client_Base.php

    /**
     * リクエスト
     * @param string $url API URL
     * @param array $arrSendData 送信データ
     * @return bool リクエスト結果
     */
    function sendRequest($url, $arrSendData) {
        //決済基本クラス取得
        $objMdl =& SC_Mdl_YFCApi_Ex::getInstance();
        //送信パラメタのロギング
        $objMdl->printLog('SendRequest:' . $url);
        $objMdl->printLog($arrSendData);
        //通信実行
        $options = array('timeout' => MDL_YFCAPI_HTTP_TIMEOUT);
        $objReq = new HTTP_Request($url, $options);
        $objReq->setMethod('POST');
        foreach ($arrSendData as $key => $value) {
            $objReq->addPostData($key, mb_convert_encoding($value, 'UTF-8'));
        }
        $ret = $objReq->sendRequest();

        //PEARチェック
        if (PEAR::isError($ret)) {
            $msg = '通信エラー:' . $ret->getMessage();
            $this->setError($msg);
            return false;
        }

        //HTTPレスポンスチェック
        $code = $objReq->getResponseCode();
        $objMdl->printLog('Response:' . $code);
        switch ($code) {
            case 200:
                break;
            default:
                $msg = 'HTTPレスポンスエラー:CODE:' . $code;
                $this->setError($msg);
                return false;
                break;
        }
        
         //レスポンス内容チェック
        $response_body = $objReq->getResponseBody();
        if (SC_Utils_Ex::isBlank($response_body)) {
            $msg = 'レスポンスデータエラー: レスポンスがありません。';
            $this->setError($msg);
            return false;
        }

        //レスポンスボディをパース
        $arrRet = $this->parseResponse($response_body);
        $this->setResults($arrRet);

        //エラー確認
        if (!SC_Utils_Ex::isBlank($this->getError())) {
            return false;
        }
        return true;
    }



が、↓に、どう連携しているのかまでは追えていませんが、(結構、ややこしかったので、断念。)

files¥code¥error.txt
kaara101E 決済金額総計と、購入商品小計の合計金額が一致しません。

(本エラーのlogへの書出しまでの処理は置いておいて)結局は、

$objFormParam->addParam('購入商品小計'.$i, 'subTotal'.$i);
の一つで「割引クーポン金額」を引いて「与信」を掛けるしかないんじゃないでしょうか?
※じゃぁ「の一つで「割引クーポン金額」を引いて」をどうするか、、、ですが、
 確か、カート内はsessionに情報を持っていたと記憶しているので、
 「割引クーポンプラグイン」での「クーポン利用料」を「LC_PageHelper_Mdl_YFCApi_Deferred.php」の
 $objFormParam->addParam('購入商品小計'.$i, 'subTotal'.$i);
 の「一つから引く」のかなぁ。。。でも、ここは、sessionではない様な、、、はて?、、、です。

class/pages/helper/LC_PageHelper_Mdl_YFCApi_Deferred.php

    /**
     * パラメーター情報の初期化を行う.
     *
     * @param SC_FormParam_Ex $objFormParam SC_FormParam_Ex インスタンス
     * @param array $arrPaymentInfo モジュール設定情報
     * @param array $arrOrder 受注情報
     * @return void
     */
    function initParam(&$objFormParam, &$arrPaymentInfo, &$arrOrder)
    {
        $objFormParam->addParam('加盟店コード', 'ycfStrCode', 11, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('受注番号', 'orderNo', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('受注日', 'orderYmd', 8, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('出荷予定日', 'shipYmd', 8, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('氏名', 'name', 30, MDL_YFCAPI_CONV_OP_DOUBLE, array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('氏名カナ', 'nameKana', 80, 'k', array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('郵便番号', 'postCode', 7, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('住所1', 'address1', 25, MDL_YFCAPI_CONV_OP_DOUBLE, array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('住所2', 'address2', 25, MDL_YFCAPI_CONV_OP_DOUBLE, array('MAX_LENGTH_CHECK'));
        $objFormParam->addParam('電話番号', 'telNum', 11, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('メールアドレス', 'email', 64, 'a', array('MAX_LENGTH_CHECK', 'EMAIL_CHECK'));
        $objFormParam->addParam('決済金額総計', 'totalAmount', 6, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('送り先区分', 'sendDiv', 1, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('カート社識別コード', 'cartCode', 20, 'a', array('MAX_LENGTH_CHECK'));
        $detail_cnt = SC_Util_Mdl_YFCApi_Ex::getCountDetailDeferred($arrOrder);
        for($i = 1; $i <= $detail_cnt; $i++){
            $objFormParam->addParam('購入商品名称'.$i, 'itemName'.$i, 30, MDL_YFCAPI_CONV_OP_DOUBLE, array('MAX_LENGTH_CHECK'));
            $objFormParam->addParam('購入商品数量'.$i, 'itemCount'.$i, 4, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'));
            $objFormParam->addParam('購入商品単価'.$i, 'unitPrice'.$i);
            $objFormParam->addParam('購入商品小計'.$i, 'subTotal'.$i);
            // 購入者商品名称1は必須
            if ($i == 1) {
                $objFormParam->overwriteParam('itemName1', 'arrCheck', array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
            }
        }
        
    ...


468
投稿日時: 2019/1/18 10:26
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: ヤマトフィナンシャル後払いサービスとクーポンプラグイン併用時の不具合回避について
モジュールの確認ありがとうございます。
クロネコヤマト側のチェックでエラーになっているようなので、
送るデータで調整するしかないという事ですね。

購入までの画面遷移が分からないので、
予想ですが、クロネコヤマトに送信するデータは、
dtb_orderテーブルとdtb_order_detailテーブルのデータを利用しているのではないでしょうか?
(与信を行う時には、受注データをすでにカート→DBに格納しているのでは?)

もし、DBからのデータを利用しているのであれば、
$objFormParamにデータをセットするところで、
dtb_orderテーブルのdiscountカラムの値を利用すれば、
計算できるのではないかと思いました。
それか明細行を1行増やす処理を追加する方法もあるかと思います。
例えば、
購入商品名称=クーポン利用割引
購入商品数量=1
購入商品単価=-100
のようなデータを追加するイメージです。
※クロネコヤマトのAPI側で購入商品単価のマイナスが許可されているか分かりませんが...


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

Ringo
投稿日時: 2019/1/18 12:49
対応状況: −−−
常連
登録日: 2018/8/10
居住地:
投稿: 70
Re: ヤマトフィナンシャル後払いサービスとクーポンプラグイン併用時の不具合回避について
小生も、コードを見た感じでは、

>予想ですが、クロネコヤマトに送信するデータは、
>dtb_orderテーブルとdtb_order_detailテーブルのデータを利用しているのではないでしょうか?
>(与信を行う時には、受注データをすでにカート→DBに格納しているのでは?)

ではないかと感じました、、、が、まだ、裏を取る時間が取れていません。

>もし、DBからのデータを利用しているのであれば、
>$objFormParamにデータをセットするところで、
>dtb_orderテーブルのdiscountカラムの値を利用すれば、
>計算できるのではないかと思いました。

予想としては↑な感じがします。

>それか明細行を1行増やす処理を追加する方法もあるかと思います。

これは、良い案かもしれません。

>購入商品名称=クーポン利用割引
>購入商品数量=1
>購入商品単価=-100
>のようなデータを追加するイメージです。

>※クロネコヤマトのAPI側で購入商品単価のマイナスが許可されているか分かりませんが...

error.txtを見ると

「単価」「小計」は『数値 or 「-」』

を許してしいるので、上記の考えで「与信」は通過させられそうです。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,854名です
総投稿数は109,989件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1291
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.