WordPress 接入支付宝登录
搞了半天才发现微信开放平台不让个人号申请接入,因此我转战阿里系平台,花了一天时间接入了支付宝用户 oauth 接口。
支付宝开放平台的文档写的很详细,但仍有一些细节不到位,若开发者没什么基础,接入会比较困难。
其实支付宝开放平台提供了许多已经写好的 SDK,但这 SDK 文档不详细,我懒得学,因此我自己写了一个脚本用以接入支付宝 oauth。
代码见此 gist,其中包含两个文件:RSA2.php
与 alipay.php
。
接入方法如下:
首先在支付宝开放平台申请一个网页应用,(选择自研服务 -> 网页 & 移动应用),申请成功后会获取一个 APPID,将这个 APPID 填入 alipay.php
文件开头的 define('Ali_APPID','');
当中。
支付宝接口的安全性体现在其每次发起请求必须附带一个签名(sign),验签通过即确保参数未被篡改,接下来我将粗略讲一下这个签名是怎么生成的。
首先在支付宝开放平台进入你的应用,选择应用信息,在开发信息栏目中可以看到一行 “接口加签方式”,点击进入。
作为普通开发者,这里选择加签模式为 “公钥”,加签模式为 “SHA256withRSA”,接下来可以用他提供的支付宝密钥生成器来生成一对密钥,然后把公钥复制进去保存设置即可。
接下来,将公钥字符和私钥字符按注释的方法填入 RSA2.php
文件,这就完成了密钥的配置。
至于加签的方式,支付宝开放平台的文档中以一句话带过,这里我写了一个函数用以实现加签过程:
function get_sign($args){
ksort($args);
$str_args = array();
foreach ($args as $key => $value){
array_push($str_args, $key. '='. $value);
}
$str_args = implode('&', $str_args);
$rsa2 = new Rsa2();
$sign = $rsa2->createSign($str_args);
return $sign;
}
这里参数在拼接的时候不需要进行 urlencode,但在后面拼接 URL 的时候,必须进行 urlencode,否则会请求失败。
接下来将文件上传服务器,在网站的根目录下创建一个 oauth 文件夹,将这两个文件都上传到 oauth 文件夹下即可。
最后在网站插入一个支付宝的 logo,点击跳转到 http(s)://域名/oauth/alipay.php?rurl
。至此,WordPress 已成功接入支付宝登录。