在pc端做支付宝支付时,本文章应该会给你一些帮助,支付宝支付没有微信支付那么多的坑,都有一些现成的,好了,废话不多说,进入正题。
以下是你需要的一个文件夹,文件中有你需要的文件
各个文件都有详细的说明,我们来看看各个文件里面的内容吧
apipay.config.php
//合作身份者id,以2088开头的16位纯数字
$alipay_config['partner'] = '';
//收款支付宝账号,一般情况下收款账号就是签约账号
$alipay_config['seller_email'] = '';
//安全检验码,以数字和字母组成的32位字符
$alipay_config['key'] = '6i3teffpnospzruiad9l6g3wucxi2jhv';
//签名方式 不需修改
$alipay_config['sign_type'] = strtoupper('MD5');
//字符编码格式 目前支持 gbk 或 utf-8
$alipay_config['input_charset']= strtolower('utf-8');
//ca证书路径地址,用于curl中ssl校验
//请保证cacert.pem文件在当前文件夹目录中
$alipay_config['cacert'] = getcwd().'\\cacert.pem';
//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
$alipay_config['transport'] = 'http';
你要使用到这个文件夹,最开始的也是最重要的一步,那就是签约一个即时到付
,有这个才能使用,即时到付在支付宝官网里面有,我就不详细的说明了
第二个文件:alipayapi.php
require_once("alipay.config.php");
require_once("lib/alipay_submit.class.php");
//支付类型
$payment_type = "1";
//必填,不能修改
//服务器异步通知页面路径
$notify_url = "http://112.74.28.54/alipay/notify_url.php";
//需http://格式的完整路径,不能加?id=123这类自定义参数
//页面跳转同步通知页面路径
$return_url = "http://112.74.28.54/alipay/return_url.php";
//需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
//防钓鱼时间戳
$anti_phishing_key = "";
//客户端的IP地址
$exter_invoke_ip = "";
//构造要请求的参数数组,无需改动
$con = mysql_connect("", "", "");
mysql_select_db("", $con);
$sql = "update dtb_order set pre_order_id ='$out_trade_no' where order_id=".$orderid;
mysql_query($sql, $con);
mysql_close();
$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);
$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
echo $html_text;
接下来是回调的url:notify_url.php
require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");
//计算得出通知验证结果
$alipayNotify = new 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'];//交易状态
$jifen = $_POST['totol_points'];//自定义你所需要的参数
$c_id = $_POST['c_id'];
$total_fee = $_POST['total_fee'];
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//判断该笔订单是否在商户网站中已经做过处理
}else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
}
echo "success";
}
else
{
//验证失败
echo "fail";
}
最后一个就是成功返回的url:return_url.php
require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");
//计算得出验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyReturn();
if($verify_result) {//验证成功
$out_trade_no = $_GET['out_trade_no'];//商户订单号
$trade_no = $_GET['trade_no'];//支付宝交易号
$total_fee = $_GET['total_fee'];
$trade_status = $_GET['trade_status'];//交易状态
$jifen = $_GET['jifen'];//交易使用的积分
$c_id = $_GET['c_id'];//会员id
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
$date = date('Y-m-d H:i:s', time());
$con = mysql_connect("", "", "");
mysql_select_db("", $con);
$sql = "update dtb_order set status =6,payment_date='$date' where pre_order_id=" . $out_trade_no;
mysql_query($sql, $con);
$f = $total_fee/1;//如果金额100=1
$fee = (int) $f;
if($fee>0)
{
$jifen =$jifen+$fee;
$u_points = "insert into dtb_points_detail (user_id,create_date,type,program_id,rule_id,points) values ('$c_id','$date','add',1,1,'$fee')";
mysql_query($u_points,$con);
}
$up_points = "update dtb_user_points set totol_points=totol_points-'$jifen' where user_id=" .$c_id;
mysql_query($up_points,$con);
$in_points = "insert into dtb_points_detail (user_id,create_date,type,program_id,rule_id,points) values ('$c_id','$date','add',1,1,'$jifen')";
mysql_query($in_points,$con);
mysql_close();
echo '<script>window.location.href="https://www.jiaheyoupin.net";</script>';//支付成功所跳转的页面
}
else {
echo "trade_status=".$_GET['trade_status'];
}
echo "验证成功<br />";
}
else
{
//验证失败
echo "验证失败";
}
最后就是你该怎么在你的项目中引入这个文件夹,我之前一直访问不到就是,我以为的路径跟实际的路径不一样,如果你也会发生访问不到文件夹时,看看是不是路径的问题:
$orderid=$Order->getId();
$out_trade_no = $pid;//订单编号
$subject = $shoppingname;
$total_fee= $t_price;
$body='test';
$totol_points = $jifen;
$c_id = $cust_id;//这些参数是我需要的
//require '../src/Eccube/alipay/alipayapi.php';
require 'alipay/alipayapi.php';//引入文件夹
以上就是我使用这个文件夹实现的支付宝支付的过程了,希望可以帮到你,赶快实现起来吧