php实现微信支付功能

一、生成预支付订单并获取预支付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或相关第三方库来简化开发流程。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值