¿Cuál es el principio técnico de los sobres rojos de WeChat?
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'); p>
$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 p>
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');
}