Maison Applet WeChat Développement WeChat Implémentation du code PHP de paiement d'entreprise de développement WeChat

Implémentation du code PHP de paiement d'entreprise de développement WeChat

Mar 06, 2017 am 09:22 AM
微信开发

Le but de la rédaction de cet article est principalement dû au fait que le SDK fourni par la plateforme publique WeChat ne fournit pas d'implémentation SDK de cette fonction

En fait, l'implémentation finale repose toujours sur le développement de la plateforme publique WeChat. documents et SDK.

Scénarios d'application pour les paiements d'entreprise : les comptes officiels paient les utilisateurs qu'ils ont suivis, comme le traitement des remboursements, les règlements financiers, etc.

Permettez-moi d'abord de parler de l'idée de mise en œuvre :

Installez-le automatiquement dans le SDK Étendez le composant WxMchPay basé sur la bibliothèque de classes pour réaliser l'expansion des fonctions de paiement de l'entreprise.

Sans plus tarder, passons au code. Voici les composants qui héritent du SDK pour implémenter le paiement d'entreprise :

Référence du paramètre $parameters : Documentation de l'API de paiement d'entreprise

<?php
// 引入SDK
import(&#39;Common.Util.WxPay&#39;);

/**
 * 微信企业付款操作类
 * Author  :  Max.wen
 * DateTime: <15/9/16 11:00>
 */
class WxMchPay extends Wxpay_client_pub
{
    /**
     * API 参数
     * @var array
     * &#39;mch_appid&#39;         # 公众号APPID
     * &#39;mchid&#39;             # 商户号
     * &#39;device_info&#39;       # 设备号
     * &#39;nonce_str&#39;         # 随机字符串
     * &#39;partner_trade_no&#39;  # 商户订单号
     * &#39;openid&#39;            # 收款用户openid
     * &#39;check_name&#39;        # 校验用户姓名选项 针对实名认证的用户
     * &#39;re_user_name&#39;      # 收款用户姓名
     * &#39;amount&#39;            # 付款金额
     * &#39;desc&#39;              # 企业付款描述信息
     * &#39;spbill_create_ip&#39;  # Ip地址
     * &#39;sign&#39;              # 签名
     */
    public $parameters = [];

    public function __construct()
    {
        $this->url = &#39;https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers&#39;;
        $this->curl_timeout = WxPayConf_pub::CURL_TIMEOUT;
    }

    /**
     * 生成请求xml数据
     * @return string
     */
    public function createXml()
    {
        $this->parameters[&#39;mch_appid&#39;] = WxPayConf_pub::APPID;
        $this->parameters[&#39;mchid&#39;]     = WxPayConf_pub::MCHID;
        $this->parameters[&#39;nonce_str&#39;] = $this->createNoncestr();
        $this->parameters[&#39;sign&#39;]      = $this->getSign($this->parameters);
        return $this->arrayToXml($this->parameters);
    }


    /**
     *     作用:使用证书,以post方式提交xml到对应的接口url
     */
    function postXmlSSLCurl($xml,$url,$second=30)
    {
        $ch = curl_init();
        //超时时间
        curl_setopt($ch,CURLOPT_TIMEOUT,$second);
        //这里设置代理,如果有的话
        //curl_setopt($ch,CURLOPT_PROXY, &#39;8.8.8.8&#39;);
        //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
        curl_setopt($ch,CURLOPT_URL, $url);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
        //设置header
        curl_setopt($ch,CURLOPT_HEADER,FALSE);
        //要求结果为字符串且输出到屏幕上
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
        //设置证书
        curl_setopt($ch,CURLOPT_CAINFO, WxPayConf_pub::SSLROOTCA_PATH);
        //使用证书:cert 与 key 分别属于两个.pem文件
        //默认格式为PEM,可以注释
        curl_setopt($ch,CURLOPT_SSLCERTTYPE,&#39;PEM&#39;);
        curl_setopt($ch,CURLOPT_SSLCERT, WxPayConf_pub::SSLCERT_PATH);
        //默认格式为PEM,可以注释
        curl_setopt($ch,CURLOPT_SSLKEYTYPE,&#39;PEM&#39;);
        curl_setopt($ch,CURLOPT_SSLKEY, WxPayConf_pub::SSLKEY_PATH);

        //post提交方式
        curl_setopt($ch,CURLOPT_POST, true);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);
        $data = curl_exec($ch);
        //返回结果
        if($data){
            curl_close($ch);
            return $data;
        }
        else {
            $error = curl_errno($ch);
            echo "curl出错,错误码:$error"."<br>";
            echo "<a href=&#39;http://curl.haxx.se/libcurl/c/libcurl-errors.html&#39;>错误原因查询</a></br>";
            curl_close($ch);
            return false;
        }
    }


}
Copier après la connexion

Implémentation de la fonction de la couche contrôleur :

<?php
/**
 * Author  :  Max.wen
 * DateTime: <15/9/20 16:47>
 */

namespace Home\Controller;


class TestController extends CommonController
{

    /**
     * 企业付款测试
     */
    public function rebate()
    {
        import(&#39;Common.Util.WxMchPay&#39;);
        $mchPay = new \WxMchPay();
        // 用户openid
        $mchPay->setParameter(&#39;openid&#39;, &#39;oy2lbszXkgvlEKThrzqEziKEBzqU&#39;);
        // 商户订单号
        $mchPay->setParameter(&#39;partner_trade_no&#39;, &#39;test-&#39;.time());
        // 校验用户姓名选项
        $mchPay->setParameter(&#39;check_name&#39;, &#39;NO_CHECK&#39;);
        // 企业付款金额  单位为分
        $mchPay->setParameter(&#39;amount&#39;, 100);
        // 企业付款描述信息
        $mchPay->setParameter(&#39;desc&#39;, &#39;开发测试&#39;);
        // 调用接口的机器IP地址  自定义
        $mchPay->setParameter(&#39;spbill_create_ip&#39;, &#39;127.0.0.1&#39;); # getClientIp()
        // 收款用户姓名
        // $mchPay->setParameter(&#39;re_user_name&#39;, &#39;Max wen&#39;);
        // 设备信息
        // $mchPay->setParameter(&#39;device_info&#39;, &#39;dev_server&#39;);

        $response = $mchPay->postXmlSSL();
        if( !empty($response) ) {
            $data = simplexml_load_string($response, null, LIBXML_NOCDATA);
            echo json_encode($data);
        }else{
            echo json_encode( array(&#39;return_code&#39; => &#39;FAIL&#39;, &#39;return_msg&#39; => &#39;transfers_接口出错&#39;, &#39;return_ext&#39; => array()) );
        }
    }
}
Copier après la connexion

Après avoir terminé les deux parties de code ci-dessus, vous pouvez essentiellement appeler l'API de paiement d'entreprise avec succès.

Exemple de structure de données du résultat renvoyé :

{
    "return_code": "SUCCESS",
    "return_msg": { },
    "mch_appid": "wx519cae424099ed6b",
    "mchid": "1228636402",
    "device_info": { },
    "nonce_str": "qjupk84q4iqxkb578hb5h2qiatgcwxwg",
    "result_code": "SUCCESS",
    "partner_trade_no": "test-1442801966",
    "payment_no": "1000018301201509210739170397",
    "payment_time": "2015-09-21 10:19:26"
}
Copier après la connexion

Problèmes possibles :

1. Erreur de certificat CA

Dans WxMchPay, vous pouvez voir, J'ai remplacé la méthode postXmlSSLCurl() de Wxpay_client_pub dans le SDK

Parce que cette méthode dans le SDK par défaut n'est pas livrée avec un certificat CA lors d'une requête CURL POST.

En comparaison, il y a beaucoup

curl_setopt($ch,CURLOPT_CAINFO, WxPayConf_pub::SSLROOTCA_PATH); ​

La fonction est de joindre le certificat CA lors de la demande.

2. Les opérations de transfert vers le même utilisateur sont trop fréquentes, veuillez réessayer plus tard

Cette erreur appartient aux limitations de WeChat. serveur, restrictions spécifiques Il n'y a aucune explication sur la fréquence, mais après des tests réels, elle est d'environ 1 minute.

Vous devez donc faire plus attention lors du développement.

Pour plus d'articles liés à la mise en œuvre du code PHP de paiement des entreprises de développement WeChat, veuillez faire attention au site Web PHP chinois !

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Développement PHP WeChat : Comment implémenter le cryptage et le décryptage des messages Développement PHP WeChat : Comment implémenter le cryptage et le décryptage des messages May 13, 2023 am 11:40 AM

PHP est un langage de script open source largement utilisé dans le développement Web et la programmation côté serveur, notamment dans le développement de WeChat. Aujourd'hui, de plus en plus d'entreprises et de développeurs commencent à utiliser PHP pour le développement de WeChat, car il est devenu un langage de développement vraiment facile à apprendre et à utiliser. Dans le développement de WeChat, le cryptage et le décryptage des messages sont une question très importante car ils impliquent la sécurité des données. Pour les messages sans méthodes de cryptage et de décryptage, les pirates peuvent facilement obtenir les données, ce qui constitue une menace pour les utilisateurs.

Utiliser PHP pour développer des outils de messagerie de masse WeChat Utiliser PHP pour développer des outils de messagerie de masse WeChat May 13, 2023 pm 05:00 PM

Avec la popularité de WeChat, de plus en plus d’entreprises commencent à l’utiliser comme outil marketing. La fonction de messagerie de groupe WeChat est l'un des moyens importants permettant aux entreprises de mener du marketing WeChat. Cependant, si vous comptez uniquement sur l’envoi manuel, il s’agit d’une tâche extrêmement longue et laborieuse pour les spécialistes du marketing. Il est donc particulièrement important de développer un outil de messagerie de masse WeChat. Cet article présentera comment utiliser PHP pour développer des outils d'envoi de masse WeChat. 1. Travail de préparation Pour développer les outils d'envoi de masse WeChat, nous devons maîtriser les points techniques suivants : Connaissance de base du développement de la plateforme publique PHP WeChat Outils de développement : Sub

Développement PHP WeChat : Comment implémenter la gestion des balises utilisateur Développement PHP WeChat : Comment implémenter la gestion des balises utilisateur May 13, 2023 pm 04:31 PM

Dans le développement des comptes publics WeChat, la gestion des balises utilisateur est une fonction très importante, qui permet aux développeurs de mieux comprendre et gérer leurs utilisateurs. Cet article explique comment utiliser PHP pour implémenter la fonction de gestion des balises utilisateur WeChat. 1. Obtenez l'openid de l'utilisateur WeChat Avant d'utiliser la fonction de gestion des balises utilisateur WeChat, nous devons d'abord obtenir l'openid de l'utilisateur. Dans le développement des comptes publics WeChat, il est courant d'obtenir l'openid via l'autorisation de l'utilisateur. Une fois l'autorisation de l'utilisateur terminée, nous pouvons obtenir l'utilisateur via le code suivant

Développement PHP WeChat : Comment implémenter des enregistrements d'envoi de messages de groupe Développement PHP WeChat : Comment implémenter des enregistrements d'envoi de messages de groupe May 13, 2023 pm 04:31 PM

Alors que WeChat devient un outil de communication de plus en plus important dans la vie des gens, sa fonction de messagerie agile est rapidement privilégiée par un grand nombre d'entreprises et de particuliers. Pour les entreprises, développer WeChat en une plate-forme marketing est devenu une tendance, et l'importance du développement de WeChat est progressivement devenue plus importante. Parmi eux, la fonction d'envoi de groupe est encore plus largement utilisée. Alors, en tant que programmeur PHP, comment implémenter des enregistrements d'envoi de messages de groupe ? Ce qui suit vous donnera une brève introduction. 1. Comprendre les connaissances en développement liées aux comptes publics WeChat. Avant de comprendre comment mettre en œuvre des enregistrements d'envoi de messages de groupe, je

Développement PHP WeChat : Comment implémenter la gestion des fenêtres de discussion du service client Développement PHP WeChat : Comment implémenter la gestion des fenêtres de discussion du service client May 13, 2023 pm 05:51 PM

WeChat est actuellement l'une des plateformes sociales comptant la plus grande base d'utilisateurs au monde. Avec la popularité de l'Internet mobile, de plus en plus d'entreprises commencent à prendre conscience de l'importance du marketing WeChat. Lors du marketing WeChat, le service client est un élément crucial. Afin de mieux gérer la fenêtre de discussion du service client, nous pouvons utiliser le langage PHP pour le développement de WeChat. 1. Introduction au développement PHP WeChat PHP est un langage de script open source côté serveur largement utilisé dans le domaine du développement Web. En combinaison avec l'interface de développement fournie par la plateforme publique WeChat, nous pouvons utiliser le langage PHP pour mener WeChat

Développement PHP WeChat : Comment implémenter la fonction de vote Développement PHP WeChat : Comment implémenter la fonction de vote May 14, 2023 am 11:21 AM

Dans le développement des comptes publics WeChat, la fonction de vote est souvent utilisée. La fonction de vote est un excellent moyen pour les utilisateurs de participer rapidement aux interactions, et c'est également un outil important pour organiser des événements et recueillir des opinions. Cet article vous présentera comment utiliser PHP pour implémenter la fonction de vote WeChat. Obtenez l'autorisation du compte officiel WeChat. Tout d'abord, vous devez obtenir l'autorisation du compte officiel WeChat. Sur la plateforme publique WeChat, vous devez configurer l'adresse API du compte public WeChat, le compte officiel et le token correspondant au compte public. Dans le processus de développement en langage PHP, nous devons utiliser le PH officiellement fourni par WeChat

Développement PHP WeChat : Comment implémenter la reconnaissance vocale Développement PHP WeChat : Comment implémenter la reconnaissance vocale May 13, 2023 pm 09:31 PM

Avec la popularité de l'Internet mobile, de plus en plus de personnes utilisent WeChat comme logiciel social, et la plateforme ouverte WeChat a également apporté de nombreuses opportunités aux développeurs. Ces dernières années, avec le développement de la technologie de l’intelligence artificielle, la technologie de reconnaissance vocale est progressivement devenue l’une des technologies les plus populaires dans le développement de terminaux mobiles. Dans le développement de WeChat, la manière de mettre en œuvre la reconnaissance vocale est devenue une préoccupation pour de nombreux développeurs. Cet article expliquera comment utiliser PHP pour développer des applications WeChat afin d'implémenter des fonctions de reconnaissance vocale. 1. Principes de la reconnaissance vocale Avant de présenter comment mettre en œuvre la reconnaissance vocale, comprenons d'abord le langage

Comment utiliser PHP pour le développement WeChat ? Comment utiliser PHP pour le développement WeChat ? May 21, 2023 am 08:37 AM

Avec le développement d’Internet et des appareils mobiles intelligents, WeChat est devenu un élément indispensable dans les domaines social et marketing. Dans cette ère de plus en plus numérique, la manière d'utiliser PHP pour le développement de WeChat est devenue la préoccupation de nombreux développeurs. Cet article présente principalement les points de connaissances pertinents sur la façon d'utiliser PHP pour le développement WeChat, ainsi que certains conseils et précautions. 1. Préparation de l'environnement de développement Avant de développer WeChat, vous devez d'abord préparer l'environnement de développement correspondant. Plus précisément, vous devez installer l'environnement d'exploitation PHP et la plateforme publique WeChat

See all articles