0

0

支付宝接口开发集成支付环境小结_PHP

php中文网

php中文网

发布时间:2016-06-01 11:06:16

|

1261人浏览过

|

来源于php中文网

原创

关于支付宝的接口集成气死是很简单,目前大概有3种类型,即时到帐、双功能、担保交易,只需要集成一次担保交易,其他的比如即时到帐集成很容易,担保交易的状态有几种,比如:是否支付成功,卖家是否发货,买家确认收获等。而即时到帐只有一种,就是是否已付款!最多还有个退款的功能。一般都没用到。

    通过之前做项目:配资平台,有个预付费的功能,用到了支付宝的双功能收款,其实就是提供两种付款方式,即时到帐和担保交易。一般买家谨慎会选择担保。

    下面说下具体的集成过程,第一:下载对应的集成接口包,比如即时到帐就下载即时到帐,担保下载担保,非常不建议将即时到帐修改成担保或者反之。案例中我下载的 双功能接口文件,utf8-php接口。

    下载来的文件都大同小异,即时到帐和担保的文件也相差不大,反正可以肯定的说,只要配置一次担保支付宝接口,就能配置即时到帐。

    我们需要修改的文件有如下:alipay.config.php[配置文件,只是用于修改配置接口开发者id和key]

立即学习PHP免费学习笔记(深入)”;

    alipayapi.php[主调文件,将需要发送的post数据交给该文件,然后负责跳转到支付页面]
    index.php[demo演示页面,可以不做修改,但是其中传递的参数名陈需要看懂]
    notify_url.php 返回数据页面,在其中将返回交易的状态,更具状态我们可以更改数据库订单信息,该文件是通过post方式接受。
    return_url.php 返回数据页面,在其中将返回交易的状态,更具状态我们可以更改数据库订单信息,该文件是通过GET方式。

    具体过程:

    第一步,修改配置信息:

小邮包 包月订购包年程序
小邮包 包月订购包年程序

小邮包-包月订购包年服务网,该程序由好买卖商城开发,程序采用PHP+MYSQL架设,程序商业模式为目前最为火爆的包月订制包年服务模式,这种包年订购在国外网站已经热火很多年了,并且已经发展到一定规模,像英国的男士用品网站BlackSocks,一年的袜子购买量更是达到了1000万双。功能:1、实现多产品上线,2、不用注册也可以直接下单购买,3、集成目前主流支付接口,4、下单发货均有邮件提醒。

下载

代码如下:


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


 
     第二:拼post数据,一般只需要修改请求参数

代码如下:


 /**************************请求参数**************************/
         //支付类型
         $payment_type = "1";
         //必填,不能修改
         //服务器异步通知页面路径
         $notify_url = "http://你的域名/alipay/notify_url.php";
         //需http://格式的完整路径,不能加?id=123这类自定义参数
         //页面跳转同步通知页面路径
         $return_url = "http://你的域名/alipay/return_url.php";
         //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
         //卖家支付宝帐户
         $seller_email = $_POST['WIDseller_email'];//demo[index.php]传过来的
         //必填
         //商户订单号
         $out_trade_no = $_POST['WIDout_trade_no'];//传过来的
         //商户网站订单系统中唯一订单号,必填
         //订单名称
         $subject = $_POST['WIDsubject'];//同上
         //必填
         //付款金额
         $price = $_POST['WIDprice'];//传过来的,是你的表单中填写的值
         //必填
         //商品数量
         $quantity = "1";
         //必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品
         //物流费用
         $logistics_fee = "0.00";
         //必填,即运费
         //物流类型
         $logistics_type = "EXPRESS";
         //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
         //物流支付方式
         $logistics_payment = "SELLER_PAY";
         //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
         //订单描述
         $body = $_POST['WIDbody'];
         //商品展示地址
         $show_url = $_POST['WIDshow_url'];
         //需以http://开头的完整路径,如:http://www.ya-jing.cn
         //收货人姓名
         $receive_name = '萤火';
         //如:张三
         //收货人地址
         $receive_address = $_POST['WIDreceive_address'];
         //如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号
         //收货人邮编
         $receive_zip = $_POST['WIDreceive_zip'];
         //如:123456
         //收货人电话号码
         $receive_phone = $_POST['WIDreceive_phone'];
         //如:0571-88158090
         //收货人手机号码
         $receive_mobile = $_POST['WIDreceive_mobile'];
         //如:13312341234


 
     第三:数据构造完成后就可以在页面上付款,测试能不能正确的打开支付页面。如果能打开,这时候就可以进行付款了,但是买家付款的状态我们还无法获知,比如有没有成功付款,卖家是否已经发货等。那么接下来开始做返回状态的业务逻辑处理。

