PHP使用支付宝官方SDK和phpqrcpde类库生成即时到账付款二维码

2023-05-30 21:31:57 php
开通支付宝网站支付功能的基本流程是:商家网站生成一个订单,然后向支付宝网关发送请求并跳转。支付宝收到款项成功后,通知商家更新订单状态,执行业务处理。
上述过程的不便之处在于,用户点击付款后会跳出商户自网站,流程多操作相对繁琐,因此在网站上直接完成订单支付也越来越受欢迎。
通常情况下,首选在站内生成支付二维码,以快速收款。
本文介绍使用PHPCMS+phpqrcode类库+支付宝SDK生成一个即时到账付款二维码实现方式,代码如下:

require_once(PHPCMS_PATH. 'alipay/config.php'); // 配置文件
require_once(PHPCMS_PATH. 'alipay/aop/SignData.php');
require_once(PHPCMS_PATH. 'alipay/aop/AopClient.php');
require_once(PHPCMS_PATH. 'alipay/aop/request/AlipayTradePrecreateRequest.php');

$aop = new AopClient();
$aop->appId = $config['app_id'];  // 应用唯一ID
$aop->gatewayUrl = $config['gatewayUrl'];//支付宝网关
$aop->rsaPrivateKey = $config['merchant_private_key']; // 应用私钥
$aop->alipayrsaPublicKey = $config['alipay_public_key']; // 支付宝公钥
$aop->signType = "RSA2";
$aop->format   = "json";
$aop->charset  = "UTF-8";
$aop->debugInfo = true;
$request = new AlipayTradePrecreateRequest();

$arr['body']                = '这是笔记部落测试订单';//商品描述(可空)
$arr['subject']             = '笔记部落测试订单';
$arr['out_trade_no']        = time();//订单号(这里用时间戳模拟订单号)
$arr['timeout_express']     = '1d'; // 订单过期时间(1d=24小时、1m=1分钟、1h=1小时等等)
$arr['total_amount']        = floatval(0.01);//订单金额

$json = json_encode($arr);

$request->setNotifyUrl($config['notify_url']); // 异步回调地址
$request->setBizContent($json);
$result = $aop->execute($request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;


if(!empty($resultCode) && $resultCode == '10000') {
  $resp = (array)$result->$responseNode;
  $url = $resp['qr_code']; //会生成类似这样二维码链接:https://qr.alipay.com/bax8gtfu4smtmy0568
  pc_base::load_sys_class('phpqrcode','',0);//引入qrcode类库
  $qrcode = new QRcode();//实例化一个QRcode类实例
  $qrcode->png($url);//将生成的付款二维码通过qrcode类的png方法生成一张图片并在浏览器输出
}
else {
  return false;
}