* 功能:支付宝配置文件
* 修改配置:
// MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
$alipay_config['key'] = '';//(**从支付宝中获取**)
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
$alipay_config['notify_url'] = 'http://' . $_SERVER['SERVER_NAME'] . '/index.php/Wine/PayCallback/alipay_notify';
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
$alipay_config['return_url'] = 'http://' . $_SERVER['SERVER_NAME'] . '/index.php?g=Wine&m=Orders&a=alipay_return';
(2)
* 类名:AlipayNotify.php
* 功能:支付宝通知处理类
* 详细:处理支付宝各接口通知返回
(3)
* 类名:Alipay.php
* 功能:手机网站支付接口接入页
* 详细:处理支付宝各接口通知返回
class Alipay {
public function submit($params) {
//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestForm($parameter, "get", "确认");
return '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>支付宝支付</title>
</head>' . $html_text . '
</body>
</html>';
}
}
(4)
* 类名:notify_url.php
* 功能:支付宝服务器异步通知页面
* 详细:处理支付宝各接口通知返回
文章插图
Paste_Image.png
【2】支付业务逻辑
(1)GoodsController.class.php 下提交订单 ajax_sure()
public function ajax_sure() {<br>
$data['order_code'] = $order_code;
$addr[0] = $_POST['prov'];
$addr[1] = $_POST['city'];
$addr[2] = $_POST['dist'];
$addr[3] = $_POST['area'];
$data['area'] = serialize($addr);
$data['create_time'] = time();
$data['update_time'] = time();
$data['ip'] = $_SERVER['REMOTE_ADDR'];
if ($data['pay_id'] == 1) {
$data['order_status'] = 11; //已付款
$data['status'] = '1';
} else {
$data['order_status'] = 10; //待付款
$data['status'] = '1';
}
//函数调用 返回信息
$this->Callback_url($data);
}
/**
* 回调信息函数
* @param type $data
*/
public function Callback_url($data) {
$o_model = D("Wine/Orders");
$add_id = $o_model->add($data);
if (!$add_id) {
$this->error("订单提交失败,请稍后重试!");
}<br>
if ('3' == $data['pay_id']) {
//支付宝支付
$msg = '正在为您跳转到支付宝支付页面,请等待……';
$url = U("Pay/doalipay", array('o_id' => $add_id));
}
$this->success("订单提交成功!" . $msg, $url);
}
(2)PayController.class.php 下
/**
* 支付页面
*/
public function doalipay() {
$o_id = I("get.o_id", 0, "intval");
$info = $this->model->findone(array("a.id" => $o_id, 'a.status' => array('neq', '-1')));
//10代表订单待支付的状态
if ($info['order_status'] != 10) {
$this->error("订单已支付!");
}
vendor("Payment.Alipay.Alipay");
$alipay = new Alipay();
$param['order_sn'] = $info['order_code'];
// $param['order_amount'] = $info['pay_price'];
$param['order_amount'] = 0.01;//测试支付时,将支付价格设为0.01元,土豪朋友忽略此提示O(∩_∩)O~
$param['order_subject'] = '支付宝支付测试';
$param['return_url'] = 'http://' . $_SERVER['SERVER_NAME'] . '/index.php/Wine/Orders/pay_ok/o_id/'.$o_id;
$return = $alipay->submit($param);
echo $return;
exit;
}
就是这么简单几步,到此,支付宝支付的流程就已经结束了 。
推荐阅读
- php输出之echo和print语句
- 支付宝花呗提额又来了 花呗提额是什么意思
- 如果手机号码注销了,微信、支付宝还能继续使用吗?望周知
- 2022支付宝集五福如何兑换口罩,2022支付宝集福卡免费兑换口罩攻略
- php变量是什么?php变量的数据类型、命名规则等详细介绍
- PHP链接Mysql数据库的3种常用方法及对比
- java后台生成二维码,并在前端网页上显示
- 支付宝怎么开通花呗收款 个人花呗收款开通条件
- php加速器之opcache
- 支付宝净值型理财产品 支付宝净值型理财产品没有了