php实现微信支付功能
admin 阅读: 2024-03-16
后台-插件-广告管理-内容页头部广告(手机) |
一、生成预支付订单并获取预支付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>
- 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.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |