手机网站支付
优质
小牛编辑
132浏览
2023-12-01
说明
支付宝手机网站支付SDK。
官方文档:https://docs.open.alipay.com/60/104790/
类
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\WapPay\Request
属性
名称 | 类型 | 说明 |
---|---|---|
$service | string | 接口名称 |
$return_url | string | 同步返回地址,HTTP/HTTPS开头字符串 |
$notify_url | string | 支付宝服务器主动通知商户服务器里指定的页面http/https路径。 |
$businessParams | \Yurun\PaySDK\Alipay\Params\WapPay\BusinessParams | 业务请求参数 参考https://docs.open.alipay.com/60/104790/ |
$_syncResponseName | string | 支付宝返回的json中xxx_response的名字 |
$_method | string | 接口请求方法 |
$_isSyncVerify | boolean | 是否同步返回验证 |
业务请求参数
类名:\Yurun\PaySDK\Alipay\Params\WapPay\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 | 卖家支付宝用户号 | |||
$body | string | 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。 | |||
$show_url | string | 收银台页面上,商品展示的超链接。 | |||
$enable_paymethod | string | 可用的支付渠道,用户只能在指定渠道范围内支付。 当有多个渠道时,以“^”分隔。 与disable_paymethod互斥。 | |||
$it_b_pay | string | 超时时间 该笔订单允许的最晚付款时间,逾期将关闭交易。 取值范围:1m~15d。 m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点,如1.5h,可转换为90m。 该参数在请求到支付宝时开始计时。 | |||
$extern_token | string | 钱包token 接入极简版wap收银台时支持。 当商户请求是来自支付宝钱包,在支付宝钱包登录后,有生成登录信息token时,使用该参数传入token将可以实现信任登录收银台,不需要再次登录。 注意: 登录后用户还是有入口可以切换账户,不能使用该参数锁定用户。 | |||
$otherfee | double | 航旅订单其它费用 航旅订单中除去票面价之外的费用,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。 | |||
$airticket | double | 航旅订单金额 航旅订单金额描述,由四项或两项构成,各项之间由“ | ”分隔,每项包含金额与描述,金额与描述间用“^”分隔,票面价之外的价格之和必须与otherfee相等。 | ||
$rn_check | string | 是否发起实名校验 T:发起实名校验; F:不发起实名校验。 | |||
$buyer_cert_no | string | 买家证件号码(需要与支付宝实名认证时所填写的证件号码一致)。 说明: 当scene=ZJCZTJF的情况下,才会校验buyer_cert_no字段。 | |||
$buyer_real_name | string | 买家真实姓名。 说明: 当scene=ZJCZTJF的情况下,才会校验buyer_real_name字段。 | |||
$scene | string | 收单场景。如需使用该字段,需向支付宝申请开通,否则传入无效。 | |||
$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表示虚拟类商品 如果不传,默认为实物类商品。 | |||
$app_pay | string | app_pay=Y:尝试唤起支付宝客户端进行支付,若用户未安装支付宝,则继续使用wap收银台进行支付。商户若为APP,则需在APP的webview中增加alipays协议处理逻辑。 | |||
$promo_params | string | 商户与支付宝约定的营销参数,为Key:Value键值对,如需使用,请联系支付宝技术人员。 | |||
$extend_params | string | 业务扩展参数 参数格式:参数名1^参数值1 | 参数名2^参数值2 | …… 多条数据用“ | ”间隔。 详见下面的“业务扩展参数说明”。 |
$ext_user_info | \Yurun\PaySDK\Alipay\Params\WapPay\ExtUserInfo | 外部用户信息。提供给商户传入用户的身份信息,与支付宝内用户信息匹配校验。校验失败报错“付款人不匹配”。参数说明:json格式 详见 https://docs.open.alipay.com/60/104790/ |
外部用户信息
类名:\Yurun\PaySDK\Alipay\Params\WapPay\ExtUserInfo
属性
名称 | 类型 | 说明 |
---|---|---|
$cert_type | string | 证件类型 填充的证件号对应的证件类型,目前支持:IDENTITY_CARD(身份证) |
$name | string | 证件姓名 |
$cert_no | string | 证件号 |
$need_check_info | string | 是否要进行实名制校验: l T需要 l F不需要(默认不需要) |
有密退款请求参数
类名:\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\WapPay\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 = '测试商品'; // 商品标题
$request->businessParams->show_url = 'http://www.yurunsoft.com'; // 用户付款中途退出返回商户网站的地址。
// 跳转到支付页面
// $pay->redirectExecute($request);
// 获取跳转url
$pay->prepareExecute($request, $url);
var_dump($url);
详见:test/Alipay/wap_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