即时到账

优质
小牛编辑
127浏览
2023-12-01

说明

支付宝即时到账交易SDK。

官方文档:https://docs.open.alipay.com/62/104743/

SDK类

类名:\Yurun\PaySDK\Alipay\SDK

实例化:$sdk = new \Yurun\PaySDK\Alipay\SDK($params);


公用参数类

类名:\Yurun\PaySDK\Alipay\Params\PublicParams

属性

名称类型说明
$_input_charsetstring商户网站使用的编码格式,如UTF-8、GBK、GB2312等。
$sign_typestringDSA、RSA、MD5三个值可选,必须大写。
$appPrivateKeystring私有证书文件内容
$appPrivateKeyFilestring私有证书文件地址,不为空时优先使用文件地址
$appPublicKeystring公有证书文件内容
$appPublicKeyFilestring公有证书文件地址,不为空时优先使用文件地址
$md5KeystringMD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
$apiDomainstring接口网关
$appIDstring支付平台分配给开发者的应用ID

请求参数类

支付请求参数

类名:\Yurun\PaySDK\Alipay\Params\Pay\Request

属性
名称类型说明
$servicestring接口名称
$return_urlstring同步返回地址,HTTP/HTTPS开头字符串
$notify_urlstring支付宝服务器主动通知商户服务器里指定的页面http/https路径。
$businessParams\Yurun\PaySDK\Alipay\Params\Pay\BusinessParams业务请求参数
参考https://docs.open.alipay.com/62/104743/
$_syncResponseNamestring支付宝返回的json中xxx_response的名字
$_methodstring接口请求方法
$_isSyncVerifyboolean是否同步返回验证

业务请求参数

类名:\Yurun\PaySDK\Alipay\Params\Pay\BusinessParams

属性
名称类型说明
$out_trade_nostring商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
$subjectstring商品的标题/交易标题/订单标题/订单关键字等。
该参数最长为128个汉字。
$payment_typeint只支持取值为1(商品购买)。
$total_feedouble该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。
$seller_idstring卖家支付宝用户号
$seller_emailstring卖家支付宝账号
$seller_account_namestring卖家支付宝账号别名
$buyer_idstring买家支付宝用户号
$buyer_emailstring买家支付宝账号
$buyer_account_namestring买家支付宝账号别名
$pricedouble商品单价
$quantityint购买数量
$bodystring对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
$show_urlstring收银台页面上,商品展示的超链接。
$enable_paymethodstring可用的支付渠道,用户只能在指定渠道范围内支付。
当有多个渠道时,以“^”分隔。
与disable_paymethod互斥。
$disable_paymethodstring被禁用的支付渠道,用户不可用指定渠道支付。
当有多个渠道时,以“^”分隔。
与nable_paymethod互斥。
$anti_phishing_keystring防钓鱼时间戳,通过时间戳查询接口获取的加密支付宝系统时间戳。
如果已申请开通防钓鱼时间戳验证,则此字段必填。
$exter_invoke_ipstring客户端IP,用户在创建交易时,该用户当前所使用机器的IP。
如果商户申请后台开通防钓鱼IP地址检查选项,此字段必填,校验用。
$extra_common_paramstring公用回传参数,如果用户请求时传递了该参数,则返回给商户时会回传该参数。
$it_b_paystring超时时间
该笔订单允许的最晚付款时间,逾期将关闭交易。
取值范围:1m~15d。
m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。
该参数数值不接受小数点,如1.5h,可转换为90m。
该参数在请求到支付宝时开始计时。
$tokenstring如果开通了快捷登录产品,则需要填写;如果没有开通,则为空。
$qr_pay_modeint扫码支付的方式,支持前置模式和跳转模式。
前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以iframe方式请求支付宝页面。具体分为以下4种:
0:订单码-简约前置模式,对应iframe宽度不能小于600px,高度不能小于300px;
1:订单码-前置模式,对应iframe宽度不能小于300px,高度不能小于600px;
3:订单码-迷你前置模式,对应iframe宽度不能小于75px,高度不能小于75px。
4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小。
跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。
2:订单码-跳转模式
$qrcode_widthint商户自定义的二维码宽度。
当qr_pay_mode=4时,该参数生效。
$need_buyer_realnamedstring是否需要买家实名认证。
T表示需要买家实名认证;
不传或者传其它值表示不需要买家实名认证。
$hb_fq_paramstring参数格式:hb_fq_seller_percent ^卖家承担付费比例|;hb_fq_num ^期数。
hb_fq_num:花呗分期数,比如分3期支付;
hb_fq_seller_percent:卖家承担收费比例,比如100代表卖家承担100%。
两个参数必须一起传入。
两个参数用“|”间隔。Key和value之间用“^”间隔。
具体花呗分期期数和卖家承担收费比例可传入的数值请咨询支付宝。
$goods_typeint商品类型:
1表示实物类商品
0表示虚拟类商品
如果不传,默认为实物类商品。
$extend_paramstring业务扩展参数
参数格式:参数名1^参数值1|;参数名2^参数值2|;……
多条数据用“|”间隔。
详见下面的“业务扩展参数说明”。

有密退款请求参数

类名:\Yurun\PaySDK\Alipay\Params\RefundPwd\Request

属性
名称类型说明
$servicestring接口名称
$notify_urlstring支付宝服务器主动通知商户服务器里指定的页面http/https路径。
$businessParams\Yurun\PaySDK\Alipay\Params\RefundPwd\BusinessParams业务请求参数
参考https://docs.open.alipay.com/62/104743/
$_syncResponseNamestring支付宝返回的json中xxx_response的名字
$_methodstring接口请求方法
$_isSyncVerifyboolean是否同步返回验证

简单使用

支付

跳转到支付宝的支付页面。

// SDK实例化,传入公共配置
$pay = new \Yurun\PaySDK\Alipay\SDK($params);

// 支付接口
$request = new \Yurun\PaySDK\Alipay\Params\Pay\Request;
$request->notify_url = $GLOBALS['PAY_CONFIG']['notify_url']; // 支付后通知地址(作为支付成功回调,这个可靠)
$request->return_url = $GLOBALS['PAY_CONFIG']['return_url']; // 支付后跳转返回地址
$request->businessParams->seller_id = $GLOBALS['PAY_CONFIG']['appid']; // 卖家支付宝用户号
$request->businessParams->out_trade_no = 'test' . mt_rand(10000000,99999999); // 商户订单号
$request->businessParams->total_fee = 0.01; // 价格
$request->businessParams->subject = '测试商品'; // 商品标题

// 跳转到支付页面
// $pay->redirectExecute($request);

// 获取跳转url
$pay->prepareExecute($request, $url);
var_dump($url);

详见:test/Alipay/pay.php

回调

用户在支付完成后跳转回来的页面,一般只建议做显示用途。

// SDK实例化,传入公共配置
$pay = new \Yurun\PaySDK\Alipay\SDK($params);

if($pay->verifyCallback($_GET))
{
    // 回调验证成功,可以通过GET参数来获取支付宝回传的参数
}
else
{
    // 回调验证失败
}

详见:test/Alipay/return.php

异步通知

在支付完成后,从支付宝服务器请求我们的异步通知地址,这个才应该是做支付成功处理的时机。

// SDK实例化,传入公共配置
$pay = new \Yurun\PaySDK\Alipay\SDK($params);

if($pay->verifyCallback($_POST))
{
    // 通知验证成功,可以通过POST参数来获取支付宝回传的参数
}
else
{
    // 通知验证失败
}

详见:test/Alipay/notify.php