From e38aabab9cef86d99b0e4e83ae19022bccf46749 Mon Sep 17 00:00:00 2001 From: Ruk Doe Date: Sat, 29 Jul 2023 19:22:01 +0900 Subject: [PATCH 1/6] refactor and fix dev env --- .idea/.gitignore | 8 + .idea/UnivaPay-for-EC-CUBE4.iml | 9 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/php.xml | 66 +++++ .idea/remote-mappings.xml | 10 + .idea/vcs.xml | 6 + README.md | 20 +- .../Controller/Admin/ConfigController.php | 2 +- .../Controller/SubscriptionController.php | 269 +++++++++--------- UnivaPay/Resource/template/admin/config.twig | 2 +- UnivaPay/Util/SDK.php | 5 +- UnivaPay/composer.json | 2 +- docker-compose.sample.yml | 12 +- 14 files changed, 269 insertions(+), 156 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/UnivaPay-for-EC-CUBE4.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/php.xml create mode 100644 .idea/remote-mappings.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..1c2fda5 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/UnivaPay-for-EC-CUBE4.iml b/.idea/UnivaPay-for-EC-CUBE4.iml new file mode 100644 index 0000000..18ec59d --- /dev/null +++ b/.idea/UnivaPay-for-EC-CUBE4.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..9715c22 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..2aba40b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml new file mode 100644 index 0000000..4b59a7e --- /dev/null +++ b/.idea/php.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + /etc/php7/conf.d/00_ctype.ini, /etc/php7/conf.d/00_curl.ini, /etc/php7/conf.d/00_dom.ini, /etc/php7/conf.d/00_fileinfo.ini, /etc/php7/conf.d/00_iconv.ini, /etc/php7/conf.d/00_intl.ini, /etc/php7/conf.d/00_json.ini, /etc/php7/conf.d/00_mbstring.ini, /etc/php7/conf.d/00_opcache.ini, /etc/php7/conf.d/00_openssl.ini, /etc/php7/conf.d/00_pdo.ini, /etc/php7/conf.d/00_session.ini, /etc/php7/conf.d/00_simplexml.ini, /etc/php7/conf.d/00_tokenizer.ini, /etc/php7/conf.d/00_xml.ini, /etc/php7/conf.d/00_xmlwriter.ini, /etc/php7/conf.d/00_zip.ini, /etc/php7/conf.d/01_pdo_pgsql.ini, /etc/php7/conf.d/01_phar.ini + /etc/php7/php.ini + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/remote-mappings.xml b/.idea/remote-mappings.xml new file mode 100644 index 0000000..24e8968 --- /dev/null +++ b/.idea/remote-mappings.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..c8397c9 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index c6d05e5..ae16767 100755 --- a/README.md +++ b/README.md @@ -9,31 +9,25 @@ UnivaPayの申し込み方法 ## 開発環境 -### 一般向け - -1. 下記を参照にEC-CUBEを構築してください。 - -2. EC-CUBE管理画面よりプラグインをインストール -3. プラグインの設定画面よりSDKをインストール - -### 管理者向け - ```sh git clone https://github.com/univapaycast/UnivaPay-for-EC-CUBE4.git -cd EC-UnivaPay-for-EC-CUBE4 +cd UnivaPay-for-EC-CUBE4 cp docker-compose.sample.yml docker-compose.yml docker compose up -d -docker compose exec web sh -c "composer run-script compile && bin/console eccube:install -n" -docker compose exec web sh -c "bin/console eccube:composer:require univapay/php-sdk && bin/console eccube:plugin:install --code=UnivaPay && bin/console eccube:plugin:enable --code=UnivaPay" +docker compose exec web sh -c "bin/console eccube:install -n" +docker compose exec web sh -c "bin/console eccube:composer:require univapay/php-sdk" +docker compose exec web sh -c "bin/console eccube:plugin:install --code=UnivaPay && bin/console eccube:plugin:enable --code=UnivaPay && bin/console cache:clear" ``` + + #### データベース更新したとき ```sh docker compose exec web sh -c "bin/console eccube:install -n && bin/console eccube:plugin:install --code=UnivaPay && bin/console eccube:plugin:enable --code=UnivaPay" ``` -#### アップデート手順 +#### 管理者向けアップデート手順 1. composer.json内のversionを上げる 2. masterにコミット後github内でバージョンタグの作成 diff --git a/UnivaPay/Controller/Admin/ConfigController.php b/UnivaPay/Controller/Admin/ConfigController.php index a790eb9..9831e57 100755 --- a/UnivaPay/Controller/Admin/ConfigController.php +++ b/UnivaPay/Controller/Admin/ConfigController.php @@ -64,7 +64,7 @@ public function index(Request $request) */ public function sdk(Request $request) { try { - $log = $this->composerService->execRequire('univapay/php-sdk:6.2.1'); + $log = $this->composerService->execRequire('univapay/php-sdk:6.5.0'); return $this->redirectToRoute('univa_pay_admin_config', ['error' => 0]); } catch (Exception $e) { return $this->redirectToRoute('univa_pay_admin_config', ['error' => 1]); diff --git a/UnivaPay/Controller/SubscriptionController.php b/UnivaPay/Controller/SubscriptionController.php index 18dd2a5..f6c5d7c 100755 --- a/UnivaPay/Controller/SubscriptionController.php +++ b/UnivaPay/Controller/SubscriptionController.php @@ -1,24 +1,24 @@ getContent()); - if($data->event === 'subscription_payment' || $data->event === 'subscription_failure') { - $existOrder = $this->Order->findOneBy(["order_no" => $data->data->metadata->orderNo]); - if(!is_null($existOrder) && $existOrder->getUnivapayChargeId()) { - $config = $this->Config->findOneById(1); - $util = new SDK($config); - // SubscriptionIdからChargeを取得 - $charge = $util->getchargeBySubscriptionId($data->data->id); - // 再課金待ちもしくは初回課金の場合は何もしない - if($data->data->status !== 'unpaid' && $charge->id !== $existOrder->getUnivapayChargeId()) { - // cloneで注文を複製してもidが変更できないため一から作成 - $newOrder = new Order; - // 今回での決済の課金ID取得 - $newOrder->setUnivapayChargeId($charge->id); - $newOrder->setUnivapaySubscriptionId($existOrder->getUnivapaySubscriptionId()); - $newOrder->setMessage($existOrder->getMessage()); - $newOrder->setName01($existOrder->getName01()); - $newOrder->setName02($existOrder->getName02()); - $newOrder->setKana01($existOrder->getKana01()); - $newOrder->setKana02($existOrder->getKana02()); - $newOrder->setCompanyName($existOrder->getCompanyName()); - $newOrder->setEmail($existOrder->getEmail()); - $newOrder->setPhoneNumber($existOrder->getPhoneNumber()); - $newOrder->setPostalCode($existOrder->getPostalCode()); - $newOrder->setAddr01($existOrder->getAddr01()); - $newOrder->setAddr02($existOrder->getAddr02()); - $newOrder->setBirth($existOrder->getBirth()); - // 今回決済金額から小計を逆算 - $newSubtotal = $existOrder->getSubtotal() - $existOrder->getTotal() + $data->data->amount - $existOrder->getDiscount(); - $newOrder->setSubtotal($newSubtotal); - // 割引無効化 - $newOrder->setDiscount(0); - $newOrder->setDeliveryFeeTotal($existOrder->getDeliveryFeeTotal()); - $newOrder->setCharge($existOrder->getCharge()); - $newOrder->setTax($existOrder->getTax()); - // 二回目以降の決済金額が違う場合があるため変更 - $newOrder->setTotal($data->data->amount); - $newOrder->setPaymentTotal($data->data->amount); - $newOrder->setPaymentMethod($existOrder->getPaymentMethod()); - $newOrder->setNote($existOrder->getNote()); - $newOrder->setCurrencyCode($existOrder->getCurrencyCode()); - $newOrder->setCompleteMessage($existOrder->getCompleteMessage()); - $newOrder->setCompleteMailMessage($existOrder->getCompleteMailMessage()); - // 決済日を今日に変更 - $newOrder->setPaymentDate(new \DateTime()); - $newOrder->setCustomer($existOrder->getCustomer()); - $newOrder->setCountry($existOrder->getCountry()); - $newOrder->setPref($existOrder->getPref()); - $newOrder->setSex($existOrder->getSex()); - $newOrder->setJob($existOrder->getJob()); - $newOrder->setPayment($existOrder->getPayment()); - $newOrder->setDeviceType($existOrder->getDeviceType()); - $newOrder->setCustomerOrderStatus($existOrder->getCustomerOrderStatus()); - $newOrder->setOrderStatusColor($existOrder->getOrderStatusColor()); - // 商品ごとの今回課金金額を取得 - $amount = json_decode($existOrder->getUnivapayChargeAmount()); - // 商品金額が存在しなかったらその時点のデータを作成する - if(!$amount) { - $items = []; - foreach($existOrder->getOrderItems() as $value) { - // 商品単位で金額を取得 - if($value->isProduct()) { - $class = $value->getProductClass(); - $items[$class->getId()] = ['price' => $class->getPrice01(), 'tax' => $class->getPrice01IncTax() - $class->getPrice01()]; - } - } - $newOrder->setUnivapayChargeAmount(json_encode($items)); - $amount = json_decode($newOrder->getUnivapayChargeAmount()); - } - $amount = get_object_vars($amount); - foreach($existOrder->getOrderItems() as $value) { - $newOrderItem = clone $value; - // 値引きは引き継がない - if($newOrderItem->isDiscount() || $newOrderItem->isPoint()) - continue; - // OrderItemごとの金額を修正する - if($newOrderItem->isProduct()) { - // 二回目は通常金額を取得する - $class = $newOrderItem->getProductClass(); - $newOrderItem->setPrice($amount[$class->getId()]->price); - $newOrderItem->setTax($amount[$class->getId()]->tax); - } - $newOrderItem->setOrder($newOrder); - $newOrder->addOrderItem($newOrderItem); + $existOrder = $this->Order->findOneBy(["order_no" => $data->data->metadata->orderNo]); + if (is_null($existOrder)) + return new Response(); + + $config = $this->Config->findOneById(1); + $util = new SDK($config); + $charge = null; + if ($data->event === 'subscription_payment' || $data->event === 'subscription_failure') { + // SubscriptionIdからChargeを取得 + $charge = $util->getchargeBySubscriptionId($data->data->id); + } elseif ( $data->event === 'charge_finished') { + $charge = $util->getCharge($data->data->id); + } + if (is_null($charge)) + return new Response(); + // 再課金待ちもしくは初回課金の場合は何もしない + if($data->data->status !== 'unpaid' && $charge->id !== $existOrder->getUnivapayChargeId()) { + // cloneで注文を複製してもidが変更できないため一から作成 + $newOrder = new Order; + // 今回での決済の課金ID取得 + $newOrder->setUnivapayChargeId($charge->id); + $newOrder->setUnivapaySubscriptionId($existOrder->getUnivapaySubscriptionId()); + $newOrder->setMessage($existOrder->getMessage()); + $newOrder->setName01($existOrder->getName01()); + $newOrder->setName02($existOrder->getName02()); + $newOrder->setKana01($existOrder->getKana01()); + $newOrder->setKana02($existOrder->getKana02()); + $newOrder->setCompanyName($existOrder->getCompanyName()); + $newOrder->setEmail($existOrder->getEmail()); + $newOrder->setPhoneNumber($existOrder->getPhoneNumber()); + $newOrder->setPostalCode($existOrder->getPostalCode()); + $newOrder->setAddr01($existOrder->getAddr01()); + $newOrder->setAddr02($existOrder->getAddr02()); + $newOrder->setBirth($existOrder->getBirth()); + // 今回決済金額から小計を逆算 + $newSubtotal = $existOrder->getSubtotal() - $existOrder->getTotal() + $data->data->amount - $existOrder->getDiscount(); + $newOrder->setSubtotal($newSubtotal); + // 割引無効化 + $newOrder->setDiscount(0); + $newOrder->setDeliveryFeeTotal($existOrder->getDeliveryFeeTotal()); + $newOrder->setCharge($existOrder->getCharge()); + $newOrder->setTax($existOrder->getTax()); + // 二回目以降の決済金額が違う場合があるため変更 + $newOrder->setTotal($data->data->amount); + $newOrder->setPaymentTotal($data->data->amount); + $newOrder->setPaymentMethod($existOrder->getPaymentMethod()); + $newOrder->setNote($existOrder->getNote()); + $newOrder->setCurrencyCode($existOrder->getCurrencyCode()); + $newOrder->setCompleteMessage($existOrder->getCompleteMessage()); + $newOrder->setCompleteMailMessage($existOrder->getCompleteMailMessage()); + // 決済日を今日に変更 + $newOrder->setPaymentDate(new \DateTime()); + $newOrder->setCustomer($existOrder->getCustomer()); + $newOrder->setCountry($existOrder->getCountry()); + $newOrder->setPref($existOrder->getPref()); + $newOrder->setSex($existOrder->getSex()); + $newOrder->setJob($existOrder->getJob()); + $newOrder->setPayment($existOrder->getPayment()); + $newOrder->setDeviceType($existOrder->getDeviceType()); + $newOrder->setCustomerOrderStatus($existOrder->getCustomerOrderStatus()); + $newOrder->setOrderStatusColor($existOrder->getOrderStatusColor()); + // 商品ごとの今回課金金額を取得 + $amount = json_decode($existOrder->getUnivapayChargeAmount()); + // 商品金額が存在しなかったらその時点のデータを作成する + if(!$amount) { + $items = []; + foreach($existOrder->getOrderItems() as $value) { + // 商品単位で金額を取得 + if($value->isProduct()) { + $class = $value->getProductClass(); + $items[$class->getId()] = ['price' => $class->getPrice01(), 'tax' => $class->getPrice01IncTax() - $class->getPrice01()]; } - foreach($existOrder->getShippings() as $value) { - $newShipping = clone $value; - $newShipping->setShippingDeliveryDate(NULL); - $newShipping->setShippingDeliveryTime(NULL); - $newShipping->setTimeId(NULL); - $newShipping->setShippingDate(NULL); - $newShipping->setTrackingNumber(NULL); - $newShipping->setOrder($newOrder); - // 循環参照してしまい正常に発送データがセットできないため - foreach($newShipping->getOrderItems() as $v) { - $newShipping->removeOrderItem($v); - } - foreach($newOrder->getOrderItems() as $v) { - if($v->getShipping() && $v->getShipping()->getId() == $value->getId()) { - $v->setShipping($newShipping); - $newShipping->addOrderItem($v); - } - } - $newOrder->addShipping($newShipping); + } + $newOrder->setUnivapayChargeAmount(json_encode($items)); + $amount = json_decode($newOrder->getUnivapayChargeAmount()); + } + $amount = get_object_vars($amount); + foreach($existOrder->getOrderItems() as $value) { + $newOrderItem = clone $value; + // 値引きは引き継がない + if($newOrderItem->isDiscount() || $newOrderItem->isPoint()) + continue; + // OrderItemごとの金額を修正する + if($newOrderItem->isProduct()) { + // 二回目は通常金額を取得する + $class = $newOrderItem->getProductClass(); + $newOrderItem->setPrice($amount[$class->getId()]->price); + $newOrderItem->setTax($amount[$class->getId()]->tax); + } + $newOrderItem->setOrder($newOrder); + $newOrder->addOrderItem($newOrderItem); + } + foreach($existOrder->getShippings() as $value) { + $newShipping = clone $value; + $newShipping->setShippingDeliveryDate(NULL); + $newShipping->setShippingDeliveryTime(NULL); + $newShipping->setTimeId(NULL); + $newShipping->setShippingDate(NULL); + $newShipping->setTrackingNumber(NULL); + $newShipping->setOrder($newOrder); + // 循環参照してしまい正常に発送データがセットできないため + foreach($newShipping->getOrderItems() as $v) { + $newShipping->removeOrderItem($v); + } + foreach($newOrder->getOrderItems() as $v) { + if($v->getShipping() && $v->getShipping()->getId() == $value->getId()) { + $v->setShipping($newShipping); + $newShipping->addOrderItem($v); } - $purchaseContext = new PurchaseContext($newOrder, $newOrder->getCustomer()); - // ポイントを再計算4.0以前のバージョンの場合、先にポイントを再計算を行わないと正常に動かない - $this->addPointProcessor->validate($newOrder, $purchaseContext); - // 注文番号変更 - $preOrderId = $this->orderHelper->createPreOrderId(); - $newOrder->setPreOrderId($preOrderId); - // 購入処理を完了 - $this->purchaseFlow->prepare($newOrder, $purchaseContext); - $this->purchaseFlow->commit($newOrder, $purchaseContext); - $this->entityManager->persist($newOrder); - // 注文番号が重複しないように再採番 - $this->entityManager->flush(); - $this->orderNoProcessor->process($newOrder, $purchaseContext); - $this->entityManager->flush(); - // 定期課金に失敗した場合はキャンセル済み注文に変更 - $OrderStatus = $this->orderStatusRepository->find($data->data->status === 'suspended' ? OrderStatus::CANCEL : OrderStatus::PAID); - $newOrder->setOrderStatus($OrderStatus); - if($config->getMail()) - $this->mailService->sendOrderMail($newOrder); - $this->entityManager->flush(); } + $newOrder->addShipping($newShipping); } + $purchaseContext = new PurchaseContext($newOrder, $newOrder->getCustomer()); + // ポイントを再計算4.0以前のバージョンの場合、先にポイントを再計算を行わないと正常に動かない + $this->addPointProcessor->validate($newOrder, $purchaseContext); + // 注文番号変更 + $preOrderId = $this->orderHelper->createPreOrderId(); + $newOrder->setPreOrderId($preOrderId); + // 購入処理を完了 + $this->purchaseFlow->prepare($newOrder, $purchaseContext); + $this->purchaseFlow->commit($newOrder, $purchaseContext); + $this->entityManager->persist($newOrder); + // 注文番号が重複しないように再採番 + $this->entityManager->flush(); + $this->orderNoProcessor->process($newOrder, $purchaseContext); + $this->entityManager->flush(); + // 定期課金に失敗した場合はキャンセル済み注文に変更 + $OrderStatus = $this->orderStatusRepository->find($data->data->status === 'suspended' ? OrderStatus::CANCEL : OrderStatus::PAID); + $newOrder->setOrderStatus($OrderStatus); + if($config->getMail()) + $this->mailService->sendOrderMail($newOrder); + $this->entityManager->flush(); } - return new Response('', Response::HTTP_OK, array('Content-Type' => 'text/plain; charset=utf-8')); } /** diff --git a/UnivaPay/Resource/template/admin/config.twig b/UnivaPay/Resource/template/admin/config.twig index a738cfc..bc8e141 100755 --- a/UnivaPay/Resource/template/admin/config.twig +++ b/UnivaPay/Resource/template/admin/config.twig @@ -17,7 +17,7 @@ if(error === '0') { alert("インストールに成功しました。"); } else if(error === '1') { - alert("インストールができませんでした。サーバ内で下記コマンドを実行してください。\nbin/console eccube:composer:require univapay/php-sdk:6.2.1"); + alert("インストールができませんでした。サーバ内で下記コマンドを実行してください。\nbin/console eccube:composer:require univapay/php-sdk:6.5.0"); }
diff --git a/UnivaPay/Util/SDK.php b/UnivaPay/Util/SDK.php index 07166fb..5c7c87d 100755 --- a/UnivaPay/Util/SDK.php +++ b/UnivaPay/Util/SDK.php @@ -1,9 +1,10 @@ getApiUrl()); diff --git a/UnivaPay/composer.json b/UnivaPay/composer.json index eb5d320..d8b043f 100755 --- a/UnivaPay/composer.json +++ b/UnivaPay/composer.json @@ -8,6 +8,6 @@ }, "require": { "ec-cube/plugin-installer": "~0.0.6 || ^2.0", - "univapay/php-sdk": ">=6.2.1" + "univapay/php-sdk": ">=6.5.0" } } diff --git a/docker-compose.sample.yml b/docker-compose.sample.yml index 1b8b016..12e5186 100644 --- a/docker-compose.sample.yml +++ b/docker-compose.sample.yml @@ -1,10 +1,10 @@ -version: "3.8" +version: "3.9" services: web: - image: ghcr.io/univapaycast/ec-cube4-for-univapay:latest + image: ghcr.io/5ym/ec-cube:4.1 ports: - - 1080:80 + - "1080:80" environment: - APP_ENV=dev - APP_DEBUG=1 @@ -21,7 +21,8 @@ services: - ECCUBE_LOCALE=ja volumes: - "./UnivaPay:/var/lib/nginx/html/app/Plugin/UnivaPay" - + depends_on: + - db db: image: postgres:10 environment: @@ -29,11 +30,10 @@ services: POSTGRES_PASSWORD: password volumes: - db:/var/lib/postgresql/data - mail: image: mailhog/mailhog ports: - - 2080:8025 + - "2080:8025" volumes: db: \ No newline at end of file From 5827adcc052dc084b4c36e51ac30d54b4799a578 Mon Sep 17 00:00:00 2001 From: Ruk Doe Date: Sat, 29 Jul 2023 19:53:59 +0900 Subject: [PATCH 2/6] fix payment status and webhook --- .../Controller/SubscriptionController.php | 233 +++++++++--------- UnivaPay/Service/Method/CreditCard.php | 6 +- 2 files changed, 124 insertions(+), 115 deletions(-) diff --git a/UnivaPay/Controller/SubscriptionController.php b/UnivaPay/Controller/SubscriptionController.php index f6c5d7c..255fb77 100755 --- a/UnivaPay/Controller/SubscriptionController.php +++ b/UnivaPay/Controller/SubscriptionController.php @@ -100,128 +100,137 @@ public function hook(Request $request) // SubscriptionIdからChargeを取得 $charge = $util->getchargeBySubscriptionId($data->data->id); } elseif ( $data->event === 'charge_finished') { - $charge = $util->getCharge($data->data->id); + // 支払い確定したら注文ステータスを変更する + // セキュリティのために一様UUIDを確認する + if ($data->data->id !== $existOrder->getUnivapayChargeId()) + return new Response(); + $OrderStatus = $this->orderStatusRepository->find(OrderStatus::PAID); + $existOrder->setOrderStatus($OrderStatus); + $existOrder->setPaymentDate(new \DateTime()); + $this->entityManager->persist($existOrder); + $this->entityManager->flush(); + return new Response(); } if (is_null($charge)) return new Response(); // 再課金待ちもしくは初回課金の場合は何もしない - if($data->data->status !== 'unpaid' && $charge->id !== $existOrder->getUnivapayChargeId()) { - // cloneで注文を複製してもidが変更できないため一から作成 - $newOrder = new Order; - // 今回での決済の課金ID取得 - $newOrder->setUnivapayChargeId($charge->id); - $newOrder->setUnivapaySubscriptionId($existOrder->getUnivapaySubscriptionId()); - $newOrder->setMessage($existOrder->getMessage()); - $newOrder->setName01($existOrder->getName01()); - $newOrder->setName02($existOrder->getName02()); - $newOrder->setKana01($existOrder->getKana01()); - $newOrder->setKana02($existOrder->getKana02()); - $newOrder->setCompanyName($existOrder->getCompanyName()); - $newOrder->setEmail($existOrder->getEmail()); - $newOrder->setPhoneNumber($existOrder->getPhoneNumber()); - $newOrder->setPostalCode($existOrder->getPostalCode()); - $newOrder->setAddr01($existOrder->getAddr01()); - $newOrder->setAddr02($existOrder->getAddr02()); - $newOrder->setBirth($existOrder->getBirth()); - // 今回決済金額から小計を逆算 - $newSubtotal = $existOrder->getSubtotal() - $existOrder->getTotal() + $data->data->amount - $existOrder->getDiscount(); - $newOrder->setSubtotal($newSubtotal); - // 割引無効化 - $newOrder->setDiscount(0); - $newOrder->setDeliveryFeeTotal($existOrder->getDeliveryFeeTotal()); - $newOrder->setCharge($existOrder->getCharge()); - $newOrder->setTax($existOrder->getTax()); - // 二回目以降の決済金額が違う場合があるため変更 - $newOrder->setTotal($data->data->amount); - $newOrder->setPaymentTotal($data->data->amount); - $newOrder->setPaymentMethod($existOrder->getPaymentMethod()); - $newOrder->setNote($existOrder->getNote()); - $newOrder->setCurrencyCode($existOrder->getCurrencyCode()); - $newOrder->setCompleteMessage($existOrder->getCompleteMessage()); - $newOrder->setCompleteMailMessage($existOrder->getCompleteMailMessage()); - // 決済日を今日に変更 - $newOrder->setPaymentDate(new \DateTime()); - $newOrder->setCustomer($existOrder->getCustomer()); - $newOrder->setCountry($existOrder->getCountry()); - $newOrder->setPref($existOrder->getPref()); - $newOrder->setSex($existOrder->getSex()); - $newOrder->setJob($existOrder->getJob()); - $newOrder->setPayment($existOrder->getPayment()); - $newOrder->setDeviceType($existOrder->getDeviceType()); - $newOrder->setCustomerOrderStatus($existOrder->getCustomerOrderStatus()); - $newOrder->setOrderStatusColor($existOrder->getOrderStatusColor()); - // 商品ごとの今回課金金額を取得 - $amount = json_decode($existOrder->getUnivapayChargeAmount()); - // 商品金額が存在しなかったらその時点のデータを作成する - if(!$amount) { - $items = []; - foreach($existOrder->getOrderItems() as $value) { - // 商品単位で金額を取得 - if($value->isProduct()) { - $class = $value->getProductClass(); - $items[$class->getId()] = ['price' => $class->getPrice01(), 'tax' => $class->getPrice01IncTax() - $class->getPrice01()]; - } - } - $newOrder->setUnivapayChargeAmount(json_encode($items)); - $amount = json_decode($newOrder->getUnivapayChargeAmount()); - } - $amount = get_object_vars($amount); + if ($data->data->status === 'unpaid' || $charge->id === $existOrder->getUnivapayChargeId()) + return new Response(); + // cloneで注文を複製してもidが変更できないため一から作成 + $newOrder = new Order; + // 今回での決済の課金ID取得 + $newOrder->setUnivapayChargeId($charge->id); + $newOrder->setUnivapaySubscriptionId($existOrder->getUnivapaySubscriptionId()); + $newOrder->setMessage($existOrder->getMessage()); + $newOrder->setName01($existOrder->getName01()); + $newOrder->setName02($existOrder->getName02()); + $newOrder->setKana01($existOrder->getKana01()); + $newOrder->setKana02($existOrder->getKana02()); + $newOrder->setCompanyName($existOrder->getCompanyName()); + $newOrder->setEmail($existOrder->getEmail()); + $newOrder->setPhoneNumber($existOrder->getPhoneNumber()); + $newOrder->setPostalCode($existOrder->getPostalCode()); + $newOrder->setAddr01($existOrder->getAddr01()); + $newOrder->setAddr02($existOrder->getAddr02()); + $newOrder->setBirth($existOrder->getBirth()); + // 今回決済金額から小計を逆算 + $newSubtotal = $existOrder->getSubtotal() - $existOrder->getTotal() + $data->data->amount - $existOrder->getDiscount(); + $newOrder->setSubtotal($newSubtotal); + // 割引無効化 + $newOrder->setDiscount(0); + $newOrder->setDeliveryFeeTotal($existOrder->getDeliveryFeeTotal()); + $newOrder->setCharge($existOrder->getCharge()); + $newOrder->setTax($existOrder->getTax()); + // 二回目以降の決済金額が違う場合があるため変更 + $newOrder->setTotal($data->data->amount); + $newOrder->setPaymentTotal($data->data->amount); + $newOrder->setPaymentMethod($existOrder->getPaymentMethod()); + $newOrder->setNote($existOrder->getNote()); + $newOrder->setCurrencyCode($existOrder->getCurrencyCode()); + $newOrder->setCompleteMessage($existOrder->getCompleteMessage()); + $newOrder->setCompleteMailMessage($existOrder->getCompleteMailMessage()); + // 決済日を今日に変更 + $newOrder->setPaymentDate(new \DateTime()); + $newOrder->setCustomer($existOrder->getCustomer()); + $newOrder->setCountry($existOrder->getCountry()); + $newOrder->setPref($existOrder->getPref()); + $newOrder->setSex($existOrder->getSex()); + $newOrder->setJob($existOrder->getJob()); + $newOrder->setPayment($existOrder->getPayment()); + $newOrder->setDeviceType($existOrder->getDeviceType()); + $newOrder->setCustomerOrderStatus($existOrder->getCustomerOrderStatus()); + $newOrder->setOrderStatusColor($existOrder->getOrderStatusColor()); + // 商品ごとの今回課金金額を取得 + $amount = json_decode($existOrder->getUnivapayChargeAmount()); + // 商品金額が存在しなかったらその時点のデータを作成する + if(!$amount) { + $items = []; foreach($existOrder->getOrderItems() as $value) { - $newOrderItem = clone $value; - // 値引きは引き継がない - if($newOrderItem->isDiscount() || $newOrderItem->isPoint()) - continue; - // OrderItemごとの金額を修正する - if($newOrderItem->isProduct()) { - // 二回目は通常金額を取得する - $class = $newOrderItem->getProductClass(); - $newOrderItem->setPrice($amount[$class->getId()]->price); - $newOrderItem->setTax($amount[$class->getId()]->tax); + // 商品単位で金額を取得 + if($value->isProduct()) { + $class = $value->getProductClass(); + $items[$class->getId()] = ['price' => $class->getPrice01(), 'tax' => $class->getPrice01IncTax() - $class->getPrice01()]; } - $newOrderItem->setOrder($newOrder); - $newOrder->addOrderItem($newOrderItem); } - foreach($existOrder->getShippings() as $value) { - $newShipping = clone $value; - $newShipping->setShippingDeliveryDate(NULL); - $newShipping->setShippingDeliveryTime(NULL); - $newShipping->setTimeId(NULL); - $newShipping->setShippingDate(NULL); - $newShipping->setTrackingNumber(NULL); - $newShipping->setOrder($newOrder); - // 循環参照してしまい正常に発送データがセットできないため - foreach($newShipping->getOrderItems() as $v) { - $newShipping->removeOrderItem($v); - } - foreach($newOrder->getOrderItems() as $v) { - if($v->getShipping() && $v->getShipping()->getId() == $value->getId()) { - $v->setShipping($newShipping); - $newShipping->addOrderItem($v); - } + $newOrder->setUnivapayChargeAmount(json_encode($items)); + $amount = json_decode($newOrder->getUnivapayChargeAmount()); + } + $amount = get_object_vars($amount); + foreach($existOrder->getOrderItems() as $value) { + $newOrderItem = clone $value; + // 値引きは引き継がない + if($newOrderItem->isDiscount() || $newOrderItem->isPoint()) + continue; + // OrderItemごとの金額を修正する + if($newOrderItem->isProduct()) { + // 二回目は通常金額を取得する + $class = $newOrderItem->getProductClass(); + $newOrderItem->setPrice($amount[$class->getId()]->price); + $newOrderItem->setTax($amount[$class->getId()]->tax); + } + $newOrderItem->setOrder($newOrder); + $newOrder->addOrderItem($newOrderItem); + } + foreach($existOrder->getShippings() as $value) { + $newShipping = clone $value; + $newShipping->setShippingDeliveryDate(NULL); + $newShipping->setShippingDeliveryTime(NULL); + $newShipping->setTimeId(NULL); + $newShipping->setShippingDate(NULL); + $newShipping->setTrackingNumber(NULL); + $newShipping->setOrder($newOrder); + // 循環参照してしまい正常に発送データがセットできないため + foreach($newShipping->getOrderItems() as $v) { + $newShipping->removeOrderItem($v); + } + foreach($newOrder->getOrderItems() as $v) { + if($v->getShipping() && $v->getShipping()->getId() == $value->getId()) { + $v->setShipping($newShipping); + $newShipping->addOrderItem($v); } - $newOrder->addShipping($newShipping); } - $purchaseContext = new PurchaseContext($newOrder, $newOrder->getCustomer()); - // ポイントを再計算4.0以前のバージョンの場合、先にポイントを再計算を行わないと正常に動かない - $this->addPointProcessor->validate($newOrder, $purchaseContext); - // 注文番号変更 - $preOrderId = $this->orderHelper->createPreOrderId(); - $newOrder->setPreOrderId($preOrderId); - // 購入処理を完了 - $this->purchaseFlow->prepare($newOrder, $purchaseContext); - $this->purchaseFlow->commit($newOrder, $purchaseContext); - $this->entityManager->persist($newOrder); - // 注文番号が重複しないように再採番 - $this->entityManager->flush(); - $this->orderNoProcessor->process($newOrder, $purchaseContext); - $this->entityManager->flush(); - // 定期課金に失敗した場合はキャンセル済み注文に変更 - $OrderStatus = $this->orderStatusRepository->find($data->data->status === 'suspended' ? OrderStatus::CANCEL : OrderStatus::PAID); - $newOrder->setOrderStatus($OrderStatus); - if($config->getMail()) - $this->mailService->sendOrderMail($newOrder); - $this->entityManager->flush(); + $newOrder->addShipping($newShipping); } + $purchaseContext = new PurchaseContext($newOrder, $newOrder->getCustomer()); + // ポイントを再計算4.0以前のバージョンの場合、先にポイントを再計算を行わないと正常に動かない + $this->addPointProcessor->validate($newOrder, $purchaseContext); + // 注文番号変更 + $preOrderId = $this->orderHelper->createPreOrderId(); + $newOrder->setPreOrderId($preOrderId); + // 購入処理を完了 + $this->purchaseFlow->prepare($newOrder, $purchaseContext); + $this->purchaseFlow->commit($newOrder, $purchaseContext); + $this->entityManager->persist($newOrder); + // 注文番号が重複しないように再採番 + $this->entityManager->flush(); + $this->orderNoProcessor->process($newOrder, $purchaseContext); + $this->entityManager->flush(); + // 定期課金に失敗した場合はキャンセル済み注文に変更 + $OrderStatus = $this->orderStatusRepository->find($data->data->status === 'suspended' ? OrderStatus::CANCEL : OrderStatus::PAID); + $newOrder->setOrderStatus($OrderStatus); + if($config->getMail()) + $this->mailService->sendOrderMail($newOrder); + $this->entityManager->flush(); } /** diff --git a/UnivaPay/Service/Method/CreditCard.php b/UnivaPay/Service/Method/CreditCard.php index 0b32d5e..9d429ec 100755 --- a/UnivaPay/Service/Method/CreditCard.php +++ b/UnivaPay/Service/Method/CreditCard.php @@ -115,9 +115,9 @@ public function checkout() // 決済種別取得 $util = new SDK($this->Config->findOneById(1)); - $paymentType = $util->getTransactionTokenByChargeId($token)->paymentType->getValue(); - // capture済みもしくはカード,paidy以外の場合は支払済みに変更 - if($this->Config->findOneById(1)->getCapture() || !in_array($paymentType, ['card', 'paidy'])) { + $charge = $util->getCharge($token); + // キャプチャ済みの場合は支払い済みに変更 + if($charge->status->getValue() === 'successful') { $OrderStatus = $this->orderStatusRepository->find(OrderStatus::PAID); $this->Order->setOrderStatus($OrderStatus); $this->Order->setPaymentDate(new \DateTime()); From 9bcc97beb2b246e371ca04d62d69e326f1806dea Mon Sep 17 00:00:00 2001 From: Ruk Doe Date: Sat, 29 Jul 2023 19:58:21 +0900 Subject: [PATCH 3/6] update --- UnivaPay/composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnivaPay/composer.json b/UnivaPay/composer.json index d8b043f..d9eb264 100755 --- a/UnivaPay/composer.json +++ b/UnivaPay/composer.json @@ -1,6 +1,6 @@ { "name": "univapay/univapay-for-ec-cube4", - "version": "1.4.10", + "version": "1.5.0", "description": "UnivaPay for EC-CUBE4", "type": "eccube-plugin", "extra": { From 3277a7748a1d429b1815cdbe67f238fc7623ec6a Mon Sep 17 00:00:00 2001 From: Ruk Doe Date: Sat, 29 Jul 2023 11:48:44 +0000 Subject: [PATCH 4/6] fix dev env --- .devcontainer/devcontainer.json | 21 ++++++ .github/workflows/main.yml | 2 +- .gitignore | 0 .idea/.gitignore | 8 --- .idea/UnivaPay-for-EC-CUBE4.iml | 9 --- .idea/misc.xml | 6 -- .idea/modules.xml | 8 --- .idea/php.xml | 66 ------------------- .idea/remote-mappings.xml | 10 --- .idea/vcs.xml | 6 -- .../Admin/ConfigController.php | 0 .../Admin/OrderController.php | 0 .../SubscriptionController.php | 0 Dockerfile | 3 + {UnivaPay/Entity => Entity}/Config.php | 0 {UnivaPay/Entity => Entity}/CustomerTrait.php | 0 {UnivaPay/Entity => Entity}/OrderTrait.php | 0 .../Entity => Entity}/ProductClassTrait.php | 0 .../Entity => Entity}/SubscriptionPeriod.php | 0 .../Extension/CreditCardExtention.php | 0 .../Extension/SubscriptionPeriodExtention.php | 0 .../Form => Form}/Type/Admin/ConfigType.php | 0 .../Type/SubscriptionPeriodType.php | 0 .../PluginManager.php => PluginManager.php | 0 README.md | 17 +++-- .../ConfigRepository.php | 0 .../OrderSearchAdminCustomizer.php | 0 .../SubscriptionPeriodRepository.php | 0 .../locale/messages.ja.yaml | 0 .../template/admin/config.twig | 0 .../template/admin/order_edit.twig | 0 .../template/admin/product_edit.twig | 0 .../template/mypage_history.twig | 0 .../template/shopping_confirm.twig | 0 .../Service => Service}/Method/CreditCard.php | 0 .../Method/Subscription.php | 0 .../UnivaPayEvent.php => UnivaPayEvent.php | 0 {UnivaPay/Util => Util}/SDK.php | 0 UnivaPay/composer.json => composer.json | 0 docker-compose.sample.yml | 8 ++- 40 files changed, 41 insertions(+), 123 deletions(-) create mode 100755 .devcontainer/devcontainer.json mode change 100644 => 100755 .gitignore delete mode 100644 .idea/.gitignore delete mode 100644 .idea/UnivaPay-for-EC-CUBE4.iml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/php.xml delete mode 100644 .idea/remote-mappings.xml delete mode 100644 .idea/vcs.xml rename {UnivaPay/Controller => Controller}/Admin/ConfigController.php (100%) rename {UnivaPay/Controller => Controller}/Admin/OrderController.php (100%) rename {UnivaPay/Controller => Controller}/SubscriptionController.php (100%) create mode 100755 Dockerfile rename {UnivaPay/Entity => Entity}/Config.php (100%) rename {UnivaPay/Entity => Entity}/CustomerTrait.php (100%) rename {UnivaPay/Entity => Entity}/OrderTrait.php (100%) rename {UnivaPay/Entity => Entity}/ProductClassTrait.php (100%) rename {UnivaPay/Entity => Entity}/SubscriptionPeriod.php (100%) rename {UnivaPay/Form => Form}/Extension/CreditCardExtention.php (100%) rename {UnivaPay/Form => Form}/Extension/SubscriptionPeriodExtention.php (100%) rename {UnivaPay/Form => Form}/Type/Admin/ConfigType.php (100%) rename {UnivaPay/Form => Form}/Type/SubscriptionPeriodType.php (100%) rename UnivaPay/PluginManager.php => PluginManager.php (100%) rename {UnivaPay/Repository => Repository}/ConfigRepository.php (100%) rename {UnivaPay/Repository => Repository}/OrderSearchAdminCustomizer.php (100%) rename {UnivaPay/Repository => Repository}/SubscriptionPeriodRepository.php (100%) rename {UnivaPay/Resource => Resource}/locale/messages.ja.yaml (100%) rename {UnivaPay/Resource => Resource}/template/admin/config.twig (100%) rename {UnivaPay/Resource => Resource}/template/admin/order_edit.twig (100%) rename {UnivaPay/Resource => Resource}/template/admin/product_edit.twig (100%) rename {UnivaPay/Resource => Resource}/template/mypage_history.twig (100%) rename {UnivaPay/Resource => Resource}/template/shopping_confirm.twig (100%) rename {UnivaPay/Service => Service}/Method/CreditCard.php (100%) rename {UnivaPay/Service => Service}/Method/Subscription.php (100%) rename UnivaPay/UnivaPayEvent.php => UnivaPayEvent.php (100%) rename {UnivaPay/Util => Util}/SDK.php (100%) rename UnivaPay/composer.json => composer.json (100%) mode change 100644 => 100755 docker-compose.sample.yml diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100755 index 0000000..3b3ef2a --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,21 @@ +{ + "dockerComposeFile": ["../docker-compose.yml"], + "service": "web", + "workspaceFolder": "/var/lib/nginx/html/app/Plugin/UnivaPay", + "customizations": { + "vscode": { + "settings": { + "php.validate.enable": false, + "php.suggest.basic": false, + "[php]": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "bmewburn.vscode-intelephense-client" + } + }, + "extensions": [ + "bmewburn.vscode-intelephense-client", + "ms-azuretools.vscode-docker" + ] + } + } +} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bc65c8b..3acd25b 100755 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,7 +9,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Build - run: cd UnivaPay && tar -cvzf UnivaPay.tar.gz * + run: tar -cvzf UnivaPay.tar.gz * - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 1c2fda5..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/UnivaPay-for-EC-CUBE4.iml b/.idea/UnivaPay-for-EC-CUBE4.iml deleted file mode 100644 index 18ec59d..0000000 --- a/.idea/UnivaPay-for-EC-CUBE4.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 9715c22..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 2aba40b..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml deleted file mode 100644 index 4b59a7e..0000000 --- a/.idea/php.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - /etc/php7/conf.d/00_ctype.ini, /etc/php7/conf.d/00_curl.ini, /etc/php7/conf.d/00_dom.ini, /etc/php7/conf.d/00_fileinfo.ini, /etc/php7/conf.d/00_iconv.ini, /etc/php7/conf.d/00_intl.ini, /etc/php7/conf.d/00_json.ini, /etc/php7/conf.d/00_mbstring.ini, /etc/php7/conf.d/00_opcache.ini, /etc/php7/conf.d/00_openssl.ini, /etc/php7/conf.d/00_pdo.ini, /etc/php7/conf.d/00_session.ini, /etc/php7/conf.d/00_simplexml.ini, /etc/php7/conf.d/00_tokenizer.ini, /etc/php7/conf.d/00_xml.ini, /etc/php7/conf.d/00_xmlwriter.ini, /etc/php7/conf.d/00_zip.ini, /etc/php7/conf.d/01_pdo_pgsql.ini, /etc/php7/conf.d/01_phar.ini - /etc/php7/php.ini - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/remote-mappings.xml b/.idea/remote-mappings.xml deleted file mode 100644 index 24e8968..0000000 --- a/.idea/remote-mappings.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index c8397c9..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/UnivaPay/Controller/Admin/ConfigController.php b/Controller/Admin/ConfigController.php similarity index 100% rename from UnivaPay/Controller/Admin/ConfigController.php rename to Controller/Admin/ConfigController.php diff --git a/UnivaPay/Controller/Admin/OrderController.php b/Controller/Admin/OrderController.php similarity index 100% rename from UnivaPay/Controller/Admin/OrderController.php rename to Controller/Admin/OrderController.php diff --git a/UnivaPay/Controller/SubscriptionController.php b/Controller/SubscriptionController.php similarity index 100% rename from UnivaPay/Controller/SubscriptionController.php rename to Controller/SubscriptionController.php diff --git a/Dockerfile b/Dockerfile new file mode 100755 index 0000000..8f9373c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM ghcr.io/5ym/ec-cube:4.1 +RUN apk add git openssh-client +COPY . /var/lib/nginx/html/app/Plugin/UnivaPay \ No newline at end of file diff --git a/UnivaPay/Entity/Config.php b/Entity/Config.php similarity index 100% rename from UnivaPay/Entity/Config.php rename to Entity/Config.php diff --git a/UnivaPay/Entity/CustomerTrait.php b/Entity/CustomerTrait.php similarity index 100% rename from UnivaPay/Entity/CustomerTrait.php rename to Entity/CustomerTrait.php diff --git a/UnivaPay/Entity/OrderTrait.php b/Entity/OrderTrait.php similarity index 100% rename from UnivaPay/Entity/OrderTrait.php rename to Entity/OrderTrait.php diff --git a/UnivaPay/Entity/ProductClassTrait.php b/Entity/ProductClassTrait.php similarity index 100% rename from UnivaPay/Entity/ProductClassTrait.php rename to Entity/ProductClassTrait.php diff --git a/UnivaPay/Entity/SubscriptionPeriod.php b/Entity/SubscriptionPeriod.php similarity index 100% rename from UnivaPay/Entity/SubscriptionPeriod.php rename to Entity/SubscriptionPeriod.php diff --git a/UnivaPay/Form/Extension/CreditCardExtention.php b/Form/Extension/CreditCardExtention.php similarity index 100% rename from UnivaPay/Form/Extension/CreditCardExtention.php rename to Form/Extension/CreditCardExtention.php diff --git a/UnivaPay/Form/Extension/SubscriptionPeriodExtention.php b/Form/Extension/SubscriptionPeriodExtention.php similarity index 100% rename from UnivaPay/Form/Extension/SubscriptionPeriodExtention.php rename to Form/Extension/SubscriptionPeriodExtention.php diff --git a/UnivaPay/Form/Type/Admin/ConfigType.php b/Form/Type/Admin/ConfigType.php similarity index 100% rename from UnivaPay/Form/Type/Admin/ConfigType.php rename to Form/Type/Admin/ConfigType.php diff --git a/UnivaPay/Form/Type/SubscriptionPeriodType.php b/Form/Type/SubscriptionPeriodType.php similarity index 100% rename from UnivaPay/Form/Type/SubscriptionPeriodType.php rename to Form/Type/SubscriptionPeriodType.php diff --git a/UnivaPay/PluginManager.php b/PluginManager.php similarity index 100% rename from UnivaPay/PluginManager.php rename to PluginManager.php diff --git a/README.md b/README.md index ae16767..ac1b3e4 100755 --- a/README.md +++ b/README.md @@ -9,25 +9,28 @@ UnivaPayの申し込み方法 ## 開発環境 +vscode devcontainerを利用しています。 + ```sh -git clone https://github.com/univapaycast/UnivaPay-for-EC-CUBE4.git +git clone https://github.com/univapay/UnivaPay-for-EC-CUBE4.git cd UnivaPay-for-EC-CUBE4 cp docker-compose.sample.yml docker-compose.yml docker compose up -d -docker compose exec web sh -c "bin/console eccube:install -n" -docker compose exec web sh -c "bin/console eccube:composer:require univapay/php-sdk" -docker compose exec web sh -c "bin/console eccube:plugin:install --code=UnivaPay && bin/console eccube:plugin:enable --code=UnivaPay && bin/console cache:clear" +code . # devcontainerで開かなかったらdevcontainerで開きなおしてください +bin/console eccube:install -n +bin/console eccube:composer:require univapay/php-sdk +bin/console eccube:plugin:install --code=UnivaPay && bin/console eccube:plugin:enable --code=UnivaPay && bin/console cache:clear ``` -#### データベース更新したとき +### データベース更新したとき ```sh -docker compose exec web sh -c "bin/console eccube:install -n && bin/console eccube:plugin:install --code=UnivaPay && bin/console eccube:plugin:enable --code=UnivaPay" +bin/console eccube:install -n && bin/console eccube:plugin:install --code=UnivaPay && bin/console eccube:plugin:enable --code=UnivaPay ``` -#### 管理者向けアップデート手順 +### 管理者向けアップデート手順 1. composer.json内のversionを上げる 2. masterにコミット後github内でバージョンタグの作成 diff --git a/UnivaPay/Repository/ConfigRepository.php b/Repository/ConfigRepository.php similarity index 100% rename from UnivaPay/Repository/ConfigRepository.php rename to Repository/ConfigRepository.php diff --git a/UnivaPay/Repository/OrderSearchAdminCustomizer.php b/Repository/OrderSearchAdminCustomizer.php similarity index 100% rename from UnivaPay/Repository/OrderSearchAdminCustomizer.php rename to Repository/OrderSearchAdminCustomizer.php diff --git a/UnivaPay/Repository/SubscriptionPeriodRepository.php b/Repository/SubscriptionPeriodRepository.php similarity index 100% rename from UnivaPay/Repository/SubscriptionPeriodRepository.php rename to Repository/SubscriptionPeriodRepository.php diff --git a/UnivaPay/Resource/locale/messages.ja.yaml b/Resource/locale/messages.ja.yaml similarity index 100% rename from UnivaPay/Resource/locale/messages.ja.yaml rename to Resource/locale/messages.ja.yaml diff --git a/UnivaPay/Resource/template/admin/config.twig b/Resource/template/admin/config.twig similarity index 100% rename from UnivaPay/Resource/template/admin/config.twig rename to Resource/template/admin/config.twig diff --git a/UnivaPay/Resource/template/admin/order_edit.twig b/Resource/template/admin/order_edit.twig similarity index 100% rename from UnivaPay/Resource/template/admin/order_edit.twig rename to Resource/template/admin/order_edit.twig diff --git a/UnivaPay/Resource/template/admin/product_edit.twig b/Resource/template/admin/product_edit.twig similarity index 100% rename from UnivaPay/Resource/template/admin/product_edit.twig rename to Resource/template/admin/product_edit.twig diff --git a/UnivaPay/Resource/template/mypage_history.twig b/Resource/template/mypage_history.twig similarity index 100% rename from UnivaPay/Resource/template/mypage_history.twig rename to Resource/template/mypage_history.twig diff --git a/UnivaPay/Resource/template/shopping_confirm.twig b/Resource/template/shopping_confirm.twig similarity index 100% rename from UnivaPay/Resource/template/shopping_confirm.twig rename to Resource/template/shopping_confirm.twig diff --git a/UnivaPay/Service/Method/CreditCard.php b/Service/Method/CreditCard.php similarity index 100% rename from UnivaPay/Service/Method/CreditCard.php rename to Service/Method/CreditCard.php diff --git a/UnivaPay/Service/Method/Subscription.php b/Service/Method/Subscription.php similarity index 100% rename from UnivaPay/Service/Method/Subscription.php rename to Service/Method/Subscription.php diff --git a/UnivaPay/UnivaPayEvent.php b/UnivaPayEvent.php similarity index 100% rename from UnivaPay/UnivaPayEvent.php rename to UnivaPayEvent.php diff --git a/UnivaPay/Util/SDK.php b/Util/SDK.php similarity index 100% rename from UnivaPay/Util/SDK.php rename to Util/SDK.php diff --git a/UnivaPay/composer.json b/composer.json similarity index 100% rename from UnivaPay/composer.json rename to composer.json diff --git a/docker-compose.sample.yml b/docker-compose.sample.yml old mode 100644 new mode 100755 index 12e5186..b5fc40e --- a/docker-compose.sample.yml +++ b/docker-compose.sample.yml @@ -2,7 +2,7 @@ version: "3.9" services: web: - image: ghcr.io/5ym/ec-cube:4.1 + build: . ports: - "1080:80" environment: @@ -19,10 +19,14 @@ services: - ECCUBE_ADMIN_ROUTE=admin - ECCUBE_TEMPLATE_CODE=default - ECCUBE_LOCALE=ja + - SHELL=/bin/ash volumes: - - "./UnivaPay:/var/lib/nginx/html/app/Plugin/UnivaPay" + - ".:/var/lib/nginx/html/app/Plugin/UnivaPay" depends_on: - db + dns: + - 1.1.1.1 + - 1.0.0.1 db: image: postgres:10 environment: From c872d18d9c590816b27b69ec128523c07d3b5141 Mon Sep 17 00:00:00 2001 From: Ruk Doe Date: Sat, 5 Aug 2023 11:57:03 +0900 Subject: [PATCH 5/6] fix path --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3acd25b..bec96c0 100755 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,4 +15,4 @@ jobs: if: startsWith(github.ref, 'refs/tags/') with: files: | - UnivaPay/UnivaPay.tar.gz + UnivaPay.tar.gz From 7acf376713afc05af64ab8b1d14e98129d188302 Mon Sep 17 00:00:00 2001 From: Ruk Doe Date: Wed, 9 Aug 2023 18:19:59 +0900 Subject: [PATCH 6/6] fix function name and return --- Controller/SubscriptionController.php | 3 ++- Service/Method/Subscription.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Controller/SubscriptionController.php b/Controller/SubscriptionController.php index 255fb77..3ee3d7a 100755 --- a/Controller/SubscriptionController.php +++ b/Controller/SubscriptionController.php @@ -98,7 +98,7 @@ public function hook(Request $request) $charge = null; if ($data->event === 'subscription_payment' || $data->event === 'subscription_failure') { // SubscriptionIdからChargeを取得 - $charge = $util->getchargeBySubscriptionId($data->data->id); + $charge = $util->getChargeBySubscriptionId($data->data->id); } elseif ( $data->event === 'charge_finished') { // 支払い確定したら注文ステータスを変更する // セキュリティのために一様UUIDを確認する @@ -231,6 +231,7 @@ public function hook(Request $request) if($config->getMail()) $this->mailService->sendOrderMail($newOrder); $this->entityManager->flush(); + return new Response(); } /** diff --git a/Service/Method/Subscription.php b/Service/Method/Subscription.php index 7ccb8bc..732481a 100755 --- a/Service/Method/Subscription.php +++ b/Service/Method/Subscription.php @@ -109,7 +109,7 @@ public function checkout() if ($subscriptionId) { // Subscription idからcharge idを取得して格納 $util = new SDK($this->Config->findOneById(1)); - $token = $util->getchargeBySubscriptionId($subscriptionId)->id; + $token = $util->getChargeBySubscriptionId($subscriptionId)->id; $this->Order->setUnivapaySubscriptionId($subscriptionId); $this->Order->setUnivapayChargeId($token); $items = [];