当前位置:首页 > 程序开发 > 支付宝当面付API开发记录

支付宝当面付API开发记录

程序开发 / 星之宇 / 2023-5-13 20:37 / 浏览:114 / 评论:0

因为有项目要用到支付宝当面付,所以就有了这次开发记录。

支付宝SDK:https://opendocs.alipay.com/open/54/103419

支付宝当面付官方文档:https://opendocs.alipay.com/open/f540afd8_alipay.trade.precreate?pathHash=d3c84596&ref=api&scene=19


一、授权申请

1、支付宝当面付能力开通,需要企业认证才可以开通,个人认证无法开通

2、申请一个应用和密钥,绑定支付宝当面付能力(教程请去支付宝支持帮助)


二、SDK上传并加载

我这里使用的是V2版本的SDK,上传aop文件夹到服务器(test文件夹不用上传)

require_once 'aop/AopClient.php';
require_once 'aop/request/AlipayTradePrecreateRequest.php'; //当面付


三、生成付款码

接口:alipay.trade.precreate(统一收单线下交易预创建)

        $aop = new AopClient();
    $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
    $aop->appId = 'app应用id';
    $aop->rsaPrivateKey = '开发者私钥';
    $aop->alipayrsaPublicKey = '支付宝公钥';
    $aop->apiVersion = '1.0';
    $aop->signType = 'RSA2';
    $aop->postCharset='utf-8';
    $aop->format='json';
    $params = array();
    $params = [
        'out_trade_no' => '商户请求唯一标识,最大64位',
        'total_amount' => '10.11',//支付金额
        'subject' => '支付主题',
    ];
    $request = new AlipayTradePrecreateRequest();
    $request->setNotifyUrl('https://www.77bx.com/alipay.php');//回调地址
    $request->setBizContent(json_encode($params));
    $result = $aop->execute($request);
    $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
    $resultCode = $result->$responseNode->code;
    $data = array();
    if(!empty($resultCode)&&$resultCode == 10000){
        $out_trade_no = $result->$responseNode->out_trade_no;
        if($out_trade_no == $order['order_unique']){
            echo $result->$responseNode->qr_code;//输出支付宝链接(扫码需要转为二维码)
        }
    }


四、扫码回调

1、手机扫描付款后,支付宝会POST数据到回调地址。需要对数据进行验签和验重

    $aop = new AopClient();
    $aop->alipayrsaPublicKey = '支付宝公钥';
    return $aop->rsaCheckV1($params,'','RSA2');//$params是支付宝回调POST的数据,返回True/False
主要坑是支付宝可能会多次返回数据,所以一定要验重,当然验签也是一定要的。


本接口没多大的难点,细节方面注意点即可,比如付款二维码展示的时候需要对付款状态做响应。

目前有 0 条评论

    • QQ
    • 填好QQ,点击获取自动填写昵称和邮箱
    • 昵称
    • 邮箱
    • 网址