php实现微信原生支付(扫码支付)功能

yizhihongxing

让我来为您讲解如何实现PHP实现微信原生支付(扫码支付)。

1. 注册微信开发者账号

首先需要去微信公众平台注册开发者账号,并完成账号认证等操作,获取到相应的AppID、AppSecret等信息。

2. 配置商户信息

在微信商户平台中开通账户,并进行相关的商户信息配置。在商户平台中会获取到一些必要的信息,如商户号(mch_id)、密钥(key)等。

3. 下载微信支付API

微信支付开发者文档下载官方提供的PHP支付API。

4. 实现支付功能

4.1 统一下单接口

首先在自己的网站中,实现调用微信支付的统一下单接口的功能。

具体实现过程参见示例代码:

<?php

require_once "WxPayApi.php";

// 统一下单
$input = new WxPayUnifiedOrder();
$input->SetBody("商品描述"); // 商品描述
$input->SetOut_trade_no("商户订单号"); // 商户订单号
$input->SetTotal_fee("订单金额"); // 订单金额
$input->SetNotify_url("异步通知地址"); // 异步通知地址
$input->SetTrade_type("NATIVE"); // 交易类型为原生扫码支付
$input->SetProduct_id("商品ID"); // 商品ID
$result = WxPayApi::unifiedOrder($input);

// 获取二维码内容
if ($result['return_code'] === 'SUCCESS' && $result['result_code'] === 'SUCCESS') {
    $code_url = $result['code_url'];
    // 输出二维码
    echo '<img src="https://api.qrserver.com/v1/create-qr-code/?data=' . urlencode($code_url) . '"/>';
} else {
    echo '统一下单失败';
}

4.2 支付结果通知接口

还需要实现微信支付结果异步通知接口,处理微信支付系统发来的支付成功通知,并进行相应的业务逻辑处理,如更新订单状态等。

具体实现过程参见示例代码:

<?php

require_once "WxPayNotify.php";
require_once "WxPayApi.php";

class PayNotifyCallBack extends WxPayNotify {
    // 重写回调处理函数,详见微信支付API文档
    public function NotifyProcess($data, &$msg) {
        if ($data['result_code'] == 'SUCCESS') {
            // 支付成功,更新订单状态等业务逻辑处理
            //...
        }
        return true;
    }
}

// 接收并处理来自微信支付系统的支付成功通知
$notify = new PayNotifyCallBack();
$notify->Handle();

到此,就实现了基于PHP的微信原生支付(扫码支付)功能。

5. 附:示例代码

示例代码可以在官方微信支付API的PHP版下载包中找到,这里不再赘述。

再提供一下后台生成二维码的完整示例代码:

<?php

require_once('lib/WxPay.Api.php');
require_once('WxPay.NativePay.php');
require_once('WxPay.Notify.php');

