1. 用户静默授权获取user_id
1). 看支付宝的文档,有接口:alipay.user.info.auth, 然后根据文档进行对接,对接方式未服务端对接口进行访问,然鹅,一直给我返回302的错误,思考了下,发现用户授权不管怎么说都不应该在服务端进行操作,而是跳转页面。换种思维,把这个接口的参数转换成链接返回,然后通过GET方式做跳转,发现还是不行,脑壳疼。再思考下,这接口的链接域名都是为服务端API服务的,我拿来在浏览器里面访问,能成功就见鬼了...
2). 上面的方案不行,就去找支付宝的网页端授权,找到了这种格式:https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL,文档里面说redirect_uri需要与应用后台配置一样,实际上不需要的,写啥都行。scope=auth_base为静默授权,auth_user为用户确认。在redirect_uri里面,拿到参数里面的token信息,再通过获取用户信息的接口(alipay.system.oauth.token),获取user_id.
2. 创建卡包模板和发放卡券接口
1).**文档里面的的参数,看起来是json格式,但是如果用PHP的话,默认的json_encode,会对数据进行urlencode处理,所以中文会进行unicode编码,但是,支付宝在进行数据处理时,实际是不能进行unicode操作的,签名和参数校验都如此.最好的方式就是按照示例,安安静静的拼json格式字符串
2).**bizContent的参数数据格式都是“字符串”,如果你给的数据自己这边定义的是数字,放入字符串时,请转成字符串【json对象里面用引号引起来】,否则报系统错误,你会N脸懵逼的【支付宝那边应该把所有自定义参数都当成字符串格式了,java强类型对类型不匹配会直接返回错误】。
3). 发券成功后,返回值的partId,使用发券接口支付宝返回的该参数,不要自己乱造参数返回。
网友评论