PHP接入支付宝接口失效流程详解_php实例

来源:脚本之家  责任编辑:小易  

$sql="INSERT INTO `1653buy`.`dingdan` (`id` ,`dingdanhao`,`title` ,`price` ,`miaoshu` ,`p_name` ,`p_add` ,`tel` ,`zhuangtai`,`fahuo`,`shouhuo`)VALUES (NULL ,'1123', '111', '0.01', '苏杭', '张迪版', '山东', '150','2','2','2')";echo $sql;输出sql直接拿到权sql编辑器执行就知道为什么不行了追问是在插入之前有个判断,应该是判断失败才插入失败和返回失败的。不会整追答抛出异常那用alert就行了吧www.zgxue.com防采集请勿采集本网。

最近在写个需要简单支付的小项目,用到了支付宝接口,现已完成。把php接入支付宝的流程写在这里供像我一样的小白参考。

我做过在线支付的项目,首先你要注册一个支付宝和财付通的帐号。 让后到支付宝和财付通的网站找到申请商家服务,填写一些基本信息后(包括网站域名),如果能打开的话,就会给你开通一个商家服务,同时你可以在支付宝和财付通得到一个接口文档,有

1.首先要有一个创建一个应用(选好自己想要的功能,关于支付的功能,貌似都需要签约)

没返回过来就说明你的请求都没有发出去,接口写错

2.下载SDK&Dome网址

https://b.alipay.com/order/techService.htm1)打开上面的网页,从页面下方的7中支付方式中选择你需要的方式并点击进去, 2)点击demo下载选择对应你需求的demo 3)把demo代码引入到你的php项目中,lib里的内容不需要你做任何更改,阅读readme说

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.CBtzBF&treeId=203&articleId=105910&docType=1

要看着说明做 生成订单后,调用支付宝的接口,按照要求填写参数(注:他们提供的所谓的接口,也就是一个函数而已,他会告诉需要什么参数,返回什么值,你就当做一个函数调用就行了) 支付成功成功之后,支付宝会返回一个状态,获取这个状态,根

 

先看一下返回来的参数,一般都是sign不对造成的。如果看见有多余的参数,在类里面生成签名前面的那块删除一下不需要的参数。unset($_POST['不需要的值']) 可以从以下方面进行排查: 1可能是编码问题,看所有文件是不是都使用了统一编码,比如utf

我选择的是MD5签名方式,下面红框内就是做好的php Demo

lib文件很重要,是整个接口的核心类文件; alipay.config.php是相关参数的配置文件 alipayapi.php 是支付宝接口入口文件 notify_url.php 是服务器异步通知页面文件; return_url.php 是页面跳转同步通知文件;

3.打开alipay.config.php

4.配置完成后这个小例子就能直接访问了

 

 

通过这个例子,我们就能灵活运用了 开发文档: 

https://doc.open.alipay.com/docs/doc.htm?treeId=203&articleId=105288&docType=1

嵌入thinkphp3.2.3 我保留了

重新命名为 

分别给这五个文件加上命名空间

这四个文件的命名空间改为

Alipay.class.php 有改动

