分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

phpt5支付宝登陆支付接口解析

发布时间:2023-09-06 01:57责任编辑:蔡小小关键词:暂无标签

 先看效果图 

 下面的源码来源网络,自己对照修改。

放入一个插件库中,方便管理

创建支付类

1.发起支付

public function init() { ???$order_id ??= $_REQUEST[‘order_id‘]; ???$order_info = $this->order_db->get_one(array(‘id‘=>$order_id)); ???$product_info = $this->product_db->get_one(array(‘id‘=>$order_info[‘product_id‘])); ???// 发起支付宝支付 ???require_once("./phpcms/plugin/alipay/alipay.config.php"); ???require_once("./phpcms/plugin/alipay/lib/alipay_submit.class.php"); ???/**************************请求参数**************************/ ???//商户订单号,商户网站订单系统中唯一订单号,必填 ???$out_trade_no = $order_info[‘orderno‘]; // 订单orderno ???//订单名称,必填 ???$subject = ‘预订‘.$product_info[‘name‘].‘订单‘; ???????// 订单名称 ???//付款金额,必填 ???$total_fee = $order_info[‘payprice‘]; ??// 订单金额 ???//商品描述,可空 ???$body = $product_info[‘name‘]; // 可空 ???/************************************************************/ ???//构造要请求的参数数组,无需改动 ???$parameter = array( ???????"service" ??????=> $alipay_config[‘service‘], ???????"partner" ??????=> $alipay_config[‘partner‘], ???????"seller_id" ????=> $alipay_config[‘seller_id‘], ???????"payment_type" ?=> $alipay_config[‘payment_type‘], ???????"notify_url" ???=> $alipay_config[‘notify_url‘], ???????"return_url" ???=> $alipay_config[‘return_url‘], ???????"anti_phishing_key"=>$alipay_config[‘anti_phishing_key‘], ???????"exter_invoke_ip"=>$alipay_config[‘exter_invoke_ip‘], ???????"out_trade_no" ?=> $out_trade_no, ???????"subject" ??=> $subject, ???????"total_fee" => $total_fee, ???????"body" ?=> $body, ???????"_input_charset" ???=> trim(strtolower($alipay_config[‘input_charset‘])) ???????//其他业务参数根据在线开发文档,添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.kiX33I&treeId=62&articleId=103740&docType=1 ???????//如"参数名"=>"参数值" ????); ???//建立请求 ???$alipaySubmit = new AlipaySubmit($alipay_config); ???$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认"); ???echo $html_text;}

2.处理支付后的动作,比如更改订单状态为支付,跳转到支付成功页面等等

a.处理同步通知

// 同步通知处理public function return_url() { ???$this->ilog_db->addLog(‘return_url‘); ???require_once("./phpcms/plugin/alipay/alipay.config.php"); ???require_once("./phpcms/plugin/alipay/lib/alipay_notify.class.php"); ???//计算得出通知验证结果 ???$alipayNotify = new AlipayNotify($alipay_config); ???$verify_result = $alipayNotify->verifyReturn(); ???if($verify_result) {//验证成功 ???????///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ???????//请在这里加上商户的业务逻辑程序代码 ???????????????//——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— ???????//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 ???????//商户订单号 ???????$out_trade_no = $_GET[‘out_trade_no‘]; ???????//支付宝交易号 ???????$trade_no = $_GET[‘trade_no‘]; ???????//交易状态 ???????$trade_status = $_GET[‘trade_status‘]; ???????if($_GET[‘trade_status‘] == ‘TRADE_FINISHED‘ || $_GET[‘trade_status‘] == ‘TRADE_SUCCESS‘) { ???????????//判断该笔订单是否在商户网站中已经做过处理 ???????????????//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 ???????????????//如果有做过处理,不执行商户的业务程序 ???????} ???????else { ?????????echo "trade_status=".$_GET[‘trade_status‘]; ???????} ???????????????//——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ???????$this->_afterPay($out_trade_no); ???} ???else { ???????//验证失败 ???????//如要调试,请看alipay_notify.php页面的verifyReturn函数 ???????echo "验证失败"; ???} ???}

b.处理异步通知

// 异步通知处理public function notify_url() { ???$this->ilog_db->addLog(‘notify_url‘); ???require_once("./phpcms/plugin/alipay/alipay.config.php"); ???require_once("./phpcms/plugin/alipay/lib/alipay_notify.class.php"); ???//计算得出通知验证结果 ???$alipayNotify = new AlipayNotify($alipay_config); ???$verify_result = $alipayNotify->verifyNotify(); ???if($verify_result) {//验证成功 ???????///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ???????//请在这里加上商户的业务逻辑程序代 ???????????????//——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— ???????????????//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 ???????????????//商户订单号 ???????$out_trade_no = $_POST[‘out_trade_no‘]; ???????//支付宝交易号 ???????$trade_no = $_POST[‘trade_no‘]; ???????//交易状态 ???????$trade_status = $_POST[‘trade_status‘]; ???????if($_POST[‘trade_status‘] == ‘TRADE_FINISHED‘) { ???????????//判断该笔订单是否在商户网站中已经做过处理 ???????????????//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 ???????????????//请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 ???????????????//如果有做过处理,不执行商户的业务程序 ???????????????????????????????//注意: ???????????//退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 ???????????//调试用,写文本函数记录程序运行情况是否正常 ???????????//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); ???????} ???????else if ($_POST[‘trade_status‘] == ‘TRADE_SUCCESS‘) { ???????????//判断该笔订单是否在商户网站中已经做过处理 ???????????????//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 ???????????????//请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 ???????????????//如果有做过处理,不执行商户的业务程序 ???????????????????????????????//注意: ???????????//付款完成后,支付宝系统发送该交易状态通知 ???????????//调试用,写文本函数记录程序运行情况是否正常 ???????????//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); ???????} ???????//——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ???????$this->_afterPay($out_trade_no); ???} ???else { ???????//验证失败 ???????echo "fail"; ???????//调试用,写文本函数记录程序运行情况是否正常 ???????//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); ???}}

c.处理成功后的订单数据处理与成功提示

private function _afterPay($orderno) { ???// 获取订单信息 ???$order_info ?= $this->order_db->get_one(array(‘orderno‘=>$orderno)); ???if ($order_info[‘pay_status‘] != ‘1‘) { ???????$data[‘pay_status‘] = ‘1‘; ???????$data[‘pay_type‘] ??= ‘alipay‘; ???????$data[‘pay_code‘] ??= ‘‘; ???????$data[‘paytime‘] ???= time(); ???????$data[‘order_status‘]= 3; // 已支付 ???????$r = $this->order_db->update($data,array(‘orderno‘=>$orderno)); ???????if ($r !== FALSE) ????????{ ???????????// 处理支付信息 ???????????header("Location:?m=home&c=order&a=payDone&orderno=".$orderno); ????????} else { ???????????showmessage(‘系统异常‘,‘blank‘); ???????} ???} else { ???????// 处理支付信息 ???????header("Location:?m=home&c=order&a=payDone&orderno=".$orderno); ????} ???}

支付配置

<?php/* * * 配置文件 * 版本:3.4 * 修改日期:2016-03-08 * 说明: * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 * 安全校验码查看时,输入支付密码后,页面呈灰色的现象,怎么办? * 解决方法: * 1、检查浏览器配置,不让浏览器做弹框屏蔽设置 * 2、更换浏览器或电脑,重新登录查询。 */ //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//合作身份者ID,签约账号,以2088开头由16位纯数字组成的字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm// $alipay_config[‘partner‘] ???????= ‘2088811285662645‘;$alipay_config[‘partner‘] ??????= ‘2088221883850827‘; // jim//收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号$alipay_config[‘seller_id‘] = $alipay_config[‘partner‘];// MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm// $alipay_config[‘key‘] ???????????= ‘behulcppuzrok5k7a9jikl9u2bmvsisr‘;$alipay_config[‘key‘] ??????????= ‘4t3m3qnwiq4lzqvv66sfu2vy9r3skkcn‘; // jim// 服务器异步通知页面路径 ?需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问$alipay_config[‘notify_url‘] = "http://local.duanzu.com/?m=ipay&c=alipay&a=notify_url";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问$alipay_config[‘return_url‘] = "http://local.duanzu.com/?m=ipay&c=alipay&a=return_url";//签名方式$alipay_config[‘sign_type‘] ???= strtoupper(‘MD5‘);//字符编码格式 目前支持 gbk 或 utf-8$alipay_config[‘input_charset‘]= strtolower(‘utf-8‘);//ca证书路径地址,用于curl中ssl校验//请保证cacert.pem文件在当前文件夹目录中$alipay_config[‘cacert‘] ???= getcwd().‘\\cacert.pem‘;//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http$alipay_config[‘transport‘] ???= ‘http‘;// 支付类型 ,无需修改$alipay_config[‘payment_type‘] = "1"; ???????// 产品类型,无需修改$alipay_config[‘service‘] = "create_direct_pay_by_user";//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑//↓↓↓↓↓↓↓↓↓↓ 请在这里配置防钓鱼信息,如果没开通防钓鱼功能,为空即可 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ???// 防钓鱼时间戳 ?若要使用请调用类文件submit中的query_timestamp函数$alipay_config[‘anti_phishing_key‘] = ""; ???// 客户端的IP地址 非局域网的外网IP地址,如:221.0.0.1$alipay_config[‘exter_invoke_ip‘] = ""; ???????//![](http://images2015.cnblogs.com/blog/422101/201609/422101-20160906162103863-1845970975.png)↑↑↑↑↑↑↑↑↑↑请在这里配置防钓鱼信息,如果没开通防钓鱼功能,为空即可 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

phpt5支付宝登陆支付接口解析

原文地址:https://www.cnblogs.com/endv/p/9126371.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved