https://e.alipay.com/index.htm

    点击-》我是商家-》产品大全-》

PC收款工具->及时到账

   注册成功后 会获取   合作者ID key

 在下单成功后的页面显示支付按钮

   封装一个函数

在Common/function

//为一个订单生成支付宝按钮

//为一个订单生成支付宝按钮
function makeAlipayBtn($orderId,$btnName='去支付宝')
{
return require('./alipay/alipaypi.php');
}

配置alipaypi.php文件

  

<?php
/* *
* 功能:即时到账交易接口接入页
* 版本:3.3
* 修改日期:2012-07-23
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
* 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。

*************************注意*************************
* 如果您在接口集成过程中遇到问题,可以按照下面的途径来解决
* 1、商户服务中心(https://b.alipay.com/support/helperApply.htm?action=consultationApply),提交申请集成协助,我们会有专业的技术工程师主动联系您协助解决
* 2、商户帮助中心(http://help.alipay.com/support/232511-16307/0-16307.htm?sh=Y&info_type=9)
* 3、支付宝论坛(http://club.alipay.com/read-htm-tid-8681712.html)
* 如果不想使用扩展功能请把扩展功能参数赋空值。
*/

require_once("alipay.config.php");
require_once("lib/alipay_submit.class.php");

/**************************请求参数**************************/

//支付类型
$payment_type = "1";
//必填,不能修改
//服务器异步通知页面路径 : 我们用来接收消息的地址
$notify_url = "http://www.39.com/index.php/Home/Order/receive";
//需http://格式的完整路径,不能加?id=123这类自定义参数

//页面跳转同步通知页面路径 : 支付成功之后跳转的页面
$return_url = "http://www.39.com/index.php/Home/Order/pay_success";
//需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/

//商户订单号
$out_trade_no = $orderId;
//商户网站订单系统中唯一订单号,必填

//订单名称
$subject = 'php39网定单名称-'.$orderId;
//必填

$orderModel = D('order');
$tp = $orderModel->field('total_price')->find($orderId);

//付款金额
$total_fee = $tp['total_price'];
//必填

//订单描述

$body = 'php39网定单名称-'.$orderId;

//商品展示地址 : 定单详细页
$show_url = 'http://www.39.com/index.php/Home/Order/view/id/'.$orderId;
//需以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_email" => trim($alipay_config['seller_email']),
"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 AlipaySubmit($alipay_config);
return $alipaySubmit->buildRequestForm($parameter, "get", $btnName);

 

3 在控制器写方法,调用这个函数生成这个按钮

public function order_success()
{
$btn=makeAlipayBtn(I('get.order_id'));
// 设置页面信息
$this->assign(array(
'btn'=>$btn,
'_page_title' => '下单成功',
'_page_keywords' => '下单成功',
'_page_description' => '下单成功',
));

$this->display();
}

}

 

4  页面中输出按钮

 

<div class="success_bd">
<p><span></span>订单提交成功,我们将及时为您处理</p>
<p><?php echo $btn; ?></p>
<p class="message">完成支付后,你可以 <a href="">查看订单状态</a> <a href="">继续购物</a> <a href="">问题反馈</a></p>
</div>

 

5  修改配置文件

 alipay.config.php

//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//合作身份者id,以2088开头的16位纯数字
$alipay_config['partner'] = '';

//收款支付宝账号
$alipay_config['seller_email'] = '';

//安全检验码,以数字和字母组成的32位字符
$alipay_config['key'] = '';

 

 

修改生成的按钮代码 不要自动提交表单

 aiipay/lib/submit.php   

修改如下:

function buildRequestForm($para_temp, $method, $button_name) {
//待请求参数数组
$para = $this->buildRequestPara($para_temp);

$sHtml = "<form target='_blank' id='alipaysubmit' name='alipaysubmit' action='".$this->alipay_gateway_new."_input_charset=".trim(strtolower($this->alipay_config['input_charset']))."' method='".$method."'>";
while (list ($key, $val) = each ($para)) {
$sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";
}

//submit按钮控件请不要含有name属性
$sHtml = $sHtml."<input type='submit' value='".$button_name."'></form>";


//$sHtml = $sHtml."<script>document.forms['alipaysubmit'].submit();</script>";

return $sHtml;
}

 

修改按钮css代码

  

<style>
#alipaysubmit input{
margin: 10px auto;
width: 150px;
cursor: pointer;
padding: 5px;background: #F00;
color: #fff;
font-weight: bold;
font-size: 20px;
border: 0;
}
</style>

 

//接收支付宝发来的支付成功的消息
public function receive()
{
require('./alipay/notify_url.php');
}

//设置为已支付的状态
public function setPaid($orderId)
{
/*****更新订单的支付装态****/
$this->where(array(
'id'=>array('eq',$orderId),

))->save(array(
'pay_status'=>'是',
'pay_time'=>time(),

));

/*********更新会员积分*********/
$tp = $this->field('total_price,memeber_id')->find($orderId);
$memberModel=D('member');
$memberModel->where(array(
'id' =>array('eq',$tp['member_id']),

))->setInc('jifen',$tp['total_price']);
}

 

--------------------------------

   最后修改ailipay/notify_url.php  代码

 

else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序

//注意:
//付款完成后,支付宝系统发送该交易状态通知

$orderModel = D('Admin/Order');
$orderModel->setPaid($out_trade_no);

//调试用,写文本函数记录程序运行情况是否正常
//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
}