function getParentUrl(){
    $url = ($_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . "/";
    $scriptName = $_SERVER['SCRIPT_NAME'];
    $requestUri = $_SERVER['REQUEST_URI'];
    $requestUri = substr($requestUri, strlen($scriptName));
    $matchedUriParts = array();
    preg_match_all('/(?<=\/)[^\/]*/', $requestUri, $matchedUriParts);
    foreach ($matchedUriParts[0] as $part) {
        if (!empty($part) && strpos($part, ':') === false) {
            $url .= $part . '/';
        }
    }
    return substr($url, 0, strlen($url) - 1);
}

$productname = $_POST["productname"];
$price = $_POST["price"];

$input = new WxPayUnifiedOrder();
$input->SetBody($productname);
$input->SetDetail("details");
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
$input->SetTotal_fee($price * 100);//金额需要乘以100
$input->SetNotify_url(getParentUrl()."notify.php");
$input->SetTrade_type("NATIVE");
$input->SetProduct_id("123456789");

$notify = new NativePay();

$result = $notify->GetPayUrl($input);
$url2 = $result["code_url"];

//exit("<script>alert('请用微信扫描二维码进行支付');history.back(-1);</script>");

?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <title><?= $productname ?>-支付</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style type="text/css">
        /*.paybox {width: 400px;}
        .paybox img {max-width: 100%;}*/
        body {margin: 0;padding: 0;background: #efefef;color: #333;}
    </style>
</head>
<body>
    <div style="text-align: center;height: 100vh;">
        <img src="http://qr.liantu.com/api.php?text=<?= urlencode($url2) ?>" style="width: 50%;" />
        <br/>
        <p style="color: #999;">请使用微信扫一扫进行支付</p>
    </div>
</body>
</html>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php实现微信原生支付(扫码支付)功能 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • php学习之function的用法

    PHP学习之Function的用法 什么是Function Function是指一个封装代码块的结构,它可以接收零到多个参数并返回值,可以是内置的也可以是自定义的。在大型、复杂的项目中,使用Function可以使代码更加模块化,提高代码的可读性和可维护性。 Function的定义和调用 在PHP中,定义Function的语法如下: function func…

    PHP 2023年5月27日
    00
  • php实现简单加入购物车功能

    下面是“php实现简单加入购物车功能”的完整攻略: 简介 购物车是电商网站非常重要的一个功能,能够方便用户选购商品并统一结算,提高用户购物体验。本文将介绍如何使用php实现简单的加入购物车功能。 实现过程 步骤一:创建购物车页面 首先我们需要创建一个购物车页面,并在页面上显示加入购物车的按钮。下面是一个简单的例子: <!DOCTYPE html>…

    PHP 2023年5月27日
    00
  • PHP编程与应用

    PHP编程与应用完整攻略 简介 PHP是一种常用的脚本语言,被广泛用于Web开发。本文将介绍PHP编程的基础知识和应用,包括语法、变量、表达式、流程控制、函数、数组、文件操作、正则表达式等方面。 语法 PHP代码可以嵌入到HTML代码中,使用<?php和?>标记。例如: <!DOCTYPE html> <html> &lt…

    PHP 2023年5月30日
    00
  • win7 64位系统 配置php最新版开发环境(php+Apache+mysql)

    本文将为大家详细讲解“win7 64位系统 配置php最新版开发环境(php+Apache+mysql)”的完整攻略。 前置条件 在开始配置前,需要确保你已经安装了以下两个软件: Microsoft Visual C++ Redistributable for Visual Studio。下载时请根据你的操作系统版本和位数选择合适的版本。 Microsoft…

    PHP 2023年5月24日
    00
  • 跨站脚本攻击+Cookies欺骗(Discuz篇)

    跨站脚本攻击(Cross-Site Scripting,XSS)是一种常见的web攻击方式,攻击者通过注入恶意脚本来窃取用户信息、劫持用户会话等。而Cookies欺骗是指攻击者通过某种方式获取到用户的cookies,并利用这些cookies来进行非法操作。以下是针对Discuz论坛的XSS攻击和Cookies欺骗攻击的完整攻略: 一、XSS攻击 1. 理解X…

    PHP 2023年5月26日
    00
  • PHP实现Socket服务器的代码

    下面是PHP实现Socket服务器代码的完整攻略: 知识储备 在阅读本攻略之前,您需要掌握以下几个知识点: Socket编程相关知识; PHP编程基础; Linux命令行基础。 实现过程 1. 创建Socket连接 PHP可以通过socket_create()函数创建Socket连接。在创建时需要指定Socket类型、传输协议、地址族等参数,常见的参数组合包…

    PHP 2023年5月23日
    00
  • PHP入门学习的几个不错的实例代码

    下面为您详细讲解PHP入门学习的几个不错的实例代码的完整攻略。 1. 学习环境的搭建 在开始学习PHP之前,需要先搭建好PHP的开发环境。这里推荐使用XAMPP进行搭建,它可以快速地搭建出一个PHP的本地开发环境,包括Apache、MySQL等常用工具。你可以去官网下载并安装XAMPP。 下载地址:https://www.apachefriends.org/…

    PHP 2023年5月24日
    00
  • PHP的运行机制与原理(底层)

    PHP是一种流行的服务器端脚本语言,基于C语言、Perl以及Java,可以在Web服务器上运行而不需要编译器的支持。PHP的运行机制和原理是理解PHP的编程思路和调试技巧的关键。以下是PHP的运行机制与原理的完整攻略: 1. PHP的运行机制 1.1 PHP的编译过程 PHP源码编写; 词法分析与语法分析:将PHP源码转化成抽象语法树; 中间代码生成:将抽象…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部