Variable inside a php array

Asked

Viewed 229 times

-3

I have a foreach where I search the value and name of the products, ai i’m trying to integrate a varial php within an array of paghiper in json, for it generate the boleto, as I can do this ?

I need to put this variable <?= $row->plano ?> within the 'items' => array( there in the array.

Thank you.

<?php foreach ($query->result() as $row) { ?>

                        <div class="col-md-6 offset-3">
                            <div class="card mb-5 mb-lg-0">
                                <div class="card-body">
                                    <table id="example1" style="width:100%; font-size:11px; text-align: center;" class="table table-bordered table-striped dataTable" role="grid">
                                        <thead>
                                            <tr role="row" style="width:100%; text-align: center;">
                                                <th align="center" class="sorting" rowspan="1" colspan="1">Pacote</th>
                                                <th align="center" class="sorting" rowspan="1" colspan="1">Valor</th>
                                                <th align="center" class="sorting" rowspan="1" colspan="1">Pagamento</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <tr role="row" style="width:100%; text-align: center;">
                                                <td style="text-align: center;"><?= $row->plano ?>
                                                </td>
                                                <td style="text-align: center;">R$<?= $row->valor ?>
                                                </td>
                                                <td style="text-align: center;">
                                                    Boleto<br>
                                                    <img src="https://i.imgur.com/hlqK6Aj.png" width="24" height="24">
                                                </td>
                                            </tr>

                                        </tbody>
                                        <tbody>
                                        </tbody>
                                    </table>
                                    <hr>
                                    <center>
                                        <h3 style="font-size:30px;">Termos e condições</h3>
                                    </center>
                                    <p>
                                        <div style="width: 100%; height: 200px; overflow-y: scroll; background-color:#E8E8E8; padding:5px;">
                                            1. Ao adquirir uma conta premium no Reverse Roleplay você adere automaticamente as regras abaixo citadas.
                                            <br><br>
                                            2. O Reverse Roleplay e seus gestores se reservam o direito de encerrar todas as atividades de seus servidores, a qualquer momento que se fizer necessário, sem aviso prévio.
                                            <br><br>
                                            3. Os benefícios adquiridos com a conta premium são pessoais. Você poderá transferir Trocas de Nome e Trocas de Número para personagens vinculados a mesma conta em que adquiriu os benefícios. Não é permitido a transferência de benefícios para personagens em contas diferentes, não insista!
                                            <br><br>
                                            4. Os benefícios tem duração de 30 dias corridos a partir da ativação do pacote, sujeito a interrupção por questões técnicas quando o servidor estiver offline (manutenção ou queda).
                                            <br><br>
                                            4.1 Ao adquirir uma conta premium você não está imune as punições administrativas do servidor. É dever de todos os jogadores, inclusive os jogadores premium, respeitar todas as regras. Não haverá devolução do valor pago caso você sofra alguma sanção da equipe.
                                            <br><br>
                                            4.2 Não haverá suspensão do prazo de validade dos benefícios em caso de banimento.
                                            <br><br>
                                            5. O jogador só terá direito aos benefícios listados no tópico oficial, não sendo exigível nenhuma outra vantagem ou direito perante a administração.
                                            <br><br>
                                            6. O pacote só poderá ser consumido pelo jogador no mês referente à doação, não podendo ser prorrogado ou deixado em espera para meses subsequentes.
                                            <br><br>
                                            7. Se o jogador depositar o valor referente a dois ou mais pacotes de benefícios, ele poderá indicar outros personagens para receber os benefícios de cada pacote. Os pacotes não são cumulativos.
                                            <br><br>
                                            8. São guardados os princípios da probidade e da boa fé na execução deste termos, sendo passível de revogação imediata dos benefícios em caso de descumprimento de qualquer das cláusulas.
                                            <br><br>
                                            9. Qualquer abertura de disputa/protesto/contestação para estornar o valor da compra após ter recebido os benefícios está sujeita a banimento de todas as contas do usuário.
                                            <br><br>
                                            10. Os benefícios serão creditados em até 48h úteis após a comprovação da doação pelas instituições financeiras. O personagem a receber os benefícios deve estar offline após a compra ser aprovada pelo UCP. Importunar membros da administração pedindo para que seja creditados os benefícios poderá acarretar punição in-game.
                                            <br><br>
                                            11. Estes termos poderão sofrer alterações futuras.
                                        </div>
                                    </p>
                                    <hr>



                                            <?php
                                    $data = array(
                                        'apiKey' => 'apk_46851304-DrKbqmJVsHOgYcLcBtFVLVwIaCRRNtHQ',
                                        'order_id' => '96874', // código interno do lojista para identificar a transacao.
                                        'payer_email' => '[email protected]',
                                        'payer_name' => 'teste', // nome completo ou razao social
                                        'payer_cpf_cnpj' => '00000000191', // cpf ou cnpj
                                        'payer_phone' => '0000000000', // fixou ou móvel
                                        'payer_street' => '',
                                        'payer_number' => '',
                                        'payer_complement' => '',
                                        'payer_district' => '',
                                        'payer_city' => 'São Paulo',
                                        'payer_state' => 'SP', // apenas sigla do estado
                                        'payer_zip_code' => '',
                                        'notification_url' => '',
                                        'discount_cents' => '0', // em centavos
                                        'shipping_price_cents' => '0', // em centavos
                                        'shipping_methods' => 'Envio Digital',
                                        'fixed_description' => true,
                                        'type_bank_slip' => 'boletoA4', // formato do boleto
                                        'days_due_date' => '4', // dias para vencimento do boleto
                                        'late_payment_fine' => '2', // Percentual de multa após vencimento.
                                        'per_day_interest' => true, // Juros após vencimento.
                                        'items' => array(
                                            array(
                                                'description' => 'pteste',
                                                'quantity' => '1',
                                                'item_id' => '12',
                                                'price_cents' => '1100'
                                            ) // em centavos
                                        ),
                                    );
                                    $data_post = json_encode($data);
                                    $url = "http://api.paghiper.com/transaction/create/";
                                    $mediaType = "application/json"; // formato da requisição
                                    $charSet = "UTF-8";
                                    $headers = array();
                                    $headers[] = "Accept: " . $mediaType;
                                    $headers[] = "Accept-Charset: " . $charSet;
                                    $headers[] = "Accept-Encoding: " . $mediaType;
                                    $headers[] = "Content-Type: " . $mediaType . ";charset=" . $charSet;
                                    $ch = curl_init();
                                    curl_setopt($ch, CURLOPT_URL, $url);
                                    curl_setopt($ch, CURLOPT_POST, 1);
                                    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_post);
                                    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
                                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                                    $result = curl_exec($ch);
                                    $json = json_decode($result, true);
                                    // captura o http code
                                    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                                    if ($httpCode == 201) :
                                        // CÓDIGO 201 SIGNIFICA QUE O BOLETO FOI GERADO COM SUCESSO
                                        echo $result;
                                        // Exemplo de como capturar a resposta json
                                        $transaction_id = $json['create_request']['transaction_id'];
                                        $url_slip = $json['create_request']['bank_slip']['url_slip'];
                                        $digitable_line = $json['create_request']['bank_slip']['digitable_line'];
                                    else :
                                        echo $result;
                                    endif;
                                    ?>


                                </div>
                            </div>

                        <?php } ?>
  • 1

    and where you get the $row?

  • of my <?php foreach ($query->result() as $Row) { ? > but it is outside of <?php ? > of paghiper

  • here is a print https://prnt.sc/r0cxe8

  • Create an example we can run and understand, read the tips: https://answall.com/help/minimal-reproducible-example

  • I’ll put the whole code, basicamento I have 2 php functions on the page, one I did to pull information from the database, the other is a php that comes straight from the paghiper, I want to get the variable I made inside the foreach and inside the php Arry that comes from the paghyper

1 answer

-4


I created a class that will help you a lot in this regard.

<?php

class BoletosPh{
	/*
	$morador = $crud->select('usuarios', 'WHERE id = 1');
	$arrayChar = array(".", ",", "-", "(", ")", " ", "R", "r", "$");
	foreach ($morador as $dt){
		$DadosMorador['email'] = $dt['email'];
		$DadosMorador['nome'] = $dt['nome']; // nome completo ou razao social
		$DadosMorador['cpf_cnpj'] = str_replace($arrayChar, "", $dt['cpf']); // cpf ou cnpj
		$DadosMorador['telefone'] = str_replace($arrayChar, "", $dt['celular']); // fixou ou móvel
		$DadosMorador['rua'] = $dt['endereco'];
		$DadosMorador['numero'] = $dt['numero'];
		$DadosMorador['complemento'] = $dt['complemento'];
		$DadosMorador['bairro'] = $dt['bairro'];
		$DadosMorador['cidade'] = $dt['cidade'];
		$DadosMorador['estado'] = $dt['uf'];
		$DadosMorador['cep'] = str_replace($arrayChar, "", $dt['cep']); //somente numeros
	}
	
	$itens['produto']= "Condominio";
	$itens['quantidade']= "1";
	$itens['id_produto']= "12345";
	$itens['preco']= str_replace($arrayChar, "", $valor); //em centavos
		
	$outros['desconto'] = str_replace($arrayChar, "", $desconto),
	$outros['valor_envio'] = str_replace($arrayChar, "", $valor_envio,
	$outros['metodo_envio'] = "PAC", //Exemplo: SEDEX, SEDEX10, PAC, TRANSPORTADORA, MOTOBOY, RETIRADA NO LOCAL, etc.
	$outros['exibe_descricao'] = "true",
	$outros['dias_para_vencer'] = "5",
	$outros['dias_apos_vencimento'] = "5",
	
	
	//Buscar na tabela boletoph_lanca, na coluna nossonum que será impresso nome, e com nome da coluna do id.
	$lastNossoNum = $crud->ultimoitem('boletoph_lanca', 'nossonum', 'id');
	$nossonumero = (intval($lastNossoNum) <= 1000)?"1001":intval($lastNossoNum)+1;
	
	$GeraBoleto = $boletosPh->GeraBoleto($nossonumero, $DadosMorador, $itens);
	*/
	function GeraBoleto($nossonumero, array $DadosMorador, array $produto, array $outros = null){
		$pontos = array(",", ".", "R", "r", "$", " ");
			
		$itens = array(
					array (
						'description' => $produto['produto'],
						'quantity' => $produto['quantidade'],
						'item_id' => $produto['id_produto'],
						'price_cents' => str_replace($pontos, "", $produto['preco'])
					), 
				);
		$data = array(
			'apiKey' => $_SESSION['PH_APIKEY'],
			'order_id' => $nossonumero,
			'payer_email' => $DadosMorador['email'],
			'payer_name' => $DadosMorador['nome'], 
			'payer_cpf_cnpj' => $DadosMorador['cpf_cnpj'], 
			'payer_phone' => (isset($DadosMorador['telefone'])) ? $DadosMorador['telefone'] : '', 
			'payer_street' => (isset($DadosMorador['rua'])) ? $DadosMorador['rua'] : '',
			'payer_number' => (isset($DadosMorador['numero'])) ? $DadosMorador['numero'] : '',
			'payer_complement' => (isset($DadosMorador['complemento'])) ? $DadosMorador['complemento'] : '',
			'payer_district' => (isset($DadosMorador['bairro'])) ? $DadosMorador['bairro'] : '',
			'payer_city' => (isset($DadosMorador['cidade'])) ? $DadosMorador['cidade'] : '',
			'payer_state' => (isset($DadosMorador['estado'])) ? $DadosMorador['estado'] : '', // apenas sigla do estado
			'payer_zip_code' => (isset($DadosMorador['cep'])) ? $DadosMorador['cep'] : '',
			'fixed_description' => ($outros != null) ? $outros['exibe_descricao'] : "true", //frase pré configurada no painel do PagHiper
			'discount_cents' => ($outros != null) ? str_replace($pontos, "", $outros['desconto']) : "0", // em centavos
			'shipping_price_cents' => ($outros != null) ? str_replace($pontos, "", $outros['valor_envio']) : "0", // em centavos
			'shipping_methods' => ($outros != null) ? $outros['metodo_envio'] : "PAC",
			'type_bank_slip' => "boletoA4", 
			'days_due_date' => ($outros != null) ? $outros['dias_para_vencer'] : "5", 
			'late_payment_fine' => "2",
			'per_day_interest' => "true",
			'open_after_day_due' => ($outros != null) ? $outros['dias_apos_vencimento'] : "5", //Número máximo de dias em que o boleto poderá ser pago após o vencimento.
			'items' => $itens,
		);
		$data_post = json_encode( $data );
		$url = "http://api.paghiper.com/transaction/create/";
		$mediaType = "application/json"; // formato da requisição
		$charSet = "UTF-8";
		$headers = array();
		$headers[] = "Accept: ".$mediaType;
		$headers[] = "Accept-Charset: ".$charSet;
		$headers[] = "Accept-Encoding: ".$mediaType;
		$headers[] = "Content-Type: ".$mediaType.";charset=".$charSet;
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data_post);
		curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		$result = curl_exec($ch);
		$json = json_decode($result, true);
		// captura o http code
		$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		if($httpCode == 201):
			$boleto['transaction_id'] = $json['create_request']['transaction_id'];
			$boleto['url_slip'] = $json['create_request']['bank_slip']['url_slip'];
			$boleto['digitable_line'] = $json['create_request']['bank_slip']['digitable_line'];
			$boleto['data_venc'] = $json['create_request']['due_date'];
			$boleto['valor'] = $json['create_request']['value_cents'];
			$boleto['status'] = $json['create_request']['status'];
			$boleto['order_id'] = $json['create_request']['order_id'];
			$boleto['created_date'] = $json['create_request']['created_date'];

			$ex = explode('/', $boleto['url_slip']);
			$boleto['nosso_numero'] = $ex[count($ex)-1];

			return($boleto);
		else:
			return("Não foi possível criar o boleto");
		endif;
	}
	/*
	$transaction_id="D5ZJP1WKV37IFGOK";
	Exemplo:
	Consulta= $boletosPh->StatusBoleto($apiKey, $token, $transaction_id);
	Cancelamento= $boletosPh->StatusBoleto($token, $transaction_id, true);
	
	status pode ser:
	pending=	aguardando
	canceled=	cancelado
	completed=	completo
	paid=		aprovado
	processing=	analise
	refunded=	estornado
	*/
	function StatusBoleto($transaction_id, $cancelar=false){		
		if($cancelar == true):
			$data = array(
			'apiKey' => $_SESSION['PH_APIKEY'],
			'token' => $_SESSION['PH_TOKEN'],
			'status' => "canceled",
			'transaction_id' => $transaction_id,
			);
			$data_post = json_encode( $data );
			$url = "https://api.paghiper.com/transaction/cancel/";
		
		else:
			$data = array(
			'apiKey' => $_SESSION['PH_APIKEY'],
			'token' => $_SESSION['PH_TOKEN'],
			'transaction_id' => $transaction_id,
			);
			$data_post = json_encode( $data );
			$url = "https://api.paghiper.com/transaction/status/";
		endif;
		//Configuracao do cabecalho da requisicao
		$mediaType = "application/json";
		$charSet = "UTF-8";
		$headers = array();
		$headers[] = "Accept: ".$mediaType;
		$headers[] = "Accept-Charset: ".$charSet;
		$headers[] = "Accept-Encoding: ".$mediaType;
		$headers[] = "Content-Type: ".$mediaType.";charset=".$charSet;
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data_post);
		curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		$result = curl_exec($ch);
		$json = json_decode($result, true);
		### captura o http code
		$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		if($httpCode == 201): // CÓDIGO 201 SIGNIFICA QUE O BOLETO FOI GERADO COM SUCESSO
			if($cancelar == false):
				$boleto['result'] = $json['status_request']['result']; //Campo que identifica se houve êxito na busca e se os parâmetros estão corretos. Esperado: success ou reject
				$boleto['response_message'] = $json['status_request']['response_message'];
				$boleto['order_id'] = $json['status_request']['order_id'];
				$boleto['status'] = $json['status_request']['status'];
				$boleto['status_date'] = $json['status_request']['status_date']; //Data da ultima alteração de status Exemplo esperado: 2017-07-14 21:21:02
				$boleto['due_date'] = $json['status_request']['due_date']; //Data do vencimento do boleto Exemplo esperado 2017-07-12
				$boleto['value_cents'] = $json['status_request']['value_cents'];
				$boleto['late_payment_fine'] = $json['status_request']['late_payment_fine']; //Esse campo só será retornado se na requisição do Boleto foi configurado a opção Multa
				$boleto['per_day_interest'] = $json['status_request']['per_day_interest']; //Esse campo só será retornado se na requisição do Boleto foi configurado a opção Juros
				$boleto['open_after_day_due'] = $json['status_request']['open_after_day_due']; //Número máximo de dias em que o boleto poderá ser pago após o vencimento.
				$boleto['digitable_line'] = $json['status_request']['bank_slip']['digitable_line'];
				$boleto['url_slip'] = $json['status_request']['bank_slip']['url_slip'];
				$boleto['http_code'] = $json['status_request']['http_code'];

				$ex = explode('/', $boleto['url_slip']);
				$boleto['nosso_numero'] = $ex[count($ex)-1];

				return($boleto);
			else:
				if($cancelar == false):
					return ($json['status_request']['response_message']);
				else:
					return ($json['cancellation_request']['response_message']);
				endif;
			endif;
		else:
			if($cancelar == false):
					return ($json['status_request']['response_message']);
				else:
					return ($json['cancellation_request']['response_message']);
				endif;
		endif;
	}
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.