IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP直播源码支付回调的使用 -> 正文阅读

[PHP知识库]PHP直播源码支付回调的使用

PHP直播源码在支付充值方面,对支付宝的依赖还蛮大的,伴随支付宝支付的使用,在PHP直播源码中加入支付宝支付和回调变得越来越平常,下面就给各位分析一下,如何实现PHP直播源码支付回调的使用。
一、支付宝的接入及配置
1、登录支付宝开放平台(https://open.alipay.com/platform/home.htm),进入开放平台,点击右上角,密钥管理—>mapi网关产品密钥—>RSA(SHA1)秘钥设置;
在这里插入图片描述
在这里插入图片描述

【注意:如果之前已经设置过的话,请确认是否有APP项目在使用该密钥】
2、使用秘钥生成工具,根据自身需求生成成对的公私钥;
私钥 (下载rsa签名验签工具)
在这里插入图片描述

二、支付宝回调使用
PHP直播源码在接收到用户的充值请求后,会自行调起支付宝支付进行支付,可将支付宝相关配置参数放到后台进行填写,方便更改替换。php的web端下载支付宝对应的sdk进行引入使用。
在这里插入图片描述

1、PHP直播源码在后台需要添加的支付宝配置文件内容

//合作身份者id,以2088开头的16位纯数字
$alipay_config['partner']		= '根据实际情况填写';
//商户的私钥(后缀是.pen)文件相对路径
$alipay_config['private_key_path']	= dirname(__FILE__).'/key/rsa_private_key.pem';
//支付宝公钥(后缀是.pen)文件相对路径
$alipay_config['ali_public_key_path']= dirname(__FILE__).'/key/alipay_public_key.pem';
//签名方式 
$alipay_config['sign_type']    = strtoupper('RSA');
//字符编码格式 目前支持 gbk 或 utf-8
$alipay_config['input_charset']= strtolower('utf-8');
//ca证书路径地址,用于curl中ssl校验
//请保证cacert.pem文件在当前文件夹目录中
$alipay_config['cacert']    = dirname(__FILE__).'/cacert.pem';
//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
$alipay_config['transport']    = 'http';	

2、回调,

//支付宝 回调
	public function notify_ali() {
        $configpri=getConfigPri();
		require_once(CMF_ROOT."sdk/alipay_app/alipay.config.php");
        //合作身份者id
        $alipay_config['partner']		= $configpri['aliapp_partner'];      
		require_once(CMF_ROOT."sdk/alipay_app/lib/alipay_core.function.php");
		require_once(CMF_ROOT."sdk/alipay_app/lib/alipay_rsa.function.php");
		require_once(CMF_ROOT."sdk/alipay_app/lib/alipay_notify.class.php");
		引入需要的文件及配资信息,根据实际情况填写
//计算得出通知验证结果
		$alipayNotify = new \AlipayNotify($alipay_config);
		$verify_result = $alipayNotify->verifyNotify();
		$this->logali("ali_data:".json_encode($_POST));
		if($verify_result) {//验证成功
			//获取商户订单号、支付宝交易号、交易状态等【根据自己的实际需求			获取需要的参数】
			$out_trade_no = $_POST['out_trade_no'];						
			if($_POST['trade_status'] == 'TRADE_FINISHED') {
				//判断该笔订单是否在商户网站中已经做过处理
				//如果有做过处理,根据实际业务来编写程序	
			}else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
				//判断该笔订单是否在商户网站中已经做过处理
				//如果没有做过处理,根据实际业务来编写程序			
			}					
		}else {
			$this->logali("验证失败");		
			//验证失败echo "fail";
//调试用,写文本函数记录程序运行情况是否正常
			//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
		}					
	}

3、初始化AlipayNotify及获取验证结果的业务说明
(1)验证结果

	function verifyNotify(){
		if(empty($_POST)) {//判断POST来的数组是否为空
			return false;
		}else {
			//生成签名结果
			$isSign = $this->getSignVeryfy($_POST, $_POST["sign"]);
			//获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息)
			$responseTxt = 'false';
			if(!empty($_POST["notify_id"])){
$responseTxt= $this->getResponse($_POST["notify_id"]);}
			//注意:$responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关,isSign的结果不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
			if (preg_match("/true$/i",$responseTxt) && $isSign) {
				return true;
			} else {
				return false;
			}
		}

(2)获取签名结果

function getSignVeryfy($para_temp, $sign) {
		//除去待签名参数数组中的空值和签名参数
		$para_filter = paraFilter($para_temp);
		//对待签名参数数组排序
		$para_sort = argSort($para_filter);	
		//把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
		$prestr = createLinkstring($para_sort);		
		$isSgin = false;
		switch (strtoupper(trim($this->alipay_config['sign_type']))) {
			case "RSA" :
$isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign);
				break;
			default :
				$isSgin = false;
		}
			return $isSgin;

(3)服务器ATN结果

function getResponse($notify_id) {
	$transport = strtolower(trim($this->alipay_config['transport']));
	$partner = trim($this->alipay_config['partner']);
	$veryfy_url = '';
	if($transport == 'https') {
		$veryfy_url = $this->https_verify_url;
	}
	else {
		$veryfy_url = $this->http_verify_url;
	}
	$veryfy_url = $veryfy_url."partner=" . $partner . "&notify_id=" . $notify_id;
	$responseTxt = getHttpResponseGET($veryfy_url, $this->alipay_config['cacert']);
	return $responseTxt;
}

本文对PHP直播源码使用支付宝充值时,支付宝的配置接入及回调的使用进行简单介绍,如有类似需求可进行简单参照,如有其他问题或想进行PHP直播源码开发,可联系官网客服。
声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 11:40:17  更:2022-01-28 11:42:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:25:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码