Maison > Applet WeChat > Développement WeChat > Méthodes de distribution des enveloppes rouges du compte public WeChat et de mise en œuvre des paiements d'entreprise

Méthodes de distribution des enveloppes rouges du compte public WeChat et de mise en œuvre des paiements d'entreprise

小云云
Libérer: 2018-03-20 14:17:32
original
3740 Les gens l'ont consulté

L'enveloppe rouge WeChat Cash est l'un des outils marketing fournis par la plateforme marchande de paiement WeChat. Elle est profondément appréciée par les commerçants et les utilisateurs depuis son lancement. Les commerçants peuvent émettre des enveloppes rouges en espèces aux utilisateurs de WeChat Pay via cette plateforme. Une fois que l'utilisateur a reçu l'enveloppe rouge, les fonds arrivent sur son compte de changement de paiement WeChat, ce qui suscite une réponse enthousiaste aux activités marketing du commerçant dans ses opérations quotidiennes.
1. Vous n'avez pas besoin de payer le répertoire d'autorisation pour envoyer des enveloppes rouges, mais vous devez appeler l'adresse IP de l'API de l'enveloppe rouge dans le backend du commerçant, qui est l'IP de votre serveur qui initie la demande d'enveloppe rouge. . Le chemin d'opération est : [Connexion à la plateforme marchande——> Centre de produits——> Enveloppe rouge Cash——>Paramètres du produit] (Remarque : le bouton d'opération « Paramètres du produit » n'apparaîtra qu'après avoir activé l'argent liquide. fonction enveloppe rouge).
2. Un certificat Api est requis pour envoyer des enveloppes rouges.
3. Avant d'émettre des enveloppes rouges en espèces, veuillez vous assurer que vous disposez de fonds suffisants. L'argent que les autres vous paient via WeChat Pay pour acheter des choses sur votre plateforme n'est pas le même que l'argent que vous devez dépenser pour envoyer des enveloppes rouges. L'argent ici doit être rechargé séparément. Le chemin d'opération est le suivant : [Connectez-vous au commerçant. Plate-forme——>Centre de compte——> ; Gestion des fonds——>Recharge].
4. Vous pouvez emprunter des droits lors de l'envoi d'enveloppes rouges. Par exemple, le compte public A est un compte de service d'authentification de paiement WeChat et votre événement est détenu dans le compte public B (le compte d'abonnement ou le compte de service est acceptable). peut utiliser A WeChat Pay envoie des enveloppes rouges, mais l'envoi d'enveloppes rouges nécessite de connaître l'openid de l'utilisateur. Lors de l'obtention de cet openid, vous devez également emprunter le compte public A pour l'obtenir. être l'openid correspondant à A de l'utilisateur.

Préparation pré-opérationnelle, c'est-à-dire certaines configurations de la plateforme marchande de paiement WeChat, veuillez vous référer au document : https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon .php?chapter= 13_3&index=2

En fait, l'envoi d'enveloppes rouges via les comptes publics WeChat est similaire aux paiements d'entreprise via les comptes publics WeChat, je vais donc trier les paiements d'entreprise en passant. allez directement au code :

/**
 * 公众号发红包
 * @param string $openid 	用户openID
 * @param string $money 	金额
 * @param string $trade_no  订单编号
 * @param string $act_name  活动名称
 * @return multitype 		支付结果
 */
