2025年5月18日 星期日 乙巳(蛇)年 二月廿 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > PHP

php实现微信支付功能

时间:08-05来源:作者:点击数:34

一、生成预支付订单并获取预支付ID(prepay_id):

  • <?php
  • // 引入微信支付SDK
  • require_once "wechat_pay_sdk.php";
  • // 设置参数
  • $appid = '你的AppID'; // 微信公众号或小程序的AppID
  • $mch_id = '你的商户号'; // 微信支付分配的商户号
  • $nonce_str = md5(uniqid()); // 随机字符串,可以使用自己的随机字符串生成方法
  • // 构建统一下单请求参数
  • $params = array(
  • 'appid' => $appid,
  • 'mch_id' => $mch_id,
  • 'nonce_str' => $nonce_str,
  • 'body' => '商品描述', // 商品描述
  • 'out_trade_no' => '商户订单号', // 商户订单号
  • 'total_fee' => '订单金额', // 订单金额(单位:分)
  • 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], // 客户端IP地址
  • 'notify_url' => '支付回调通知URL', // 支付结果回调通知URL
  • 'trade_type' => 'JSAPI', // 交易类型,JSAPI为公众号支付或小程序支付
  • 'openid' => '用户openid', // 用户在公众号或小程序的openid
  • );
  • // 使用微信支付SDK生成签名并发送统一下单请求
  • $wechatPay = new WeChatPay();
  • $response = $wechatPay->unifiedOrder($params);
  • // 解析返回结果
  • $result = simplexml_load_string($response);
  • $prepay_id = $result->prepay_id; // 获取预支付ID(prepay_id)

二、生成JSAPI调起支付的参数:

  • <?php
  • // 引入微信支付SDK
  • require_once "wechat_pay_sdk.php";
  • // 设置参数
  • $appid = '你的AppID'; // 微信公众号或小程序的AppID
  • $mch_id = '你的商户号'; // 微信支付分配的商户号
  • // 生成JSAPI支付参数
  • $jsapi_params = array(
  • 'appId' => $appid,
  • 'timeStamp' => (string) time(),
  • 'nonceStr' => md5(uniqid()),
  • 'package' => 'prepay_id='.$prepay_id, // 使用获取到的预支付ID(prepay_id)
  • 'signType' => 'MD5', // 签名类型,根据微信支付API文档选择
  • );
  • // 使用微信支付SDK生成签名
  • $wechatPay = new WeChatPay();
  • $jsapi_params['paySign'] = $wechatPay->generateSign($jsapi_params);
  • $jsapi_params['package'] = urlencode($jsapi_params['package']); // 调起支付时需要对package进行urlencode

三、前端调用JSAPI发起支付: 在前端页面中引入微信JSAPI的相关库文件,并使用生成的JSAPI支付参数调起支付接口。

  • <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
  • <script>
  • wx.config({
  • appId: '<?php echo $jsapi_params["appId"]; ?>',
  • timestamp: '<?php echo $jsapi_params["timeStamp"]; ?>',
  • nonceStr: '<?php echo $jsapi_params["nonceStr"]; ?>',
  • signature: '<?php echo $jsapi_params["paySign"]; ?>',
  • jsApiList: ['chooseWXPay']
  • });
  • wx.ready(function() {
  • wx.chooseWXPay({
  • timestamp: '<?php echo $jsapi_params["timeStamp"]; ?>',
  • nonceStr: '<?php echo $jsapi_params["nonceStr"]; ?>',
  • package: '<?php echo $jsapi_params["package"]; ?>',
  • signType: '<?php echo $jsapi_params["signType"]; ?>',
  • paySign: '<?php echo $jsapi_params["paySign"]; ?>',
  • success: function(res) {
  • // 支付成功后的回调处理
  • },
  • fail: function(res) {
  • // 支付失败后的回调处理
  • }
  • });
  • });
  • </script>

以上代码示例演示了使用PHP实现微信支付功能的基本流程,具体的配置和参数需根据实际情况进行调整。在实际项目中,建议使用官方提供的微信支付SDK或相关第三方库来简化开发流程。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门