PHP微信支付--接入支付SDK,生成订单二维码进行扫码支付

在PHP开发微信支付中接入支付SDK,生成订单二维码进行扫码支付,实际运用中做出一些整理,以便后期查阅。整体流程如下图;

微信支付官方流程:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5

1、当我们选择使用扫码支付,首先会出现下载微信sdk包,选择PHPsdk包进行下载,下载到本地后会发现是一个tp5框架,只是少了一个Common文件夹,把下载好的sdk包放进去。等待调用......

2、设置支付授权目录,扫码成功后的回调地址 

3、支付模式二

4、实现代码:

<?php
namespace app\index\controller;

class Index
{
    public function index()
    {
 		require_once APP_PATH.'common/WxpayAPI/lib/WxPay.Api.php';
 		$input = new \WxPayUnifiedOrder();
 		// 设置商品描述
 		$input->SetBody('测试商品');
 		// 设置订单号 ---这里使用的时间,其实是自己生成的
 		$input->SetOut_trade_no(date('YmdHis'));
 		// 设置订单金额(单位:分)
 		$input->SetTotal_fee('1');
 		// 设置异步通知地址
 		$input->SetNotify_url('http://www.php.wx/index.php/index/Notify/index');
 		// 设置交易类型
 		$input->SetTrade_type('NATIVE');
 		// 设置商品ID
 		$input->SetProduct_id('123456780');
 		// 调用统一下单API
 		$result = \WxPayAPI::unifiedOrder($input);
 		// 生成二维码图片,在这里因为我们自己调试的需要修改配置common/lib/WxPay.Api.php的严格效验true修改为false
 		$code_url = $result['code_url'];
 		$img = '<img src=http://paysdk.weixin.qq.com/example/qrcode.php?data='.urlencode($code_url).' />';
 		echo $img;
    }
}
?>

5、需要注意在微信支付异步处理中的回调地址,一定不是你的授权地址,处理微信支付异步请求的代码,Notify/index.php:

<?php
namespace app\index\controller;

class Notify
{
    public function index()
    {
    	require_once APP_PATH.'common/WxpayAPI/lib/WxPay.Api.php';
    	$msg = '';
    	\WxPayApi::notify(function($result){
    		// 签名校验通过
    		// 查询订单号,如果不存在,return;
    		// 如果订单已存在,且订单已经被处理过,return;
    		// 如果订单没有被处理,处理订单

    	},$msg);
    }
}
?>

注意:如果异步验证的时候使用WxPay.Api.php对indx.php进行签名验证,是无法访问到这个方法的。 

(github克隆地址:https://github.com/mruserfeng/weiixn.git);

猜你喜欢

转载自blog.csdn.net/weixin_42980713/article/details/86133870