即时到账
优质
小牛编辑
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_charset | string | 商户网站使用的编码格式,如UTF-8、GBK、GB2312等。 |
$sign_type | string | DSA、RSA、MD5三个值可选,必须大写。 |
$appPrivateKey | string | 私有证书文件内容 |
$appPrivateKeyFile | string | 私有证书文件地址,不为空时优先使用文件地址 |
$appPublicKey | string | 公有证书文件内容 |
$appPublicKeyFile | string | 公有证书文件地址,不为空时优先使用文件地址 |
$md5Key | string | MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm |
$apiDomain | string | 接口网关 |
$appID | string | 支付平台分配给开发者的应用ID |
请求参数类
支付请求参数
类名:\Yurun\PaySDK\Alipay\Params\Pay\Request
属性
名称 | 类型 | 说明 |
---|---|---|
$service | string | 接口名称 |
$return_url | string | 同步返回地址,HTTP/HTTPS开头字符串 |
$notify_url | string | 支付宝服务器主动通知商户服务器里指定的页面http/https路径。 |
$businessParams | \Yurun\PaySDK\Alipay\Params\Pay\BusinessParams | 业务请求参数 参考https://docs.open.alipay.com/62/104743/ |
$_syncResponseName | string | 支付宝返回的json中xxx_response的名字 |
$_method | string | 接口请求方法 |
$_isSyncVerify | boolean | 是否同步返回验证 |
业务请求参数
类名:\Yurun\PaySDK\Alipay\Params\Pay\BusinessParams
属性
名称 | 类型 | 说明 |
---|---|---|
$out_trade_no | string | 商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复 |
$subject | string | 商品的标题/交易标题/订单标题/订单关键字等。 该参数最长为128个汉字。 |
$payment_type | int | 只支持取值为1(商品购买)。 |
$total_fee | double | 该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。 |
$seller_id | string | 卖家支付宝用户号 |
$seller_email | string | 卖家支付宝账号 |
$seller_account_name | string | 卖家支付宝账号别名 |
$buyer_id | string | 买家支付宝用户号 |
$buyer_email | string | 买家支付宝账号 |
$buyer_account_name | string | 买家支付宝账号别名 |
$price | double | 商品单价 |
$quantity | int | 购买数量 |
$body | string | 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。 |
$show_url | string | 收银台页面上,商品展示的超链接。 |
$enable_paymethod | string | 可用的支付渠道,用户只能在指定渠道范围内支付。 当有多个渠道时,以“^”分隔。 与disable_paymethod互斥。 |
$disable_paymethod | string | 被禁用的支付渠道,用户不可用指定渠道支付。 当有多个渠道时,以“^”分隔。 与nable_paymethod互斥。 |
$anti_phishing_key | string | 防钓鱼时间戳,通过时间戳查询接口获取的加密支付宝系统时间戳。 如果已申请开通防钓鱼时间戳验证,则此字段必填。 |
$exter_invoke_ip | string | 客户端IP,用户在创建交易时,该用户当前所使用机器的IP。 如果商户申请后台开通防钓鱼IP地址检查选项,此字段必填,校验用。 |
$extra_common_param | string | 公用回传参数,如果用户请求时传递了该参数,则返回给商户时会回传该参数。 |
$it_b_pay | string | 超时时间 该笔订单允许的最晚付款时间,逾期将关闭交易。 取值范围:1m~15d。 m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点,如1.5h,可转换为90m。 该参数在请求到支付宝时开始计时。 |
$token | string | 如果开通了快捷登录产品,则需要填写;如果没有开通,则为空。 |
$qr_pay_mode | int | 扫码支付的方式,支持前置模式和跳转模式。 前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以iframe方式请求支付宝页面。具体分为以下4种: 0:订单码-简约前置模式,对应iframe宽度不能小于600px,高度不能小于300px; 1:订单码-前置模式,对应iframe宽度不能小于300px,高度不能小于600px; 3:订单码-迷你前置模式,对应iframe宽度不能小于75px,高度不能小于75px。 4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小。 跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。 2:订单码-跳转模式 |
$qrcode_width | int | 商户自定义的二维码宽度。 当qr_pay_mode=4时,该参数生效。 |
$need_buyer_realnamed | string | 是否需要买家实名认证。 T表示需要买家实名认证; 不传或者传其它值表示不需要买家实名认证。 |
$hb_fq_param | string | 参数格式:hb_fq_seller_percent ^卖家承担付费比例|;hb_fq_num ^期数。 hb_fq_num:花呗分期数,比如分3期支付; hb_fq_seller_percent:卖家承担收费比例,比如100代表卖家承担100%。 两个参数必须一起传入。 两个参数用“|”间隔。Key和value之间用“^”间隔。 具体花呗分期期数和卖家承担收费比例可传入的数值请咨询支付宝。 |
$goods_type | int | 商品类型: 1表示实物类商品 0表示虚拟类商品 如果不传,默认为实物类商品。 |
$extend_param | string | 业务扩展参数 参数格式:参数名1^参数值1|;参数名2^参数值2|;…… 多条数据用“|”间隔。 详见下面的“业务扩展参数说明”。 |
有密退款请求参数
类名:\Yurun\PaySDK\Alipay\Params\RefundPwd\Request
属性
名称 | 类型 | 说明 |
---|---|---|
$service | string | 接口名称 |
$notify_url | string | 支付宝服务器主动通知商户服务器里指定的页面http/https路径。 |
$businessParams | \Yurun\PaySDK\Alipay\Params\RefundPwd\BusinessParams | 业务请求参数 参考https://docs.open.alipay.com/62/104743/ |
$_syncResponseName | string | 支付宝返回的json中xxx_response的名字 |
$_method | string | 接口请求方法 |
$_isSyncVerify | boolean | 是否同步返回验证 |
简单使用
支付
跳转到支付宝的支付页面。
// 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