Magento를 처음 사용하고 magento2.1에서 맞춤 결제 방법을 구현 중이지만 완전히 잃어 버렸습니다. 정보의 필요 흐름은 다음과 같다 :리디렉션 결제 게이트웨이 magento2
고객이 체크 아웃가는 모든 정보를 입력하고 그는 내 사용자 지정 방법을 눌러 '주문'버튼을 선택합니다 지불 방법에 간다.
버튼을 누르면 주문, 제품, 금액, 배송 주소 정보를 캡처하고 ('서명'- 확인을위한 해시, 'urlResponse'및 'urlConfirmation'및 일부 다른) 그리고 나서 게시 요청의 매개 변수를 게이트웨이 공급자 URL로 보내야합니다. 어떤 종류의 유효성 검사도 할 필요가 없습니다. 데이터를 가져 와서 더 추가하고 보내십시오.
Pronko
최대의 튜토리얼을 읽은 후https://www.maxpronko.com/blog/magento-2-payment-gateway-api
(내가 때문에 포인트의 부족, 다른 링크를 복사하지만,이 하나의 말에 참조가 없습니다 다른 하나에).
나는 그것을 구현하려고했지만 나는 운이 없었어요. 내가 알기로, '주문 주문'버튼을 누른 후에 요청은 내가 필요한 로직을 수행하고 TransferObject를 생성 한 다음 (어떻게?) 보낼 수있는 캡처 메소드로 전송됩니다.
벤더/PayU은/etc/프론트 엔드/di.xml에 custom payment file structure
제가있다 :
업체에서<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Payment\Gateway\Command\CommandPoolInterface" type="Magento\Payment\Gateway\Command\CommandPool" />
<virtualType name="Vendor\PayU\Model\Payment\Command\CaptureGateway" type="Magento\Payment\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">Vendor\PayU\Model\Payment\Request\Capture</argument>
</arguments>
</virtualType>
<virtualType name="Vendor\PayU\Gateway\Command\CommandPool" type="Magento\Payment\Gateway\Command\CommandPool">
<arguments>
<argument name="commands" xsi:type="array">
<item name="capture" xsi:type="string">Vendor\PayU\Model\Payment\Command\CaptureGateway</item>
</argument>
</arguments>
</virtualType>
<virtualType name="PayUPaymentMethodAdapter" type="Magento\Payment\Model\Method\Adapter">
<arguments>
<argument name="code" xsi:type="const">Vendor\PayU\Model\Payment::METHOD_CODE</argument>
<argument name="valueHandlerPool" xsi:type="object">PayUValueHandlerPool</argument>
<argument name="validatorPool" xsi:type="object">PayUValidatorPool</argument>
<argument name="commandPool" xsi:type="object">PayUCommandPool</argument>
<argument name="formBlockType" xsi:type="object">Magento\Payment\Block\Form\Cc</argument>
<argument name="infoBlockType" xsi:type="object">Magento\Payment\Block\Info\Cc</argument>
</arguments>
</virtualType>
<virtualType name="PayUConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode" xsi:type="const">Vendor\PayU\Model\Payment::METHOD_CODE</argument>
</arguments>
</virtualType>
<virtualType name="PayUConfigValueHandler" type="Magento\Payment\Gateway\Config\ConfigValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">PayUConfig</argument>
</arguments>
</virtualType>
<virtualType name="PayUValueHandlerPool" type="Magento\Payment\Gateway\Config\ValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">PayUConfigValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="CountryValidator" type="Magento\Payment\Gateway\Validator\CountryValidator">
<arguments>
<argument name="config" xsi:type="object">PayUConfig</argument>
</arguments>
</virtualType>
<virtualType name="PayUGlobalValidator" type="Magento\Payment\Gateway\Validator\ValidatorComposite">
<arguments>
<argument name="validators" xsi:type="array">
<item name="country" xsi:type="string">CountryValidator</item>
</argument>
</arguments>
</virtualType>
<virtualType name="PayUValidatorPool" type="Magento\Payment\Gateway\Validator\ValidatorPool">
<arguments>
<argument name="validators" xsi:type="array">
<item name="global" xsi:type="string">PayUGlobalValidator</item>
</argument>
</arguments>
</virtualType>
<virtualType name="PayUCaptureGatewayCommand" type="Magento\Payment\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">Vendor\PayU\Model\Payment\Request\Capture</argument>
<argument name="handler" xsi:type="object">Vendor\PayU\Model\Payment\Response\Capture</argument>
<argument name="transferFactory" xsi:type="object">Vendor\PayU\Gateway\Http\TransferFactory</argument>
</arguments>
</virtualType>
<virtualType name="PayUCommandPool" type="Magento\Payment\Gateway\Command\CommandPool">
<arguments>
<argument name="commands" xsi:type="array">
<item name="capture" xsi:type="string">PayUCaptureGatewayCommand</item>
</argument>
</arguments>
</virtualType>
<type name="Vendor\PayU\Model\Payment">
<arguments>
<argument name="commandPool" xsi:type="object">Vendor\PayU\Gateway\Command\CommandPool</argument>
</arguments>
</type>
</config>
/PayU/모델/결제
이
나가있는 구조 .php 내가 가진 :<?php
namespace Vendor\PayU\Model;
use Magento\Payment\Model\InfoInterface;
use Magento\Payment\Gateway\Command\CommandPoolInterface;
use Magento\Payment\Gateway\CommandInterface;
class Payment implements MethodInterface, PaymentMethodInterface
{
/**
* @var \Magento\Payment\Gateway\Command\CommandPoolInterface
*/
protected $commandPool;
/**
* @var CommandPoolInterface
*/
public function __construct(CommandPoolInterface $commandPool) {
$this->commandPool = $commandPool;
}
/**
* @param InfoInterface $payment
* @param float $amount
* @return $this
* @api
*/
public function capture(InfoInterface $payment, $amount)
{
/** @var CommandInterface $captureGatewayCommand */
$captureGatewayCommand = $this->commandPool->get('capture');
$captureGatewayCommand->execute([
'payment' => $payment,
'amount' => $amount
]);
}
}
나는 올바른 클래스를 구현합니까? 어떤 다른 파일이 필요합니까? 누군가가 올바른 방향으로 나를 가리킬 수 있다면 나는 감사 할 것입니다.
가 답장을 보내 주셔서 감사합니다.나는 당신이 나에게 recommeded 예제를 찾고 있었지만, 나는 그것을 작동하게 만들지 못했습니다. 다음 링크에서 오류가 발생합니다 : http://imgur.com/xpsmPfs. 내가 asume 문제는 xsi : type = "const"를 가진 인수에있다. 왜냐하면 내가 그 라인들 (모든 virtualType)에 문제가 없으면 페이지가로드되기 때문이다. (코드의 URL은 http://imgur.com/이다. fOa1bjn). 무슨 문제인지 아십니까? 감사. –
내가 말하는 클래스를 보여줄 수 있습니까? \ Vender \ PayUGateway \ Model \ ConfigProvider 상수 PAYMENT_METHOD_CODE로 클래스를 생성 했습니까? 또한 네임 스페이스를 확인하십시오. Magento는 상수를 찾을 수 없습니다. 모두 올바른지 확인하십시오. – Mistery
이것은 내 ConfigProvider.php입니다. http://imgur.com/fnadayV 네임 스페이스를 확인했습니다. 두 스크린 샷에서 질문의 목적을 위해 공급 업체 이름을 변경했음을 알 수 있습니다. 그러나 "작동"버전의 두 파일 모두에서 올바르게 작성했습니다. –