Configurando o Split Pagbank
É recomendável que faça um backup completo de sua loja e banco de dados antes de iniciar.
Métodos de instalação
O método recomendado é via Composer, no entanto, caso queira, também é possível fazer uma instalação com upload manual ou ainda via Git clone.
Via Composer
Na pasta do projeto execute:
composer require pagbank/split-magento
Após a instalação pelo Composer, execute os seguintes comandos:
bin/magento setup:upgrade bin/magento setup:di:compile
Via Upload de arquivos
- Na raiz de seu site, crie a pasta:
app/code/PagBank/SplitMagento
- Faça o download de acordo com a versão usada:
- Magento 2.4.6
- Magento 2.4.0 até Magento 2.4.5
- Magento 2.3x
Descompacte o arquivo recebido.
- Envie o conteúdo da pasta obtida no download para dentro da pasta PaymentMagento que você criou em
app/code/PagBank/SplitMagento.
- Para registrar o módulo, execute os seguintes comandos na pasta principal do Magento:
bin/magento setup:upgrade bin/magento setup:di:compile
Via Git
- Clone o repositório:
Por ssh
git clone [email protected]:pagbank/split-magento.git app/code/PagBank/SplitMagento
Por http
git clone <https://github.com/pagbank/split-magento.git> app/code/PagBank/SplitMagento
- Para registrar o módulo, execute os seguintes comandos:
bin/magento setup:upgrade bin/magento setup:di:compile
Configuração
No painel administrativo, acesse as configurações de pagamento.
Lojas → Configuração
Lojas → Vendas → Formas de Pagamento
Lojas → Vendas → Formas de Pagamento → Configurar
Dividir Pagamento
Opções de configuração para o Split.
Lojas → Vendas → Formas de Pagamento → Configurar
Como personalizar a regra de Split
Aqui você encontra instruções de como personalizar o nó de split encaminhado ao PagBank.
Estrutura esperada pelo PagBank
Para o endpoint /orders deve ser criado o nó splits:
"splits": {
"method": "FIXED",
"receivers": [
{
"account": {
"id": "ACCO_A54FD6CD-E43F-4783-A7F4-XXXXXXXXX"
},
"amount": {
"value": 1844
}
},
{
"account": {
"id": "ACCO_B1BB0AD0-A8DE-441C-8007-XXXXXXXXX"
},
"amount": {
"value": 3600
}
}
]
}
Explicação
Method -> Prevê o valor fixo ou percentual.
Receivers -> é o nó de array com os vendedores da transação. Importante o somatório de todos os valores declarados tem que corresponder a 100% do valor que o cliente paga.
Personalizando o recebedor
Você deve personalizar a classe PagBank\SplitMagento\Gateway\Request\Split\ReciversDataRequest, implementando em seu módulo um di.xml, como:
<!-- Add Sub Seller to request -->
<type name="PagBank\SplitMagento\Gateway\Request\Split\ReciversDataRequest">
<plugin name="pagbank_webkul_add_sub_seller" type="[Vendor]\[Module_Name]\Plugin\Gateway\Request\Split\SubSellerReciversDataRequest" sortOrder="10" />
</type>
Sugerimos alterar apenas o recebedor secundário da transação, usando o método around para esse processo.
/**
* Build.
*
* @param ReciversDataRequest $subject
* @param callable $proceed
* @param array $buildSubject
*
* @SuppressWarnings(PHPMD.StaticAccess)
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function aroundGetSecondarys(ReciversDataRequest $subject, callable $proceed, array $buildSubject)
{
$isEnabled = $this->helper->isEnabled();
if (!$isEnabled) {
return $proceed($buildSubject);
}
$secondary = [];
/** @var PaymentDataObject $paymentDO **/
$paymentDO = SubjectReader::readPayment($buildSubject);
/** @var InfoInterface $payment **/
$payment = $paymentDO->getPayment();
/** @var Order $order **/
$order = $payment->getOrder();
$sellersData = $this->helper->getReciversData($order);
foreach ($sellersData as $sellerData) {
$secondary[] = [
BaseDataRequest::RECEIVER_ACCOUNT => [
BaseDataRequest::RECEIVER_ACCOUNT_ID => $sellerData['pag_bank_id'],
],
BaseDataRequest::RECEIVER_AMOUNT => [
BaseDataRequest::RECEIVER_AMOUNT_VALUE => $sellerData['pag_bank_amount'],
],
];
}
return $secondary;
}
Note que no exemplo os valores de Seller Data são recebidos de um Helper do módulo que você criou, você pode trocar essa abordagem pela que desejar.
Alterando apenas a função de recebedor secundário, o módulo irá calcular e popular o primário já realizando a regra de calculo do valor para atender a regra de que o split teve ter 100% dos valores declarados.
Updated 5 months ago