PHP项目集成微信端扫码支付API(境内支付)

8 篇文章 0 订阅
6 篇文章 0 订阅

一、申请微信扫码支付流程

1. 申请企业版公众号(个人订阅号不能开通支付功能),注册通道:微信公众平台注册

2. 申请微信支付商户号,申请通道在申请成功的微信公众平台中;

3. 登录微信商户平台,找到产品中心->我的产品->扫码支付,点开扫码支付后,申请开通,然后就是一系列填信息、下一步。

4. 扫码支付产品申请成功后,同样在微信商户平台,找到产品中心->开发配置,配置API密钥,随便找一个生成32位密码的工具,生成一个密钥,保存。

5. 找到产品中心->APPID授权管理,添加我的域名到授权地址。

至此,基本操作完成。

二、获取微信支付需要的配置信息和文件

1. 配置信息获取

(1)APPID:微信公众号的应用ID,在微信公众号里面找。

(2)APPSECRET:微信公众号密钥,32位密码,在微信公众号里面找。

(3)MCHID:商户号,在微信商户平台中的账户中心->个人信息查看。

(4)KEY:API密钥,在微信商户平台的账户中心->API安全中查看。

2. 下载微信支付安全证书

微信商户平台,找到 “账户中心->账户设置->API安全->下载证书”,下载证书保存在本地文件。

三、实际应用操作(ThinkPHP3.2)

1. 下载微信扫码支付PHP版本demo,下载通道:微信扫码支付demo

2.  解压,将文件夹下的cert文件中的安装证书替换为我们之前保存在本地的安全证书。

3.  找到/lib/WxPay.Config.php,打开文件,替换配置参数为我们之前获取到的参数,如下位置:


4.  将这个修改好的整个demo文件剪切到ThinkPHP项目的Vendor下,具体地址为:/ThinkPHP/Library/Vendor/,如下:

5. 控制器中的实际应用代码,控制器为home模块下的pay控制器。

(1)生成微信支付链接并加载支付页面代码:

    public function wxpay()
    {
        // 设置时区
        ini_set('date.timezone','Asia/Shanghai');
        error_reporting(E_ERROR);

        // 引入支付核心文件
        vendor('wxpay.lib.WxPay#Api');
        vendor('wxpay.example.WxPay#NativePay');
        vendor('wxpay.example.log');

        //获取数据
        $title = $_POST['title'];
        $description = $_POST['description'];
        $order_no = $_POST['order_no'];
        $total = $_POST['total'];

        // 组装支付参数数据
        $input = new \WxPayUnifiedOrder();
        $input->SetBody($title);
        $input->SetAttach($description);
        $input->SetOut_trade_no($orderno);
        $input->SetTotal_fee($total);
        $input->SetTime_start(date("YmdHis"));
        $input->SetTime_expire(date("YmdHis", time() + 600));
        $input->SetGoods_tag("test");
        // 设置微信扫码支付成功后的回调地址
        $input->SetNotify_url("http://www.XXXXXX.com/Home/pay/wx_notify");
        $input->SetTrade_type("NATIVE");
        $input->SetProduct_id("123");

        // 生成支付链接
        $notify = new \NativePay();
        $result = $notify->GetPayUrl($input);
        $url    = $result["code_url"];
        $this->assign("url",base64_encode($url));

        // 加载二维码生成页面
        $this->display("test/wxpay");
    }

(2)支付页面html代码

<div class="block" style="text-align: center;">
      <img src="{:U('Home/pay/qrcode',array('url'=>$url))}" alt="微信支付二维码" />
      <p style="text-align: center;color: #4a8bc2;font-size: 20px;">请打开微信,扫描上方二维码完成支付</p>
</div>

(3)生成二维码

    // 生成微信支付二维码
    public function qrcode(){
        error_reporting(E_ERROR);
        vendor('wxpay.example.phpqrcode.phpqrcode');
        $url = base64_decode($_GET["url"]);             //二维码内容
        $errorCorrectionLevel = 'H';                    //容错级别 
        $matrixPointSize = 10;                          //生成图片大小 
        \QRcode::png($url,false,$errorCorrectionLevel, $matrixPointSize,3);
    }

