博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php接入支付宝的流程
阅读量:4553 次
发布时间:2019-06-08

本文共 4567 字,大约阅读时间需要 15 分钟。

php接入支付宝的流程写在这里供像我一样的小白参考。
1.首先要有一个创建一个应用(选好自己想要的功能,关于支付的功能,貌似都需要签约)
2.下载SDK&Dome(网址 )
我选择的是MD5签名方式,下面红框内就是做好的php Demo
lib文件很重要,是整个接口的核心类文件;
alipay.config.php是相关参数的配置文件
alipayapi.php 是支付宝接口入口文件
notify_url.php 是服务器异步通知页面文件;
return_url.php 是页面跳转同步通知文件;
3.打开alipay.config.php
4.配置完成后这个小例子就能直接访问了
通过这个例子,我们就能灵活运用了
开发文档:
**********************************************
嵌入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
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 "验证成功
"; }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("这里写入想要调试的代码变量值,或其他运行的结果记录"); } }}

 

然后
这样就成功完成简单的支付功能了
 
手机端:参考
http://www.sucaihuo.com/php/1948.html
 
原文出处:http://blog.csdn.net/sangjinchao/article/details/54987999
支持原创

转载于:https://www.cnblogs.com/ghjbk/p/7798983.html

你可能感兴趣的文章
生产者消费者模型
查看>>
ORACLE 字符串超长问题解决方案
查看>>
使用ZooKeeper协调多台Web Server的定时任务处理(方案1)
查看>>
20171116 每周例行报告
查看>>
[C#] SHA1校验函数用法
查看>>
linux 下 VMware 提示Unable to change virtual machine power state:
查看>>
洛谷P1585 魔法阵
查看>>
线程 题待做
查看>>
PL/SQL可以连oracle,但是jdbc连不上 【转】
查看>>
使用 highlight.js 在网页中高亮显示java 代码 【原】
查看>>
Android应用 程序框架设计方法
查看>>
基于Nginx环境下5种http转https的设置方法
查看>>
windows创建服务
查看>>
锋利的JQuery —— JQuery性能优化
查看>>
MIT许可证
查看>>
JQuery发送Ajax请求
查看>>
SQL 中的 case when
查看>>
【DeepLearning】GoogLeNet
查看>>
【手撸一个ORM】第六步、对象表达式解析和Select表达式解析
查看>>
MsDepSvc 启动失败
查看>>