越写越觉得支付类的文档写这么细,会不会反而让大家觉得很复杂呀?其实都是同样的调用方式

这一篇,将把支付宝剩下的扫码支付与条码支付全部写清楚。

Payment 3.0 支付宝的配置设置文档请 点击这里

项目GitHub地址https://github.com/helei112g/payment

支付宝的当面付,包括扫码支付与条码支付。

  • 扫码支付,是消费者用手机去扫商家生成的二维码。个人觉得也可以将这个功能用在pc支付上。取代即时到账接口。
  • 条码支付,商家用扫码枪读取用户支付宝上的条码。对应微信的刷卡支付。该项广泛用在超市结账时。
参数 类型 是否必须 说明
body boolean 商品描述
subject string 商品名称,该参数最长为128个汉字
order_no string 商户网站唯一订单号
timeout_express string 设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。
amount float 该笔订单的资金总额,单位为RMB-Yuan
store_id string 商户门店编号
operator_id string 商户操作员编号
terminal_id string 商户机具终端编号
alipay_store_id string 支付宝店铺的门店ID
scene string 条码支付时,必须设置
auth_code string 条码支付时,必须设置

body 主要是对商品的描述,根据自己的业务写就好,不过不要用一些非常特殊的字符,支付宝可能会进行一些处理,导致你的结果与预期不一样

subject 可以写一下商品名称信息,主要是方便支付宝后台对账时查看

order_no 自己生成的订单号,每次下单的单号必须唯一。也就是说:同一个 order_no 他的其他下单数据不能发生变化,价格、名称等等。如果有变化,需要重新生成一个订单号。

timeout_express 订单过期时间,很简单,你希望在那一刻过期,就写那个点的时间戳。只会精确到分钟

amount 订单的金额,就是用户实际需要支付的金额。

store_id 门店编号,这部分数据主要是支付宝为了将业务深化到线下而提供的,如果用不到,不设置就好。

operator_id 商户操作员编号,可以不设置。

terminal_id 商户机具终端编号,可以不设置。

alipay_store_id 支付宝店铺的门店ID,没有的话,也可以不设置。

scene 条码支付,必须设置该选项,条码支付,取值:bar_code 声波支付,取值:wave_code

auth_code 条码支付必须设置。

在上面的参数中,除了特别说明的,其它部分,扫码支付与条码支付都需要。

代码调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use Payment\Common\PayException;
use Payment\Client\Charge;

$config = require_once('./aliconfig.php');// 支付宝的配置信息


$channel = 'ali_qr';// ali_bar
$payData = [
'body' => '一个苹果',
'subject' => '牛逼公司--付款吧',
'order_no' => 'NB12312355',
'timeout_express' => '1489241888',
'amount' => '100',
'return_param' => 'buy some',
'goods_type' => 1,// 默认值为1,因此也可以省略
'store_id' => '',// 没有就不设置
];

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

echo htmlspecialchars($str);

如果使用的扫码支付, $channel = 'ali_qr'

则返回一个url。大家可以通过将返回的字符串生成一个二维码。即可进行扫码支付。

另外请记得,如果使用的沙箱请使用对应的沙箱支付宝来扫码。关于沙箱的介绍。看这里

如果使用的条码支付, $channel = 'ali_bar'

必须设置以下两个字段

  • scene 支付场景 条码支付,取值:bar_code 声波支付,取值:wave_code
  • auth_code 支付授权码,也就是用户手机条码对应的值。

这个接口测试时,大家可以手动把条码的值,输入进去

ok!支付宝支付类的接口基本就讲完了。接下来将开始讲解微信支付的接口。使用起来都一样,不一样的仅仅是参数部分。还是安排将微信支付的配置开一篇单独的文章进行讲解。