为了简单快速的接入,在申请支付宝商户后,我们可通过沙箱应用进行测试

准备证书

首先登录支付宝开放平台沙箱环境:开放平台-沙箱环境

RSA2(SHA256)密钥 设置中的加签模式选择 公钥证书,然后访问 开放平台文档中心 - 签名专区 - 工具 下载对应操作系统的 支付宝开放平台开发助手

打开 支付宝开放平台开发助手 后,直接点击左下角 获取 CSR 文件:【你没看错,就是 PKCS8

支付宝公钥 支付宝公钥证书是什么_支付宝


沙箱环境必须在“组织/公司”一栏处填写“沙箱环境”,其它信息可随意,域名参考即可。

如果需要可填写自身用于调试的域名,可填写根域名如 example.com,或二级域名 api.example.com

点击下方打开文件位置,可以看到如下三个文件:

xxx.alipay.com.csr
xxx.alipay.com_公钥.txt
xxx.alipay.com_私钥.txt
正式环境中私钥非常重要,请妥善保存

回到网页,上传已生成的 CSR 文件:

支付宝公钥 支付宝公钥证书是什么_公钥证书_02


接着下载页面上的三个文件:

支付宝公钥 支付宝公钥证书是什么_支付宝_03


记得下载安装下方沙箱版钱包,用于调试沙箱环境支付【仅支持 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();