为了简单快速的接入,在申请支付宝商户后,我们可通过沙箱应用进行测试
准备证书
首先登录支付宝开放平台沙箱环境:开放平台-沙箱环境
在 RSA2(SHA256)密钥 设置中的加签模式选择 公钥证书,然后访问 开放平台文档中心 - 签名专区 - 工具 下载对应操作系统的 支付宝开放平台开发助手
打开 支付宝开放平台开发助手 后,直接点击左下角 获取 CSR 文件:【你没看错,就是 PKCS8】
沙箱环境必须在“组织/公司”一栏处填写“沙箱环境”,其它信息可随意,域名参考即可。
如果需要可填写自身用于调试的域名,可填写根域名如 example.com
,或二级域名 api.example.com
点击下方打开文件位置,可以看到如下三个文件:
xxx.alipay.com.csr
xxx.alipay.com_公钥.txt
xxx.alipay.com_私钥.txt
正式环境中私钥非常重要,请妥善保存
回到网页,上传已生成的 CSR 文件: 接着下载页面上的三个文件: 记得下载安装下方沙箱版钱包,用于调试沙箱环境支付【仅支持 Android】
编写代码
这里提供两种方式,一是直接接入官方 SDK,通过 require/include
加载;二是通过 Composer
包自动加载
官方 SDK
首先需在此下载官方 SDK:App支付服务端 DEMO & SDK
然后在 PHP 服务端 SDK 生成 APP 支付订单信息示例 中参考下单代码。
证书相关参数设置参考 JAVA 服务端 SDK 生成 APP 支付订单信息示例(证书)
Composer 包
推荐使用 omnipay-alipay,博主已提交代码支持公钥证书模式
使用方法非常简单:
// 创建基本网关
$gateway = Omnipay::create('Alipay_AopApp'); // App 支付
// 使用证书模式时必须设置签名类型为 RSA2
$gateway->setSignType('RSA2');
// 以下设置基本的 AppID、私钥、支付宝根证书、支付宝及 App 公钥证书等等
$gateway->setAppId('the_app_id');
$gateway->setPrivateKey('the_app_private_key');
// $gateway->setAlipayPublicKey('the_alipay_public_key'); // 【删除此行】证书模式无需设置支付宝公钥
$gateway->setAlipayRootCert('the_alipay_root_cert'); // 对应 alipayRootCert.crt 文件
$gateway->setAlipayPublicCert('the_alipay_public_cert'); // 对应 alipayCertPublicKey_RSA2.crt 文件
$gateway->setAppCert('the_app_public_cert'); // appCertPublicKey.crt
// 检查支付宝公钥证书【可忽略】
$gateway->setCheckAlipayPublicCert(true);
// 相关回调通知地址
$gateway->setReturnUrl('https://www.example.com/return');
$gateway->setNotifyUrl('https://www.example.com/notify');
至此基本的网关构建就完成了,最后对网关进行需要的操作就行了,例如创建订单:
/** @var AopTradeAppPayResponse $response */
$response = $gateway->purchase()->setBizContent([
// 请求内容参考支付宝文档
])->send();
// 获取订单字符串用以 App 支付
$orderStr = $response->getOrderString();