public function sendredpack($openid,$money,$trade_no,$act_name){
	$config = $this->config;
	
	$data = array(
		'nonce_str' 		=> self::getNonceStr(),
		'mch_billno'     	=> $trade_no,
		'mch_id' 			=> $config['mch_id'],
		'wxappid' 			=> $config['wxappid'],
		'send_name' 		=> '江南极客',
		're_openid'    		=> $openid,
		'total_amount'    	=> $money * 100, //付款金额单位为分
		'total_num'    		=> 1,
		'wishing'      		=> '祝您天天开心!',
		'client_ip' 		=> self::getip(),
		'act_name' 			=> $act_name,
		'remark' 			=> 'From 江南极客'
	);
	
	$data['sign'] = self::makeSign($data);
	
	//构造XML数据
	$xmldata = self::array2xml($data);
	
	$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';
	//发送post请求
	$res = self::curl_post_ssl($url, $xmldata);
	
	if(!$res){
		return array('status'=>0, 'msg'=>"Can't connect the server" );
	}
	
	// 这句file_put_contents是用来查看服务器返回的结果 测试完可以删除了
	//file_put_contents('./log.txt',$res,FILE_APPEND);
	
	$content = self::xml2array($res);
	if(strval($content['return_code']) == 'FAIL'){
		return array('status'=>0, 'msg'=>strval($content['return_msg']));
	}
	if(strval($content['result_code']) == 'FAIL'){
		return array('status'=>0, 'msg'=>strval($content['err_code']).':'.strval($content['err_code_des']));
	}
	return $content;
}
	
/**
 * 公众号企业支付
 * @param string $openid 	用户openID
 * @param string $money 	金额
 * @param string $trade_no  订单编号
 * @param string $desc  	付款操作说明信息(比如:提现)
 * @return string 	支付结果
 */
public function mchpay($openid,$money,$trade_no,$desc){
	$config = $this->config;
	$data = array(
		'mch_appid' => $config['wxappid'],
		'mchid'     => $config['mch_id'],
		'nonce_str' => self::getNonceStr(),
		'partner_trade_no' => $trade_no, 
		'openid'    => $openid,
		'check_name'=> 'NO_CHECK', 			//OPTION_CHECK不强制校验真实姓名, FORCE_CHECK:强制 NO_CHECK:
		'amount'    => $money * 100, 		//付款金额单位为分
		'desc'      => $desc,
		'spbill_create_ip' => self::getip()
	);
	
	//生成签名
	$data['sign'] = self::makeSign($data);
	
	//return $config;
	
	//构造XML数据
	$xmldata = self::array2xml($data);
	$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';
	//发送post请求
	$res = self::curl_post_ssl($url, $xmldata);
	if(!$res){
		return array('status'=>0, 'msg'=>"Can't connect the server" );
	}
	// 这句file_put_contents是用来查看服务器返回的结果 测试完可以删除了
	//file_put_contents('./log1.txt',$res,FILE_APPEND);
	
	//付款结果分析
	$content = self::xml2array($res);
	if(strval($content['return_code']) == 'FAIL'){
		return array('status'=>0, 'msg'=>strval($content['return_msg']));
	}
	if(strval($content['result_code']) == 'FAIL'){
		return array('status'=>0, 'msg'=>strval($content['err_code']).':'.strval($content['err_code_des']));
	}
   
	return $content;
}
Copier après la connexion

Il s'agit d'une classe encapsulée, et appeler la méthode est super simple :

include 'wxmerpay.class.php';		//引入类文件
$config = array(
	'wxappid'		=> 'wx123456789',
	'mch_id'	 	=> '1123456781',
	'pay_apikey' 	=> '1234567898765432123456789',
	'api_cert'		=> $cert_path . '/apiclient_cert.pem',	
	'api_key'		=> $cert_path . '/apiclient_key.pem',
	'rootca'		=> $cert_path . '/rootca.pem'
);
$redpack = new WxRedpack($config);	//初始化
$redpack->sendredpack($openid,$money,$trade_no,$act_name);  //发红包
Copier après la connexion

Est-ce si simple ? droite! C'est aussi simple que cela, mais il utilise de nombreuses fonctions et méthodes auto-encapsulées. Téléchargement du code source : http://download.csdn.net/download/sinat_35861727/9956485
Si vous le trouvez vraiment utile, veuillez lui donner un aimez et laissez un like Bonne critique, merci ! Si vous avez des questions, vous pouvez me le dire dans la zone commentaire !

Recommandations associées :

Développement de la fonction de remboursement pour le paiement WeChat

Exemples de développement PHP du paiement WeChat et du paiement Alipay

Partage de recherches sur l'interface de paiement WeChat

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal