手机网站支付

优质
小牛编辑
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_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\WapPay\Request

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

业务请求参数

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

属性
名称类型说明
$out_trade_nostring商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
$subjectstring商品的标题/交易标题/订单标题/订单关键字等。
该参数最长为128个汉字。
$payment_typeint只支持取值为1(商品购买)。
$total_feedouble该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。
$seller_idstring卖家支付宝用户号
$bodystring对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
$show_urlstring收银台页面上,商品展示的超链接。
$enable_paymethodstring可用的支付渠道,用户只能在指定渠道范围内支付。
当有多个渠道时,以“^”分隔。
与disable_paymethod互斥。
$it_b_paystring超时时间
该笔订单允许的最晚付款时间,逾期将关闭交易。
取值范围:1m~15d。
m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。
该参数数值不接受小数点,如1.5h,可转换为90m。
该参数在请求到支付宝时开始计时。
$extern_tokenstring钱包token
接入极简版wap收银台时支持。
当商户请求是来自支付宝钱包,在支付宝钱包登录后,有生成登录信息token时,使用该参数传入token将可以实现信任登录收银台,不需要再次登录。
注意:
登录后用户还是有入口可以切换账户,不能使用该参数锁定用户。
$otherfeedouble航旅订单其它费用
航旅订单中除去票面价之外的费用,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。
$airticketdouble航旅订单金额
航旅订单金额描述,由四项或两项构成,各项之间由“
”分隔,每项包含金额与描述,金额与描述间用“^”分隔,票面价之外的价格之和必须与otherfee相等。
$rn_checkstring是否发起实名校验
T:发起实名校验;
F:不发起实名校验。
$buyer_cert_nostring买家证件号码(需要与支付宝实名认证时所填写的证件号码一致)。
说明:
当scene=ZJCZTJF的情况下,才会校验buyer_cert_no字段。
$buyer_real_namestring买家真实姓名。
说明:
当scene=ZJCZTJF的情况下,才会校验buyer_real_name字段。
$scenestring收单场景。如需使用该字段,需向支付宝申请开通,否则传入无效。
$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表示虚拟类商品
如果不传,默认为实物类商品。
$app_paystringapp_pay=Y:尝试唤起支付宝客户端进行支付,若用户未安装支付宝,则继续使用wap收银台进行支付。商户若为APP,则需在APP的webview中增加alipays协议处理逻辑。
$promo_paramsstring商户与支付宝约定的营销参数,为Key:Value键值对,如需使用,请联系支付宝技术人员。
$extend_paramsstring业务扩展参数
参数格式:参数名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_typestring证件类型
填充的证件号对应的证件类型,目前支持:IDENTITY_CARD(身份证)
$namestring证件姓名
$cert_nostring证件号

$need_check_infostring是否要进行实名制校验: l T需要 l F不需要(默认不需要)

有密退款请求参数

类名:\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\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