Blogger Information
Blog 15
fans 2
comment 0
visits 15903
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
支付宝支付
LiuBo的博客
Original
992 people have browsed it

php接入支付宝的流程写在这里供像我一样的小白参考。

1.首先要有一个创建一个应用(选好自己想要的功能,关于支付的功能,貌似都需要签约)

1.png


2.下载SDK&Dome(网址https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.CBtzBF&treeId=203&articleId=105910&docType=1)

2.png



我选择的是MD5签名方式,下面红框内就是做好的php Demo

3.png


lib文件很重要,是整个接口的核心类文件;

alipay.config.php是相关参数的配置文件

alipayapi.php 是支付宝接口入口文件

notify_url.php 是服务器异步通知页面文件;

return_url.php 是页面跳转同步通知文件;

3.打开alipay.config.php

4.png


4.配置完成后这个小例子就能直接访问了


5.png

6.png


通过这个例子,我们就能灵活运用了

开发文档:https://doc.open.alipay.com/docs/doc.htm?treeId=203&articleId=105288&docType=1

**********************************************

嵌入thinkphp3.2.3

我保留了

7.png

重新命名为

8.png

分别给这五个文件加上命名空间

9.png

这四个文件的命名空间改为

10.png

Alipay.class.php 有改动

<?php
namespace Extend\Alipay;
class Alipay {
    public function pay($alipay_config,$args){
        /**************************请求参数**************************/
        //支付类型
    $payment_type = "1";
    //必填,不能修改
    //服务器异步通知页面路径
    $notify_url = $args['notify_url'];
    //需https://格式的完整路径,不能加?id=123这类自定义参数
    //页面跳转同步通知页面路径
    $return_url = $args['return_url'];
    //需https://格式的完整路径,不能加?id=123这类自定义参数,不能写成https://localhost/
        //商户订单号
    $out_trade_no = $args['out_trade_no'];
    //商户网站订单系统中唯一订单号,必填
    //订单名称
    $subject = "测试";
    //必填
    //付款金额
    $total_fee = $args['total'];
    //必填
    //订单描述
    $body = "test";
    //需以https://开头的完整路径,例如:https://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_id" => trim($alipay_config['seller_id']),
        "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 lib\AlipaySubmit($alipay_config);
        $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
        echo $html_text;
    }
}

在config.php配置文件里配置参数

11.png

然后新建控制器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(){
        $out_trade_no = date('YmdHis');
        $baseurl = 'https://'.$_SERVER['HTTP_HOST'];
        $args = array(
            'out_trade_no'=>$out_trade_no,
            'notify_url'=> $baseurl.'/index.php/Home/Text/notifyurl.html',
            'return_url'=> $baseurl.'/index.php/Home/Text/returnurl.html',
            'total'=> $_POST['WIDtotal_fee'],
            );
        $s = new Alipays\Alipay();
        $s->pay(C('alipay'),$args);
    }
    // 同步跳转
    public function returnurl(){
        $alipay_config = C('alipay');
        //计算得出通知验证结果
        $alipayNotify = new Alipays\lib\AlipayNotify($alipay_config);
        $verify_result = $alipayNotify->verifyReturn();
        if($verify_result) {//验证成功
            //商户订单号
            $out_trade_no = $_GET['out_trade_no'];
            //支付宝交易号
            $trade_no = $_GET['trade_no'];
            //交易状态
            $trade_status = $_GET['trade_status'];
            if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
                //交易成功                
            }else {
              echo "trade_status=".$_GET['trade_status'];
            }   
            echo "验证成功<br />";
            }else {
            //验证失败
            //如要调试,请看alipay_notify.php页面的verifyReturn函数
            echo "验证失败";
        }
    }
    // 异步跳转
    public function notifyurl(){
        $alipay_config = C('alipay');
        //计算得出通知验证结果
        $alipayNotify = new Alipays\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'];
            if($_POST['trade_status'] == 'TRADE_FINISHED'||$_POST['trade_status'] == 'TRADE_SUCCESS') {
              //交易成功
            }
            echo "success";     //请不要修改或删除
            
        }
        else {
            //验证失败
            echo "fail";
            //调试用,写文本函数记录程序运行情况是否正常
            //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
        }
    }
}

然后

12.png

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


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!