PHP接入支付宝的流程

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 Demolib文件很重要,是整个接口的核心类文件;alipay.config.php是相关参数的配置文件alipayapi.php 是支付宝接口入口文件notify_url.php 是服务器异步通知页面文件;return_url.php 是页面跳转同步通知文件;3.打开alipay.config.php4.配置完成后这个小例子就能直接访问了

通过这个例子,我们就能灵活运用了开发文档:https://doc.open.alipay.com/docs/doc.htm?treeId=203&articleId=105288&docType=1**********************************************嵌入thinkphp3.2.3我保留了
重新命名为
分别给这五个文件加上命名空间这四个文件的命名空间改为

Alipay.class.php 有改动<?php
namespace Extend\Alipay;
class Alipay {
    public function pay(alipayconfig,alipayconfig,args){
        /**************************请求参数**************************/
        //支付类型
    paymenttype="1";//必填,不能修改//服务器异步通知页面路径paymenttype="1";//必填,不能修改//服务器异步通知页面路径notify_url = args[′notifyurl′];//需http://格式的完整路径,不能加?id=123这类自定义参数//页面跳转同步通知页面路径args[′notifyurl′];//需http://格式的完整路径,不能加?id=123这类自定义参数//页面跳转同步通知页面路径return_url = args[′returnurl′];//需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost///商户订单号args[′returnurl′];//需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost///商户订单号out_trade_no = args[′outtradeno′];//商户网站订单系统中唯一订单号,必填//订单名称args[′outtradeno′];//商户网站订单系统中唯一订单号,必填//订单名称subject = "测试";
    //必填
    //付款金额
    totalfee=totalfee=args['total'];
    //必填
    //订单描述
    body="test";//需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html//防钓鱼时间戳body="test";//需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html//防钓鱼时间戳anti_phishing_key = "";
    //若要使用请调用类文件submit中的query_timestamp函数
    //客户端的IP地址
    exterinvokeip="";//非局域网的外网IP地址,如:221.0.0.1/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗///构造要请求的参数数组,无需改动exterinvokeip="";//非局域网的外网IP地址,如:221.0.0.1/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗///构造要请求的参数数组,无需改动parameter = array(
        "service" => "create_direct_pay_by_user",
        "partner" => trim(alipayconfig[′partner′]),"sellerid"=>trim(alipayconfig[′partner′]),"sellerid"=>trim(alipay_config['seller_id']),
        "payment_type"  => paymenttype,"notifyurl"=>paymenttype,"notifyurl"=>notify_url,
        "return_url"    => returnurl,"outtradeno"=>returnurl,"outtradeno"=>out_trade_no,
        "subject"       => subject,"totalfee"=>subject,"totalfee"=>total_fee,
        "body"  => body,"showurl"=>body,"showurl"=>show_url,
        "anti_phishing_key"     => antiphishingkey,"exterinvokeip"=>antiphishingkey,"exterinvokeip"=>exter_invoke_ip,
        "_input_charset"        => trim(strtolower(alipayconfig[′inputcharset′])));//建立请求alipayconfig[′inputcharset′])));//建立请求alipaySubmit = new lib\AlipaySubmit(alipayconfig);alipayconfig);html_text = alipaySubmit−>buildRequestForm(alipaySubmit−>buildRequestForm(parameter,"get", "确认");
        echo $html_text;
    }
}
在config.php配置文件里配置参数
然后新建控制器TextController.class.php<?php
namespace Home\Controller;
use Think\Controller;
use \Extend\Alipay as Alipays;
class TextController extends Controller {
    public function index(){
        this->display(); 
    } 
    public function dobuy(){this->display();     }     public function dobuy(){out_trade_no = date('YmdHis');
        baseurl=′http://′.baseurl=′http://′._SERVER['HTTP_HOST'];
        args=array(′outtradeno′=>args=array(′outtradeno′=>out_trade_no,
            'notify_url'=> baseurl.′/index.php/Home/Text/notifyurl.html′,′returnurl′=>baseurl.′/index.php/Home/Text/notifyurl.html′,′returnurl′=>baseurl.'/index.php/Home/Text/returnurl.html',
            'total'=> POST[′WIDtotalfee′],);POST[′WIDtotalfee′],);s = new Alipays\Alipay();
        s−>pay(C(′alipay′),s−>pay(C(′alipay′),args);
    }
    // 同步跳转
    public function returnurl(){
        alipayconfig=C(′alipay′);//计算得出通知验证结果alipayconfig=C(′alipay′);//计算得出通知验证结果alipayNotify = new Alipays\lib\AlipayNotify(alipayconfig);alipayconfig);verify_result = alipayNotify−>verifyReturn();if(alipayNotify−>verifyReturn();if(verify_result) {//验证成功
            //商户订单号
            outtradeno=outtradeno=_GET['out_trade_no'];
            //支付宝交易号
            tradeno=tradeno=_GET['trade_no'];
            //交易状态
            tradestatus=tradestatus=_GET['trade_status'];
            if(GET[′tradestatus′]==′TRADEFINISHED′||GET[′tradestatus′]==′TRADEFINISHED′||_GET['trade_status'] == 'TRADE_SUCCESS') {
                //交易成功                
            }else {
              echo "trade_status="._GET['trade_status']; 
            }    
            echo "验证成功<br />"; 
            }else { 
            //验证失败 
            //如要调试,请看alipay_notify.php页面的verifyReturn函数 
            echo "验证失败"; 
        } 
    } 
    // 异步跳转 
    public function notifyurl(){_GET['trade_status'];             }                echo "验证成功<br />";             }else {             //验证失败             //如要调试,请看alipay_notify.php页面的verifyReturn函数             echo "验证失败";         }     }     // 异步跳转     public function notifyurl(){alipay_config = C('alipay');
        //计算得出通知验证结果
        alipayNotify=newAlipays\AlipayNotify(alipayNotify=newAlipays\AlipayNotify(alipay_config);
        verifyresult=verifyresult=alipayNotify->verifyNotify();
        if(verify_result) {//验证成功verify_result) {//验证成功out_trade_no = POST[′outtradeno′];//支付宝交易号POST[′outtradeno′];//支付宝交易号trade_no = POST[′tradeno′];//交易状态POST[′tradeno′];//交易状态trade_status = POST[′tradestatus′];if(POST[′tradestatus′];if(_POST['trade_status'] == 'TRADE_FINISHED'||$_POST['trade_status'] == 'TRADE_SUCCESS') {
              //交易成功
            }
            echo "success";     //请不要修改或删除
            
        }
        else {
            //验证失败
            echo "fail";
            //调试用,写文本函数记录程序运行情况是否正常
            //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
        }
    }
}
然后

这样就成功完成简单的支付功能了

手机端:参考http://www.sucaihuo.com/php/1948.html 原文出处:http://blog.csdn.net/sangjinchao/article/details/54987999支持原创
文章来源: PHP接入支付宝的流程

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:PHP接入支付宝的流程