Maison  >  Article  >  développement back-end  >  Comment utiliser PHP pour développer la fonction de paiement WeChat

Comment utiliser PHP pour développer la fonction de paiement WeChat

WBOY
WBOYoriginal
2023-08-17 10:31:442112parcourir

Comment utiliser PHP pour développer la fonction de paiement WeChat

Comment utiliser PHP pour développer la fonction de paiement WeChat

En tant que méthode de paiement en ligne pratique, le paiement WeChat est profondément apprécié par les commerçants et les consommateurs. Pour les développeurs, développer les fonctions de paiement WeChat en langage PHP est une tâche très importante. Cet article expliquera comment utiliser PHP pour développer les fonctions de paiement WeChat et fournira des exemples de code correspondants.

  1. Obtenez l'interface de paiement WeChat

Avant de commencer le développement, vous devez d'abord demander l'interface de paiement de WeChat et obtenir la clé API et le numéro de commerçant appropriés. Connectez-vous à la plateforme de développement de paiement WeChat, demandez l'interface de paiement conformément aux directives et obtenez la clé API et le numéro de commerçant.

  1. Configurer l'environnement PHP

Avant de commencer le développement, assurez-vous d'avoir installé l'environnement PHP et activé les extensions correspondantes : extension cURL et extension openssl. Ces deux extensions sont utilisées en PHP pour envoyer des requêtes HTTPS et chiffrer les données, et sont des extensions nécessaires pour implémenter les fonctions de paiement WeChat.

  1. Configuration des paramètres de demande de paiement

Avant de faire une demande de paiement, vous devez configurer les paramètres de paiement pertinents et générer une signature selon le document de l'interface de paiement WeChat. Voici un exemple de code :

// 配置支付参数
$params = [
    'appid' => 'YOUR_APPID',
    'mch_id' => 'YOUR_MCH_ID',
    'nonce_str' => md5(time() . mt_rand(0, 1000)),
    'body' => '商品描述',
    'out_trade_no' => '订单号',
    'total_fee' => '支付金额',
    'spbill_create_ip' => $_SERVER['REMOTE_ADDR'],
    'notify_url' => '支付回调地址',
    'trade_type' => 'JSAPI',
    'openid' => '用户openid',
];

// 生成签名
$sign = '';
foreach ($params as $key => $value) {
    if ($key != 'sign' && $value != '') {
        $sign .= $key . '=' . $value . '&';
    }
}
$sign .= 'key=' . 'YOUR_API_KEY'; // API密钥
$params['sign'] = strtoupper(md5($sign));
  1. Initier une demande de paiement

Initier une demande de paiement via la fonction de bibliothèque cURL et obtenir les informations de commande prépayée. Voici l'exemple de code :

$xml_data = "<xml>";
foreach ($params as $key => $value) {
    $xml_data .= "<" . $key . ">" . $value . "</" . $key . ">";
}
$xml_data .= "</xml>";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.mch.weixin.qq.com/pay/unifiedorder');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);
$response = curl_exec($ch);
curl_close($ch);

$result = simplexml_load_string($response);

if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS') {
    $prepay_id = $result->prepay_id;
    // 保存prepay_id,用于后续支付
}
  1. Générer les paramètres de paiement

Générer les paramètres de paiement via prepay_id, qui est utilisé pour évoquer la page de paiement WeChat. Voici l'exemple de code :

$nonce_str = md5(time() . mt_rand(0, 1000));
$prepay_params = [
    'appId' => 'YOUR_APPID',
    'timeStamp' => time(),
    'nonceStr' => $nonce_str,
    'package' => 'prepay_id=' . $prepay_id,
    'signType' => 'MD5',
];
$sign = '';
ksort($prepay_params);
foreach ($prepay_params as $key => $value) {
    $sign .= $key . '=' . $value . '&';
}
$sign .= 'key=' . 'YOUR_API_KEY'; // API密钥
$prepay_params['paySign'] = strtoupper(md5($sign));
  1. Appel de la page frontale

Transmettez les paramètres de paiement générés au front-end et appelez l'interface de paiement WeChat via JS.

function onBridgeReady() {
    WeixinJSBridge.invoke(
        'getBrandWCPayRequest', {
            'appId': '<?php echo $prepay_params["appId"]; ?>',
            'timeStamp': '<?php echo $prepay_params["timeStamp"]; ?>',
            'nonceStr': '<?php echo $prepay_params["nonceStr"]; ?>',
            'package': '<?php echo $prepay_params["package"]; ?>',
            'signType': '<?php echo $prepay_params["signType"]; ?>',
            'paySign': '<?php echo $prepay_params["paySign"]; ?>'
        },
        function (res) {
            if (res.err_msg == "get_brand_wcpay_request:ok") {
                // 支付成功后的处理逻辑
            }
        }
    );
}

if (typeof WeixinJSBridge == "undefined") {
    if (document.addEventListener) {
        document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
    } else if (document.attachEvent) {
        document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
        document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
    }
} else {
    onBridgeReady();
}

Ce qui précède est l'ensemble du processus d'utilisation de PHP pour développer la fonction de paiement WeChat. Avec ces exemples de code, vous pouvez facilement implémenter la fonctionnalité WeChat Pay et l'appliquer à votre site Web ou application. Je vous souhaite un développement réussi !

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!

Déclaration:
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