PHP项目集成支付宝PC端扫码支付API(国内支付)

一、PC端(电脑端)网站扫码支付接口申请流程

1. 注册是支付宝商家账号 —— 注册地址;

 

2. 注册成功后,找到蚂蚁金服开放平台,点击支付应用

PHP项目集成支付宝PC端扫码支付API(国内支付)_第1张图片

3. 创建应用

PHP项目集成支付宝PC端扫码支付API(国内支付)_第2张图片

4. 添加应用中的电脑支付功能

PHP项目集成支付宝PC端扫码支付API(国内支付)_第3张图片

5. 开发配置

PHP项目集成支付宝PC端扫码支付API(国内支付)_第4张图片

说明:

(1)其中的支付宝网关地址不用改;

(2)应用网关设置为你网站的域名(如:https://www.xxx.com/),所以这个位置的设置就决定了你的网站首先要上线、然后域名解析到服务器上才可以申请支付宝的支付接口;

(3)授权回调地址不用设置,一般如果涉及到第三方访问应用的时候才需要设置;

(4)设置应用公钥 —— 获取应用公钥和私钥的参考文档。

6. 当配置好后,直接提交审核,之后就等待审核了。

二、准备配置参数

当我们支付宝电脑支付功能所在应用申请成功后,我们需要获取一系列支付宝支付配置参数。

1.  app_id :应用ID,在这个地址中查看:https://openhome.alipay.com/platform/keyManage.htm;

2. merchant_private_key:商户私钥。这个在获取应用公钥和私钥时就已经获取到,公钥上传到支付宝中,私钥就在项目中与之匹配验证;

3. notify_url : 异步通知回调地址。支付成功后,支付宝回调服务器的地址;

4. return_url:同步跳转地址。支付成功回调了服务器的地址后,自动跳转到目标地址;

5. charset:编码格式,一般为“UTF-8”;

6. sign_type:签名方式,一般为“RSA2”;

7. gatewayUrl:支付宝网关,https://openapi.alipay.com/gateway.do;

8. alipay_public_key:支付宝公钥,在这个地址查看:https://openhome.alipay.com/platform/keyManage.htm。

三、实际应用举例(ThinkPHP3.2)

1. 下载支付宝支付demo,下载地址:https://docs.open.alipay.com/270/106291/;

2. 解压,将文件包放入 /ThinkPHP/Library/Vendor/ 文件夹下,如:

PHP项目集成支付宝PC端扫码支付API(国内支付)_第5张图片

3. 在配置文件中配置支付宝配置参数,文件路径:/application/Common/config/config.php;

PHP项目集成支付宝PC端扫码支付API(国内支付)_第6张图片

4. 控制器中生成支付二维码的代码

public function alipay()
{
    // 配置参数
    $res = array();
    $res['out_trade_no'] = $_POST['orderno'];        // 商户订单号        
    $res['subject']      = $_POST['title'];          // 商品名称
    $res['total_amount'] = $_POST['total'];          // 商品总价
    $res['body']         = $_POST['description'];    // 商品描述
    // 引入支付核心文件
    Vendor('Alipay.AopSdk');
    Vendor("Alipay.pagepay.service.AlipayTradeService");
    Vendor("Alipay.pagepay.buildermodel.AlipayTradePagePayContentBuilder");
    // 获取支付宝配置参数
    $config = C("alipay");
    //商户订单号,商户网站订单系统中唯一订单号,必填
    $out_trade_no = $res["out_trade_no"];
    //订单名称,必填
    $subject = trim($res["subject"]);
    //付款金额,必填
    $total_amount = $res["total_amount"];
    //商品描述,可空
    $body = trim($res["body"]);
    //构造参数
    $payRequestBuilder = new \AlipayTradePagePayContentBuilder();
    $payRequestBuilder->setBody($body);
    $payRequestBuilder->setSubject($subject);
    $payRequestBuilder->setTotalAmount($total_amount);
    $payRequestBuilder->setOutTradeNo($out_trade_no);
    $aop = new \AlipayTradeService($config);
    /**
     * pagePay 电脑网站支付请求
     * @param $builder 业务参数,使用buildmodel中的对象生成。
     * @param $return_url 同步跳转地址,公网可以访问
     * @param $notify_url 异步通知地址,公网可以访问
     * @return $response 支付宝返回的信息
    */
    $response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);
    //输出支付二维码
    var_dump($response);
}

此处流程:用户点击支付后,直接访问该地址,并将购买商品的订单号、商品名称、商品总价以及商品描述等参数传递过来,支付宝自动生成支付二维码页面。用户扫描支付后,自动回调,回调如下:

public function ailpay_notify(){
    // 引入核心类文件
    Vendor("Alipay.pagepay.service.AlipayTradeService");
    // 获取支付宝配置参数
    $config = C('alipay');
    // 获取返回值
    $arr = $_POST;
    // 检查数据
    $alipaySevice = new \AlipayTradeService($config);
    $alipaySevice->writeLog(var_export($_POST,true));
    $result = $alipaySevice->check($arr);
    // 判断检查结果数据
    if($result) {
        // 获取相关数据
        $out_trade_no = $arr['out_trade_no'];       //商户订单号
        $trade_no     = $arr['trade_no'];           //支付宝交易号
        $trade_status = $arr['trade_status'];       //交易状态
        $total_amount = $arr['total_amount'];       //交易金额
        $buyerid      = $arr['buyer_id'];           //卖家支付宝账号id

        // 判断数据是否做过处理,如果做过处理,return,没有做过处理,执行支付成功代码
        if($trade_status == 'TRADE_FINISHED' OR $trade_status == 'TRADE_SUCCESS') {

            //  修改订单状态
            //  修改用户拥有商品状态
            //  codeding……

            echo "success";
        }else{
            echo "fail";
        }
        
    }else {
        echo "fail";
    }
}

ps:至此,一个完整的支付宝集合支付宝电脑版支付api过程已经完成。但是,我们经常会在真正申请支付宝应用前使用沙箱模式进行测试,那怎么进行呢?

如下步骤:

(1)登录支付宝商户账号,找到栏目开发者中心,点击研发服务,如下图:

PHP项目集成支付宝PC端扫码支付API(国内支付)_第7张图片

(2)在沙箱应用下配置我们之前说到的那些配置参数,然后获取到这些配置参数。

PHP项目集成支付宝PC端扫码支付API(国内支付)_第8张图片

(3)然后其他操作和真实应用一模一样。

(4)沙箱版配置生成的支付二维码只能通过沙箱版支付宝APP进行扫描支付。具体下载参考:沙箱环境中的沙箱账号和沙箱工具。

PHP项目集成支付宝PC端扫码支付API(国内支付)_第9张图片

四、参考文档

1. 支付宝电脑版支付API文档;

2. 沙箱环境使用文档;

 

总结:通过支付宝电脑版支付的流程,基本有思路去集成支付宝其他终端的支付功能,并且相关的退款、查询订单等功能也可以顺着文档支付宝的demo去试验,长点见识总是好的,亲自去感知一遍过程,对很多事情的想法会不一样。

祝好运!

你可能感兴趣的:(PHP,资源分享,API)