在PHP中实现微信支付的发起和查询

随着微信支付的普及,越来越多的网站需要集成微信支付功能。在这篇文章中,我们将讨论如何在PHP中实现微信支付的发起和查询

  1. 调用统一下单API

在PHP中发起微信支付,第一步是调用微信支付的统一下单API来生成预支付订单。该API需要传递一些必要的参数,包括商户的ID、支付金额、订单号、回调URL等。以下是一个示例代码:

<?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. 获取预支付订单信息

调用统一下单API后,我们需要获取预支付订单的信息,包括预支付交易会话标识(prepay_id)和其他必要的参数。以下是一个示例代码:

<?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. 跳转至支付页面

获取预支付订单信息后,我们可以将获取到的参数传递给前端,让用户在微信客户端中发起支付。以下是一个示例代码:

<?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. 查询支付结果

支付完成后,我们需要查询支付结果以确保交易已成功完成。以下是一个示例代码:

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

登录后复制

总结:

关于在PHP中实现微信支付的发起和查询的文章就分享到这,如果对你有帮助欢迎继续关注我们哦

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/263605.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
php学习php学习订阅用户
上一篇 2023年5月18日 12:47
下一篇 2023年5月18日 12:47

相关推荐

  • (实用篇)php精确的统计在线人数的方法

    这是一个非常精确的,通过php实现统计在线人数的方法,想知道怎么实现的请耐心阅读。 <?php $filename='online.txt';//数据文件 $cookiename='VGOTCN_OnLineCount';//cookie名称 $onlinetime=600;//在线有效时间…

    2016年10月25日
    0233
  • 关于php图像处理技术的小结

    图像压缩:imagecopyresampled 图片在指定范围内压缩: 1000*800        50*50               比例==20,宽的部分压缩的比例 800*1000      50*50                  比例==20,高度部分压缩的比例   兼容主流…

    2018年9月11日
    0398
  • 如何使用PHP和Docker构建可部署的应用。

    随着互联网的快速发展,越来越多的应用程序需要基于云服务器进行部署,而使用 Docker 容器技术对于实现这一目标来说是一个很好的选择。在本篇文章中,我们将介绍如何使用 PHP 和 Docker 构建可部署的应用程序,从而…

    2023年5月30日
    04
  • PHP中的路由设计。

    随着Web应用程序的不断发展壮大,我们需要一种灵活、可扩展、易维护的框架来简化开发过程。路由设计是Web应用程序框架中的一个重要组成部分,它允许我们将URL地址映射到应用程序中的特定操作。在PHP中,路由设计需…

    2023年5月30日
    07
  • PHP入门指南:数组。

    PHP是一种服务器端脚本语言,适用于Web开发,它可以通过处理HTML表单、访问数据库和使用Cookies等方式来创建动态交互性Web页面。在PHP中,数组是一种非常重要的数据类型,本篇文章将为您带来PHP数组的入门指南,并…

    2023年5月22日
    03
  • PHP8中的数组函数:array_unshift()的多种应用场景。

    PHP 是一门流行的服务器端编程语言,被广泛地应用于 web 开发和数据处理。与其它编程语言一样,PHP 也提供了许多内置函数来简化开发者的工作。其中一个常用的函数是 array_unshift()。array_unshift() 函数的作用是…

    2023年5月21日
    05
  • PHP中的SEO优化技巧。

    随着互联网发展的不断深入,越来越多的企业开始重视SEO优化技巧,以提高自己的品牌知名度和业务流量。其中,PHP是一种常用的编程语言,几乎所有的网站都使用它来开发和维护自己的网站。因此,在PHP中使用一些简单易…

    2023年5月30日
    04
  • php如何实现简单的插入操作。

    作为一门广受欢迎的编程语言,在 Web 开发中,PHP 被广泛应用的其中一个应用就是实现数据库操作。而插入操作是数据库操作中最基本也是最常见的操作之一。在 PHP 中,要实现插入操作并不难,只需要按照以下几个步骤…

    2023年6月3日
    02

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息