支付宝服务窗接入常见问题说明

近日将一产品接入支付宝服务窗,接入过程遇到几点磕绊,记下也为后来者有所借鉴。支付宝服务窗无论界面到技术接入,同微信公众号相似度还是比较高的,做过公众号接入的,服务窗接入就是轻车熟路了。

接入前的准备工作:

1.申请开发资质.就是填写企业身份信息然后等待审核,这里不做赘述

2.生成服务窗应用的公钥,私钥。可以与app 支付共用一套证书。填写应用公钥时用一个应用公钥填写就可以了。证书生成过程还是比较简单的,要注意在支付宝后台填写的是公钥证书

常见问题:

一.与支付宝互相交换公钥

.地址:https://openhome.alipay.com/platform/keyManage.htm

2YLPQ6T%S0Y[WOZ@EPW]4HW

如上图所示,

“查看应用公钥” 即可填写自己应用的公钥.

“查看支付宝公钥” ,将支付宝公钥放到你的项目中。

二.需激活开发者模式

服务窗应用需激活开发者模式后 ,才可以使用。
2.1. 下载服务端sdk:https://fuwu.alipay.com/platform/doc.htm#c1101
部署至服务器。
修改config.php 里面的app_id , 替换对应的支付宝公钥证书,应用的公私钥(可以与app支付公用 的)。
2.2  激活网关  https://openhome.alipay.com/platform/appDetail.htm?tab=appSetting&appId=(你的应用id)

应用网关 那一栏,激活弹出如下对话框 。

96ZTY}N$~S7S%68O80Y@)14支付宝服务窗应用网关填写说明
应用网关 :demo里面的Gateway.php 的地址,部署的服务器需要外网可访问的。
应用公钥 (RSA):openssl 生成的公钥证书 (这里我用的是app支付的公钥证书)。
2.3 验证通过后,公众号的用户事件就可以发送到应用网关了。例如:订阅事件、消息事件等等.
注意:
1.在红色对话框里面填写的公钥要过滤:
1.—–BEGIN PUBLIC KEY—– , —–END PUBLIC KEY—–
2. 过滤掉 回车(0x0D,0x0A )、空格。
Gateway.php 响应的xml response_xml会读取本地公钥内容进行过滤,并把过滤内容放在响应的xml,biz_content节点发给支付宝。支付宝会用biz_content 与 网页填写的公钥进行签名比对。不相等就会返回错误 :填写的公钥 与服务器返回的不一致。
3.访客身份ID获取:

支付宝服务窗提供了2种方式获取用户信息:

1.用户访问授权页面,并且授权成功。

这种方式必须需要用户授权,可以获取更多的用户信息,例如包含加星的用户账号及加星的用户名。如果仅仅是想获取访客的身份ID,那么推荐使用第二种。

2.获取用户OpenId。 使用auth_code 可以获取到OpenId即为用户的永久标识ID。

2种方式本质上都是通过js 将访客跳转至支付宝一api,支付宝会对用户进行身份认证,通过后将用户认证信息(auth_code)的附加在url上跳转回到redirect_uri 定义的url上。获取到用户的auth_code后就可以进一步获取用户的OpenId或更多信息了。

需要说明的是,这2种方式都不能获取支付宝访客头像(咨询了技术客服得到的答案)。

参考文档:https://fuwu.alipay.com/platform/doc.htm#c0205

四.签名失败问题:

4.1 支付宝服务器向应用网关推送消息时,如果使用官方demo时,特别要注意网关回调url不要使用动态参数地址,例如http://xytong.cc/pay?type=alipay 这种格式是通不过签名验证的。原因是gateway.php 的验证函数传参有问题,见如下代码:

rsaCheckV2 ( $_REQUEST, $config ['ali_fwc_public_key_path'] );

参数验证本来验证post数据就可以了,如果回调url 有动态参数,就会把get参数也传入进行计算签名,结果当然是签名验证失败.官方这样写,有画蛇添足之嫌.

解决方法:

方法1.使用静态url  例如:http://xytong.cc/pay/alipay

方法2.修改官方demo代码,把$_REQUEST 修改为$_POST.

rsaCheckV2 ( $_POST, $config ['ali_fwc_public_key_path'] );

来源:http://xytong.cc/archives/52

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值