打开return_url.php文件,根据提示修改,做对因的处理。

代码如下:


 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
     //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
     //商户订单号 $out_trade_no = $_GET['out_trade_no'];
     //支付宝交易号    $trade_no = $_GET['trade_no'];
     //交易状态
     $trade_status = $_GET['trade_status'];
     if($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {//状态为成功
     //处理自己网站的业务逻辑
         if(!$order['status']){//判断本地数据库中的订单是否已经处理
             db_update("stx_recharge",array("status"=>1),array("oid"=>$_GET
 ['out_trade_no']));//如果没处理就将状态改成已经处理。
             //金钱的增加
             $zd = db_line("stx_terminal",array("id"=>$order['ztid']));
             db_update("stx_terminal",array("money"=>$zd['money']+$order
 ['money']),array("id"=>$order['ztid']));//增加余额到该用户的账户上。
         }
     }
     else if($_GET['trade_status'] == 'TRADE_FINISHED') {
         //判断该笔订单是否在商户网站中已经做过处理
             //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统
 中查到该笔订单的详细,并执行商户的业务程序
             //如果有做过处理,不执行商户的业务程序
     }
     else {
       echo "trade_status=".$_GET['trade_status'];
     }
     echo "验证成功
";
     echo "trade_no=".$trade_no;

     notify_url.php也是一样,根据状态来编写对应的代码!notify_url.php文件中的状态要多一些。

代码如下:


 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
     //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
     //商户订单号
     $out_trade_no = $_POST['out_trade_no'];
     //支付宝交易号
     $trade_no = $_POST['trade_no'];
     //交易状态
     $trade_status = $_POST['trade_status'];
     if($_POST['trade_status'] == 'WAIT_BUYER_PAY') {
     //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款
         //判断该笔订单是否在商户网站中已经做过处理
             //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
             //如果有做过处理,不执行商户的业务程序
         echo "success";    //请不要修改或删除
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
     else if($_POST['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {
     //该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货
         if(!$order['status']){
             db_update("stx_recharge",array("status"=>1),array("oid"=>$_POST['out_trade_no']));
             //金钱的增加
             $zd = db_line("stx_terminal",array("id"=>$order['ztid']));
             db_update("stx_terminal",array("money"=>$zd['money']+$order['money']),array("id"=>$order['ztid']));
         }
         echo "success";    //请不要修改或删除
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
     else if($_POST['trade_status'] =='WAIT_BUYER_CONFIRM_GOODS') {
     //该判断表示卖家已经发了货,但买家还没有做确认收货的操作
         if(!$order['status']){
             db_update("stx_recharge",array("status"=>1),array("oid"=>$_POST['out_trade_no']));
             //金钱的增加
             $zd = db_line("stx_terminal",array("id"=>$order['ztid']));
             db_update("stx_terminal",array("money"=>$zd['money']+$order['money']),array("id"=>$order['ztid']));
         }
         echo "success";    //请不要修改或删除
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
     else if($_POST['trade_status'] == 'TRADE_FINISHED') {
     //该判断表示买家已经确认收货,这笔交易完成
         //判断该笔订单是否在商户网站中已经做过处理
             //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
             //如果有做过处理,不执行商户的业务程序
         echo "success";    //请不要修改或删除
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }


由于我基本上没有用到后续的发货处理,所以在该状态下未做处理,如果您的网站是购物网站秒就需要做对应的处理,比如更新状态值为已发货,或者未付款、已确认等。方便看到交易流程。同时在已付款的订单中会产生支付宝的订单id,可以同时记录在自己的订单中。

以上所述就是本文关于支付宝接口的全部内容了,希望能对大家熟练掌握支付宝接口支付的二次开发能够有所帮助。

相关文章

支付宝
支付宝

支付宝,全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付服务,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

123

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

33

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

19

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

85

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

20

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

11

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

47

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号