支付宝的文档我简直日了狗了。

  1. 按照支付宝的教程,生成商家公钥和密钥,地址:

https://doc.open.alipay.com/doc2/detail?treeId=53&articleId=103242&docType=1

2.下载demo文件。

按照自己代码的风格架构,稍作修改。注意文件的加载。

3.网关。注意文件的加载,例如我的网关代码是这样的。这里需要注意自己网站有没有安全策略,如果有的话,支付宝的请求可能会被拦截下来,需要把这个链接加上白名单,不做安全检查。

Yaf_Loader::import(APPLICATION_PATH . '/library/Alipay/AlipaySign.php');
Yaf_Loader::import(APPLICATION_PATH . '/library/Alipay/Gateway.php');
Yaf_Loader::import(APPLICATION_PATH . '/library/Alipay/Message.php');
Yaf_Loader::import(APPLICATION_PATH . '/library/Alipay/config.php');class AlipayController extends Yaf_Controller_Abstract {/*** 激活开发者网关** @return string*/public function gatewayAction() {Log::out('alipay_gateway', 'I', 'start');Yaf_Loader::import(APPLICATION_PATH . '/library/Alipay/config.php');$postData = $this->getRequest()->getPost();Log::out('alipay_gateway', 'I', json_encode($postData, JSON_UNESCAPED_UNICODE));if (empty ( $postData['sign'] ) || empty ( $postData['sign_type'] ) || empty ( $postData['biz_content'] ) || empty ( $postData['service'] ) || empty ( $postData['charset'] )) {echo "some parameter is empty.";Log::out('alipay_gateway', 'I', 'some parameter is empty.');exit ();}$as = new AlipaySign ();$sign_verify = $as->rsaCheckV2 ( $postData, $config ['alipay_public_key_file'] );if (! $sign_verify) {// 如果验证网关时,请求参数签名失败,则按照标准格式返回,方便在服务窗后台查看。if ($postData[ "service" ] == "alipay.service.check") {$gw = new Gateway ();$gw->verifygw ( false );Log::out('alipay_gateway', 'I', 'alipay.service.check.');} else {Log::out('alipay_gateway', 'I', 'sign verfiy fail.');}Log::out('alipay_gateway', 'E', 'exit.');exit ();}// 验证网关请求if ($postData[ "service" ] == "alipay.service.check") {Log::out('alipay_gateway', 'service', 'alipay.service.check');$gw = new Gateway ();$gw->verifygw ( true , $postData[ "biz_content" ]);} else if ($postData[ "service" ] == "alipay.mobile.public.message.notify") {// 处理收到的消息$msg = new Message ( $biz_content );}Log::out('alipay_gateway', 'I', json_encode($result, JSON_UNESCAPED_UNICODE));return false;}}

例如这是我的网关,注意日志的记录,可以分析哪里出现了问题。

4.上传公钥

https://b.alipay.com/order/pidAndKey.htm

到这个地址,找到开放平台密钥管理  ,上传自己的公钥,支付宝会给你支付宝公钥。

那一串公钥 我也不知道怎么变成pem格式。按照  64 64 64 24 个字符的顺序 ,我自己分了四行保存下来了。格式是这样的,前面后面的东西要加上,后缀为.pem。

—–BEGIN PUBLIC KEY—–

XXXX

XXXX

XXXX

XXXX

—–END PUBLIC KEY—–


现在demo的文件夹里有三个钥了,分别为商家公钥,商家私钥,支付宝公钥。

注意,文件不要去除空格,换行,和头尾的字符,就是不要修改。

5.激活

https://openhome.alipay.com/platform/appDetail.htm

到这个地址填写支付宝公钥,和自己网关的地址,注意支付宝公钥不要首尾字符和换行空格等。


然后就激活成功了,虽然写起来就这么几步,实际上用了一天半才搞好啊,支付宝的技术客服,都乱指挥,哎,他们感觉不怎么懂啊。当然自己实在不知道哪里有问题了,去问问也是挺好的。

https://b.alipay.com/order/techService.htm?src=nsf05

这个地址进去,右侧有客服,点击找他们聊天吧

转载于:https://blog.51cto.com/jinchen/1730546