最近在写个需要简单支付的小项目,用到了支付宝接口,现已完成。把php接入支付宝的流程写在这里供像我一样的小白参考。
1.首先要有一个创建一个应用(选好自己想要的功能,关于支付的功能,貌似都需要签约)
2.下载sdk&dome网址
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.cbtzbf&treeid=203&articleid=105910&doctype=1
我选择的是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 有改动
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
?php
namespace 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
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<?php
namespace 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("这里写入想要调试的代码变量值,或其他运行的结果记录");
}
}
}
|
然后
这样就成功完成简单的支付功能了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。
原文链接:https://blog.csdn.net/sangjinchao/article/details/54987999
相关文章
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
Debian 8或Debian 9(64 位)安装 .NET Core
2025-05-29 110 -
详细探讨台湾数据中心的环境特点、基础设施建设、及其对业务运营的影响
2025-05-25 41 -
2025-05-29 80
-
2025-05-25 29
-
2025-05-27 48













