在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)
上一篇 2023年5月18日 12:47
下一篇 2023年5月18日 12:47

相关推荐

  • 如何使用PHP实现微信小程序中的进度条和组件。

    随着微信小程序的不断普及,越来越多的开发者开始关注微信小程序的开发。在微信小程序中,进度条和组件通常用于提高用户体验和界面美观度。本文将介绍如何使用PHP实现微信小程序中的进度条和组件。一、进度条使用...

    2023年6月3日
    00
  • PHP中Memcache缓存的原理及使用方法。

    PHP中Memcache缓存的原理及使用方法在Web应用程序中,缓存是提高性能和响应速度的关键。Memcache是一种常见的缓存技术之一,被广泛使用于Web应用程序中。本篇文章将介绍Memcache缓存的原理和使用方法,以帮助开发...

    2023年5月21日
    01
  • PHP8.0中的try语句块支持表达式

    随着计算机技术的飞速发展,编程语言也在不断地升级和完善。其中,PHP作为一种常用的Web开发语言,也在不断地推陈出新,不断地推出新的版本。最近,PHP8.0版本的发布引起了广泛的关注。其中,新版本中对于异常处...

    2023年5月18日
    03
  • PHP 管理全局的方法

    【相关学习推荐:php编程(视频)】管理全局状态在命令式语言中总是需要一些全局空间。在编程 PHP 或扩展时,我们将明确区分我们所称的请求绑定全局变量和真正的全局变量。请求全局变量是处理请求过程中需要携带...

    2022年6月19日
    0119
  • PHP与Elasticsearch的集成

    PHP与Elasticsearch的集成随着大数据和数据挖掘的发展,搜索引擎已经成为了我们生活中必不可少的工具。而Elasticsearch就是一个快速、开放、可扩展的搜索和分析引擎,它能够轻松地进行全文检索、数据分析和实时数...

    2023年5月19日
    01
  • PHP防盗链的基本设置方法

      盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资...

    2018年3月30日
    0176
  • PHP中使用Redis的hyperLogLog计数器

    PHP是一种常用的服务器端编程语言,常常被用于开发Web应用程序。而Redis是一个开源的内存数据库,被广泛使用于缓存、分布式锁等场景。Redis有一个特殊的数据结构——HyperLogLog,可以进行基数估计。在某些场景下,...

    2023年5月19日
    06
  • PHP8函数:get_debug_type()的用途详解。

    PHP8是PHP语言的最新版本。这个版本新增了很多强大的功能和改进,在解释器性能、类型系统和错误处理方面有很多进展。其中一个非常实用的新功能是get_debug_type()函数。它可以方便地获取表达式的类型信息,这个函...

    2023年5月21日
    01

联系我们

QQ:951076433

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