支付宝从新版本开始,提供了沙箱方式,方便进行调试。但是,即时到账支付宝没有提供沙箱模式。因此大家在使用过程中,注意设置配置。

我在项目中提供的初始配置也不能用于测试 即时到账接口。

即时到账属于老版本接口。不支持 RSA2 的签名方式,请设置为 RSA 签名方式。

即时到账 主要应用于网站支付。当前也可使用支付宝提供的当面付–扫码支付来完成网站支付的业务。

即时到账接口属于支付宝老版本接口,当前 Payment 依然将其进行了保留。后期会跟随支付宝公告进行调整。 即时到账的权限需要在支付宝商家平台进行签约。

签约地址: https://b.alipay.com/order/productDetail.htm?productId=2015110218012942

即时到账签约后,默认开通以下两个接口的权限: - 即时到账交易接口(create_direct_pay_by_user) - 即时到账批量退款有密接口(refund_fastpay_by_platform_pwd)

但是 Payment3.x 并未接入 即时到账批量退款有密接口。大家可以通过 新版退款接口发起退款操作。 退款操作文档,可点击这里(TODO)

先上 即时到账发起支付 需要的参数列表

参数

类型

是否必须

说明

body

boolean


商品描述

subject

string


商品名称,该参数最长为128个汉字

order_no

string


商户网站唯一订单号

timeout_express

string


设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。

amount

float


该笔订单的资金总额,单位为RMB-Yuan

return_param

string


公用回传参数

qr_mod

string


扫码支付方式

paymethod

string


默认支付方式

body
subject
order_no
timeout_express
amount
return_param
qr_mod
paymethod

ok,以上就是需要发起支付的全部参数了。具体到 sdk 如何调用。看代码

use Payment\Common\PayException;
use Payment\Client\Charge;

$config = require_once('./aliconfig.php');// 这里我假设大家都已经配置好了。不会的请去看配置设置文档


$channel = 'ali_web';
$payData = [
    'body' => '一个苹果',
    'subject' => '牛逼公司--付款吧',
    'order_no' => 'NB12312355',
    'timeout_express' => '1489241888',
    'amount' => '100',
    'return_param' => 'buy some',
    //'qr_mod' => '',  // 这个参数建议默认就好,不设置
    'paymethod' => 'creditPay',
];

try {
    $payUrl = Charge::run($channel, $config, $payData);
} catch (PayException $e) {
    // 异常处理
    exit;
}

echo htmlspecialchars($payUrl);

返回值 $payUrl 是跳转向支付宝支付的一个连接。访问该连接即可跳转到支付宝。

即时到账的代码就全部完成了。

接下来说下重点,请仔细往下看。

这里需要注意的一个点: htmlspecialchars() 函数在正式环境上,如果时进行url的跳转操作,请不要用它进行转义。我这里使用它是为了方便输出到页面上。因为 &not 是一个特殊符号,如果不转移,在网页上无法正常显示。

Payment 的设计思路是将配置文件与下单数据进行了分离。配置文件一般来讲是静态的,不会经常变更,并且大家都会用到。而下单的订单数据则不同,每一个支付接口需要的下单数据不同,并且根据业务,其对应的值也不稳定,常常发生变化。

其次,还有一个 $channel 参数,这个简单来讲,就是用来标记,你现在想要使用那种接口。可以取的参数如下:

channel可取值

名称

含义

ali_web

即时到账

ali_app

app支付(移动支付)

ali_wap

H5支付(手机网站支付、wap支付)

ali_qr

当面付中的扫码支付

ali_bar

当面付中的条码支付