Maison  >  Article  >  développement back-end  >  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
WBOYoriginal
2023-05-13 22:31:341208parcourir

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);
  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);
  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>';
  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 '支付失败';
  }

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!

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