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

支付宝当面付API开发记录

程序开发 / 星之宇 / 2023-5-13 20:37 / 浏览:6414 / 评论: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 条评论

    • 昵称
    • 邮箱
    • 网址