?phpnamespace Extend\Alipay;class Alipay { public function pay($alipay_config,$args){ /**************************请求参数**************************/ //支付类型 $payment_type = "1"; //必填,不能修改 //服务器异步通知页面路径 $notify_url = $args['notify_url']; //需http://格式的完整路径,不能加?id=123这类自定义参数 //页面跳转同步通知页面路径 $return_url = $args['return_url']; //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/ //商户订单号 $out_trade_no = $args['out_trade_no']; //商户网站订单系统中唯一订单号,必填 //订单名称 $subject = "测试"; //必填 //付款金额 $total_fee = $args['total']; //必填 //订单描述 $body = "test"; //需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html //防钓鱼时间戳 $anti_phishing_key = ""; //若要使用请调用类文件submit中的query_timestamp函数 //客户端的IP地址 $exter_invoke_ip = ""; //非局域网的外网IP地址,如:221.0.0.1 /************************************************************/ //构造要请求的参数数组,无需改动 $parameter = array( "service" => "create_direct_pay_by_user", "partner" => trim($alipay_config['partner']), "seller_id" => trim($alipay_config['seller_id']), "payment_type" => $payment_type, "notify_url" => $notify_url, "return_url" => $return_url, "out_trade_no" => $out_trade_no, "subject" => $subject, "total_fee" => $total_fee, "body" => $body, "show_url" => $show_url, "anti_phishing_key" => $anti_phishing_key, "exter_invoke_ip" => $exter_invoke_ip, "_input_charset" => trim(strtolower($alipay_config['input_charset'])) ); //建立请求 $alipaySubmit = new lib\AlipaySubmit($alipay_config); $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认"); echo $html_text; }}

在config.php配置文件里配置参数

然后新建控制器TextController.class.php

<?phpnamespace Home\Controller;use Think\Controller;use \Extend\Alipay as Alipays;class TextController extends Controller { public function index(){ $this->display(); } public function dobuy(){ $out_trade_no = date('YmdHis'); $baseurl = 'http://'.$_SERVER['HTTP_HOST']; $args = array( 'out_trade_no'=>$out_trade_no, 'notify_url'=> $baseurl.'/index.php/Home/Text/notifyurl.html', 'return_url'=> $baseurl.'/index.php/Home/Text/returnurl.html', 'total'=> $_POST['WIDtotal_fee'], ); $s = new Alipays\Alipay(); $s->pay(C('alipay'),$args); } // 同步跳转 public function returnurl(){ $alipay_config = C('alipay'); //计算得出通知验证结果 $alipayNotify = new Alipays\lib\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') { //交易成功 }else { echo "trade_status=".$_GET['trade_status']; } echo "验证成功<br />"; }else { //验证失败 //如要调试,请看alipay_notify.php页面的verifyReturn函数 echo "验证失败"; } } // 异步跳转 public function notifyurl(){ $alipay_config = C('alipay'); //计算得出通知验证结果 $alipayNotify = new Alipays\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'||$_POST['trade_status'] == 'TRADE_SUCCESS') { //交易成功 } echo "success"; //请不要修改或删除 } else { //验证失败 echo "fail"; //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } }}

然后

这样就成功完成简单的支付功能了

这个你的和支付宝交钱,交完钱,人家会告诉你怎么弄!内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • tp5.1框架数据库子查询操作实例分析
  • php截取中文字符串不乱码的方法
  • laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据
  • laravel框架路由配置总结、设置技巧大全
  • php通过api获取手机号码归属地
  • yii2使用ajax返回json的实现方法
  • php反序列化长度变化尾部字符串逃逸(0ctf-2016-piapiapia)
  • codeigniter中禁止a database error occurred错误提示的方法
  • codeigniter控制器之业务逻辑实例分析
  • smarty使用自定义资源的方法
  • PHP网站支付宝接口使用实例
  • 支付宝PHP接口问题
  • php 怎么调用支付宝接口求解
  • 支付宝接口php 如何调用
  • php支付宝开发实例
  • PHP支付宝开发中遇到的问题:那个request_token没...
  • php支付宝详细支付流程
  • PHP支付宝接口使用问题 满分求助
  • 支付宝手机接口,服务端PHP验证失败,求助
  • php中支付宝接口怎么做?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php实现的支付宝网页支付功能示例【基于tp5框架】php支付宝当面付2.0代码php实现单笔转账到支付宝功能php app支付宝回调(异步通知)详解php支付宝app支付功能php实现qq、微信和支付宝三合一收款码实例代码php实现支付宝即时到账功能thinkphp框架对接支付宝即时到账接口回调操作示例tp5.1框架数据库子查询操作实例分析php截取中文字符串不乱码的方法laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据laravel框架路由配置总结、设置技巧大全php通过api获取手机号码归属地yii2使用ajax返回json的实现方法php反序列化长度变化尾部字符串逃逸(0ctf-2016-piapiapia)codeigniter中禁止a database error occurred错误提示的方法codeigniter控制器之业务逻辑实例分析smarty使用自定义资源的方法php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基php错误allowed memory size of php删除数组中空值的方法介绍laravel框架数据库curd操作、连贯thinkphp 5 ajax跨域请求头设置实现过程解跟我学laravel之安装laravelphp使用curl模拟get与post向微信接口提交微信跳一跳php代码实现thinkphp5 tablib标签库自定义方法详解php中青蛙跳台阶的问题解决方法php操作redis中的hash和zset类型数据的方php使用cookie实现记住用户名和密码实现代zend framework生成验证码并实现验证码验php的curl库简介及使用示例
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved