Maison > développement back-end > tutoriel php > Implémentation de l'initiation et de la requête de paiement WeChat en PHP

Implémentation de l'initiation et de la requête de paiement WeChat en PHP

WBOY
Libérer: 2023-05-13 22:32:01
original
1264 Les gens l'ont consulté

Avec la popularité du paiement WeChat, de plus en plus de sites Web doivent intégrer la fonction de paiement WeChat. Dans cet article, nous verrons comment implémenter l'initiation et la requête de paiement WeChat en PHP.

  1. Appelez l'API de commande unifiée

Pour lancer le paiement WeChat en PHP, la première étape consiste à appeler l'API de commande unifiée du paiement WeChat pour générer une commande de prépaiement. L'API doit transmettre certains paramètres nécessaires, notamment l'identifiant du commerçant, le montant du paiement, le numéro de commande, l'URL de rappel, etc. Voici un exemple de code :

<?php
  require_once('WxPayApi.php');
  require_once('WxPayUnifiedOrder.php');
  
  $order = new WxPayUnifiedOrder();
  $order->SetBody('商品描述');
  $order->SetOut_trade_no('订单号');
  $order->SetTotal_fee('支付金额');
  $order->SetNotify_url('回调URL');
  $order->SetTrade_type('JSAPI');
  $order->SetOpenid('用户OpenID');
  
  $result = WxPayApi::unifiedOrder($order);
Copier après la connexion
  1. Obtenir des informations sur la commande de prépaiement

Après avoir appelé l'API de commande unifiée, nous devons obtenir les informations sur la commande de prépaiement, y compris l'ID de session de transaction de prépaiement (prepay_id) et d'autres paramètres nécessaires. Voici un exemple de code :

<?php
  require_once('WxPayApi.php');
  require_once('WxPayData.php');
  
  $input = new WxPayData();
  $input->SetBody('商品描述');
  $input->SetOut_trade_no('订单号');
  $input->SetTotal_fee('支付金额');
  $input->SetNotify_url('回调URL');
  $input->SetTrade_type('JSAPI');
  $input->SetOpenid('用户OpenID');
  
  $result = WxPayApi::unifiedOrder($input);
  $prepay_id = $result['prepay_id'];
  $params = [
    'appId' => $result['appid'],
    'timeStamp' => time(),
    'nonceStr' => $result['nonce_str'],
    'package' => "prepay_id={$prepay_id}",
    'signType' => 'MD5'
  ];
  $params['paySign'] = WxPayApi::getSign($params);
Copier après la connexion
  1. Accédez à la page de paiement

Après avoir obtenu les informations de commande prépayée, nous pouvons transmettre les paramètres obtenus au front-end pour permettre à l'utilisateur d'initier le paiement dans le client WeChat. Voici un exemple de code :

<?php
  echo '<script language="javascript">';
  echo 'WeixinJSBridge.invoke("getBrandWCPayRequest", {
    "appId":"'.$params['appId'].'",
    "timeStamp":"'.$params['timeStamp'].'",
    "nonceStr":"'.$params['nonceStr'].'",
    "package":"'.$params['package'].'",
    "signType":"'.$params['signType'].'",
    "paySign":"'.$params['paySign'].'"
  }, function(res){
    if(res.err_msg == "get_brand_wcpay_request:ok" ){
      alert("支付成功");
    }else{
      alert("支付失败");
    }
  });';
  echo '</script>';
Copier après la connexion
  1. Requête des résultats du paiement

Une fois le paiement effectué, nous devons interroger les résultats du paiement pour nous assurer que la transaction a été effectuée avec succès. Voici un exemple de code :

<?php
  require_once('WxPayApi.php');
  
  $input = new WxPayOrderQuery();
  $input->SetOut_trade_no('订单号');
  
  $result = WxpayApi::orderQuery($input);
  if ($result['trade_state'] == 'SUCCESS') {
    echo '支付成功';
  } else {
    echo '支付失败';
  }
Copier après la connexion

Résumé :

Ce qui précède représente l'ensemble du processus d'initiation et d'interrogation du paiement WeChat en PHP. Lorsque nous devons intégrer le paiement WeChat sur le site Web, nous pouvons suivre les étapes ci-dessus. Il est recommandé d'utiliser le SDK officiellement fourni pour le développement, ce qui peut économiser beaucoup de temps et d'énergie.

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