您现在的位置是:首页 > 技术教程 正文

php实现微信支付功能

admin 阅读: 2024-03-16
后台-插件-广告管理-内容页头部广告(手机)

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

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

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

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

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

  1. <script>
  2. wx.config({
  3. appId: '<?php echo $jsapi_params["appId"]; ?>',
  4. timestamp: '<?php echo $jsapi_params["timeStamp"]; ?>',
  5. nonceStr: '<?php echo $jsapi_params["nonceStr"]; ?>',
  6. signature: '<?php echo $jsapi_params["paySign"]; ?>',
  7. jsApiList: ['chooseWXPay']
  8. });
  9. wx.ready(function() {
  10. wx.chooseWXPay({
  11. timestamp: '<?php echo $jsapi_params["timeStamp"]; ?>',
  12. nonceStr: '<?php echo $jsapi_params["nonceStr"]; ?>',
  13. package: '<?php echo $jsapi_params["package"]; ?>',
  14. signType: '<?php echo $jsapi_params["signType"]; ?>',
  15. paySign: '<?php echo $jsapi_params["paySign"]; ?>',
  16. success: function(res) {
  17. // 支付成功后的回调处理
  18. },
  19. fail: function(res) {
  20. // 支付失败后的回调处理
  21. }
  22. });
  23. });
  24. script>

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

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索