Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cuál es el principio técnico de los sobres rojos de WeChat?

¿Cuál es el principio técnico de los sobres rojos de WeChat?

class Wxapi {

private $app_id = 'wxXXXXXXXXXXXXXXXX'; //Aplicación de cuenta pública, úsala para solicitar una cuenta pública primero

private $app_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' / /secreto público, el usuario obtendrá el token de autorización de usuario

private $app_mchid = 'XXXXXXXXXXXXXXXXXX';//ID del número de comerciante

función __construct(){

/ /hacer algo aquí....

}

/**

* Pago WeChat

* @param string $openid usuario openid

*/

función pública pagar($re_openid)

{

include_once('WxHongBaoHelper.php');

$commonUtil = new CommonUtil();

$wxHongBaoHelper = nuevo WxHongBaoHelper();

$ wxHongBaoHelper->setParameter("nonce_str", $this-> great_rand()) ;

//Cadena aleatoria, no más de 32 caracteres de longitud

$wxHongBaoHelper->

setParameter ("mch_billno", $this->app_mchid.date('YmdHis').rand(1000, 9999));

//Número de pedido

$wxHongBaoHelper-> setParameter("mch_id", $this->app_mchid);//número de comerciante

$wxHongBaoHelper->setParameter("wxappid", $this->app_id);

$wxHongBaoHelper ->setParameter("nick_name", 'Red Packet');//Nombre del proveedor

$wxHongBaoHelper->setParameter("send_name", 'Red Packet');//Nombre de remitente del sobre rojo

p>

$ wxHongBaoHelper->setParameter("re_openid", $re_openid);//openid r

relativo a Medical Pulse Connect

$wxHongBaoHelper->setParameter("total_amount", 100);//monto del pago en centavos

$wxHongBaoHelper->.setParameter("re_openid", $ re_openid);//openid relativo a Medical Pulse Connect

$wxHongBaoHelper->setParameter("min_value",100);//Cantidad mínima del sobre rojo (centavos)

$wxHongBaoHelper - >setParameter("max ("deseos", '¡Gracias por participar en el evento de distribución de sobres rojos y les deseamos un feliz año nuevo!)

//Sobres rojos deseando

$wxHongBaoHelper->setParameter("client_ip ", '127.0.0.1');//Dirección IP de la máquina que llama a la interfaz

$wxHongBaoHelper->. setParameter("act_name", 'Red Packet Activity' );//Nombre de la actividad

$wxHongBaoHelper-> setParameter("comentario", '¡Cómpralo ahora!') )

$postXml = $wxHongBaoHelper->create_hongbao_xml(); /p>

$url = '/mmpaymkttransfers/sendredpack';

$responseXml = $wxHongBaoHelper->curl_post_ssl($url, $postXml

//Utilizado como la salida de depuración resultante

//echo htmlentities($responseXml,ENT_COMPAT,'UTF-8');

$responseObj = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA);

Devuelve $respuestaObj->return_code;

}

Obtener cadena aleatoria party

1

2

3

4

5

6

7

8

9

10

11

/**

* Generar números aleatorios

* /

función pública great_rand(){

$str = '1234567890abcdefghijklmnopqrstuvwxyz';

for($i=0;$i<30;$i++) {

$j=rand(0,35);

$t1 .= $str[$j];

}

Devuelve $t1;

}

Algoritmo de firma

1

2

3

4

5

6

7

8

>9

'zhengshu'.DIRECTORY_SEPARATOR.'rootca.pem');

if( count($aHeader) >= 1 ){

curl_setopt( $ch, CURLOPT_HTTPHEADER, $ aHeader);

}

curl_setopt($ch,CURLOPT_POST, 1);

curl_setopt($ch,CURLOPT_POSTFIELDS,$vars );

$datos = curl_exec($ ch);

if($datos){

curl_close($ch);

devolver $datos;

}

else {

$error = curl_errno($ch);

//echo " llamada falld, errorCode:$error\n";

curl_close($ch);

Devuelve falso;

}

}

Archivo Portal

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@require "pay.php";

// Obtener información del usuario

$get = $_GET[ 'param'];

$code = $_GET['code'];

// Determinar si el código existe

if($get= = ' access_token' && ! vacío($código)){

$param['param'] = 'acceso_token'

$param['código'] = $código;< / p>

$paquete = nuevo paquete ();

//obtener información de openid del usuario

$userinfo = $packet->_route('userinfo',$param)

if(empty($userinfo['openid'])){

salir(" NOAUTH");

}

//llamar al método de pago

$packet->_route('wxpacket',array('openid'=>$userinfo['openid']));

p>

}else{

$packet->_route('información de usuario');

}