(4)扫码支付回调函数

	// 微信回调
	public function wx_notify(){
		ini_set('date.timezone','Asia/Shanghai');
		error_reporting(E_ERROR);

		vendor('wxpay.example.notify');

		$notify = new \PayNotifyCallBack();
		$notify->Handle(false);

		$is_success = $notify->IsSuccess(); 
		$bdata = $is_success['data']; 				//获取微信回调数据

		if($is_success['code'] == 1){
			//验证成功,获取数据
			$total_fee=$bdata['total_fee']/100;		//支付金额
			$trade_no=$bdata['transaction_id'];		//微信订单号
			$out_trade_no=$bdata['out_trade_no'];	        //系统订单号
			$openid=$bdata['openid'];			//用户在商户appid下的唯一标识

			// 其他coding ……
		}
	}

(5)页面中判断支付是否成功思路

因为微信扫码支付页面是自己写的,判断是否支付成功也需要自己在二维码页面写js监测支付是否成功。大致思路是:

页面中写一个定时执行的js函数,每隔1秒钟监测一下当前支付订单的状态,如果订单状态变为已支付,则马上回馈用户支付状态,并跳转到支付成功状态页。

四、参考文档

1. 支付宝扫码支付开发文档

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
追风订单管理系统是一款专业的订单管理软件。软件主要针对的是企业店铺的订单管理和打印,可以实现订单的妥善管理和精美的送货单格式送货单格式。软件界面美观简洁、简单全面、实用方便,无需培训,即可快速上手,轻轻松松完成日常订单管理功能,真正做到简单全面实用。是用户实现订单管理功能的好帮手。 追风订单管理系统特点 1、界面友好、操作简单,无需过多学习即可快速上手 2、提供强大的商品分类及商品管理功能 3、系统内默认提供多种送货单格式,并可依据需求免费量身订制 4、支持各种尺寸的打印纸张及其套表 5、提供完善的送货单查询及统计汇总功能 6、数据可方便的导出到EXCEL 7、提供强大的价格管理、折扣管理,成本利润管理等功能、历史价格轻松掌握 8、支持单张打印、批次打印 9、支持依数量计价、依重量计价、依规格寸计价等多种模式,适合各种行业 10、支持繁体送货单输出,即录入简体商品可自动转成繁体格式送货单 11、支持强大的订单管理 12、快速查询订单交货情况 追风订单管理系统 v2018.01更新日志 1.增加数据导入时多种导入方案 ,解决未安装excel无法导入的问题 2.增加查询表格中数据支持复制功能,在表格中可以利用ctrl c,ctrl v将一行或是多行数据直接复制到excel 3.报表中增加对二维的支持 4.增加可导出excel的对账单打印格式 5.增加微信提醒支持自定义提醒栏目内容 6.增加微信出货数据上报功能 7.增加商品档中商品价格一,二等支持自定义栏目名称功能 8.修正了部分已知的bug 追风订单管理系统截图
要实现微信v3扫码支付,可以使用PHP编程语言进行开发。下面是一种可能的实现方式: 首先,需要在微信支付商户平台上进行相关配置。确保您已经开通了扫码支付功能,并且已获取到了商户号、API密钥等必要的信息。 然后,您需要用到PHP的curl扩展库来进行HTTP请求和接口调用。通过curl库,您可以方便地向微信支付接口发送请求,并获取返回结果。 在编中,首先需要构建请求参数。具体来说,您需要构建一个JSON格式的请求体,包含必要的支付信息,例如商户订单号、支付金额、通知URL等。同时,还需要对请求体进行签名,以确保请求的安全性。 接下来,使用curl库发送HTTP请求到微信支付的统一下单API。请求中包含了商户号、API密钥和构建好的请求体。发送成功后,微信支付会返回一个预支付交易会话标识,用于生成二维。 通过解析返回的结果,您可以获取到包含二维URL的字段。将该URL显示在您的页面上,用户可以使用微信描该二维完成支付。 同时,您还需要处理用户支付结果的通知。当用户支付成功后,微信服务器会向您预先设置的通知URL发送支付结果通知。您需要编写一个接通知的回调函数来处理这些通知。在回调函数中,您需要验证通知的签名,并对通知进行处理,例如更新订单状态、保存支付结果等。 最后,您需要考虑支付的安全性。在进行支付时,要确保请求的数据、返回的结果以及通知的验证中都使用了正确的API密钥。此外,还需要对请求参数、返回结果和通知进行签名验证,以防止数据被篡改。 综上所述,通过PHP实现微信v3扫码支付的过程主要包括:配置微信支付商户平台、构建请求参数、发送HTTP请求、处理支付结果通知和保障支付的安全性。通过合理的开发和配置,您可以成功实现微信扫码支付功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值