支付宝生活号开发中所遇到的困难及解决记录

ヾ(๑╹◡╹)ノ"
写一篇文档记录下自己在支付宝生活号开发上遇到的一些困难。
作为一个第一次接触到支付宝生活号的小萌新,一开始是有点茫然无措的,啥都不懂怎么办呢?
当你是第一次开发生活号时,首先应该去网上了解生活号开发的一些 流程,以及如何去配置生活号。
提供支付宝生活号Demo的下载地址:https://docs.open.alipay.com/54/104507/
第一步:了解生活号
首先申请生活号。这个因为是其他人申请所以大家可以浏览下其他人的介绍
配置生活号,我们需要关注的几个点如下
支付宝生活号开发中所遇到的困难及解决记录
①支付宝网关:这个是标准配置 即https://openapi.alipay.com/gateway.do
②应用网关:用来接收支付宝的异步传递的信息根据自己的需求进行配置
③授权回调地址:用来接收支付宝授权操作的回调地址也根据自己的需求进行配置
④加密方式:支付宝是有RSA2和RSA两种加密方式,官方推荐的是RSA2加密,这个通过支付宝提供的**生成工具进行生成下载链接:https://docs.open.alipay.com/291/105971
⑤接口内容加密方式:这个官方已经不推荐使用了,我也就没动过
以上是正常上线生活号的配置,支付宝还推出了一个“沙箱”帮助进行开发基本都和如上一致,除了“支付宝网关”不同,沙箱的网关是:https://openapi.alipaydev.com/gateway.do
基本配置完成之后,就要进行生活号开始的关键一步:“获取支付宝授权”(在这个坑上困了我好久,有时候看官方文档也是模糊不清,后来才慢慢搞懂)
支付宝授权是通过访问支付宝提供的URL得到:如下是官方提供的示例
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL
对其中关键词介绍下
①app_id:支付宝会对每一个应用提供一个APPID,可以在自己的应用里进行查看
②scope:scope是用来判断你需要获取用户什么信息。目前只支持auth_user和auth_base两个值
③redirect_uri:这个和上面配置的"授权回调地址一致"一定要一致不然会报错。
OK 现在访问的URL 也搞定那该怎么测试呢?(恕我愚钝,一开始我看到这些我都不知道怎么测试)
你可以直接在浏览器内输入进行访问,即可看到效果!
通过这个URL我们可以得到的响应参数如下
appid,source,scope,auth_code(主要是这个啦!获取用户的信息就是通过auth_code得到auth_token通过access_token获取userid以及其他的用户信息)
当响应成功后支付宝会访问你设置的回调地址,就会在request域中获取到这些参数。
接下来我们就通过auth_code进行获取auth_token,参考官方文档如下
https://docs.open.alipay.com/api_9/alipay.system.oauth.token
基本可以使用他提供的程序,但有些地方稍作修改我贴上我的代码如下:

			AlipayClient alipayClient = new DefaultAlipayClient(AlipayUtil.ALIPAY_GATEWAY, 
					AlipayUtil.APP_ID, 
					AlipayUtil.PRIVATE_KEY, 
					AlipayUtil.FORMAT,
					AlipayUtil.CHARSET,
					AlipayUtil.ALIPAY_PUBLIC_KEY,
					AlipayUtil.SIGN_TYPE);
			AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
			request.setCode(authCode);
			request.setGrantType(AlipayUtil.GRANT_TYPE);
			try {
			    AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);

调用成功后就可以用方法:oauthTokenResponse.getAccessToken()读取到AccessToken

OK,接下来也是重要的一步 用access_token换取用户的信息,参考的官方文档如下
https://docs.open.alipay.com/api_2/alipay.user.info.share
这个是真的根据文档里的示例代码就ok了之后就可以成功获取用户的一些基本信息如:
支付宝生活号开发中所遇到的困难及解决记录
简单介绍下沙箱吧:沙箱是支付宝提供的一个模拟开发的一个容器吧。帮助你开发用的。比如开发到“支付”等功能用线上的应用不好搞定,比较麻烦,沙箱提供你一个用户账户和商户账户让你更轻便的开发。
支付宝生活号开发中所遇到的困难及解决记录
哈哈 ,刚看到这个余额的时候还是觉得蛮有意思的。

到此为止生活的授权以及用户信息获取的功能就已经搞定了。之后还会有支付功能等的实现我也会在我之后的开发过程更新到这里那就撒有哪啦~

10.16接着更
在简单接触过支付宝的支付功能后, 我也来此记录下,其实到目前为止,我觉得最困扰我的不是写代码而是去找支付宝对应的接口,因为第一次接触的缘故,网上的资料也有限,很难准确地找到需要的接口,也是一点点尝试才慢慢了解。哎,而且走了好多错路(;´д`)ゞ
OK第一个介绍的是网页上调用支付宝支付的接口(alipay.trade.page.pay)官方文档在下面↓
https://docs.open.alipay.com/270/alipay.trade.page.pay/
必填的请求参数不多只有4个因为作为测试使用我填写的也就这几个
①Out_trade_no:商品的唯一订单号
②Product_code:销售产品码,目前唯一的值只有FAST_INSTANT_TRADE_PAY
③Total_amount:商品总价
④Subject:订单标题
具体执行的代码大家可以直接参考官方文档里的Java代码。
支付宝生活号开发中所遇到的困难及解决记录
唯一需要注意的地方就是下面这几句代码
支付宝生活号开发中所遇到的困难及解决记录
只有写了这几句才能弹出支付宝支付的界面不然就是白茫茫的网页。
然后简单看下效果
这个是如果你在网页里登录了支付宝账号的效果↓
支付宝生活号开发中所遇到的困难及解决记录
这个是你没有在网页登陆过支付宝的效果↓
支付宝生活号开发中所遇到的困难及解决记录
但是如果你的生活号没有该权限的话就会出现下面这个页面
支付宝生活号开发中所遇到的困难及解决记录

然后接下来介绍下手机端调用支付宝支付的方式的其中之一接口是:alipay.trade.wap.pay(手机网站支付接口2.0)
https://docs.open.alipay.com/api_1/alipay.trade.wap.pay
↑↑↑官方文档在此
参数也是如下几个
①Subject:商品的标题
②Out_trade_no:商品的单号
③Total_amount:总价
④Seller_id:卖家的userid
⑤Quit_url: 用户付款中途退出返回商户网站的地址
⑥Product_code:销售产品码目前只有QUICK_WAP_WAY
调用接口的方法官方文档也是很详细了我也就不贴了只是提醒下官方文档少了几句代码可能会影响效果,补充上就可以了

httpResponse.setContentType("text/html;charset=" + CHARSET);
    httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
    httpResponse.getWriter().flush();
httpResponse.getWriter().close();

出现的效果界面如下 ↓
支付宝生活号开发中所遇到的困难及解决记录

我相信大家在操作一段时间之后也就慢慢了解了支付宝接口的相似之处也会更好更快地去掌握其他接口
退款接口:alipay.trade.refund(统一收单交易退款接口) 官方文档↓↓
https://docs.open.alipay.com/api_1/alipay.trade.refund
这个就比较简单啦!必选的请求参数也比较少只有2个
①Out_trade_no/trade_no:交易的订单号,官方文档中介绍只要其一即可
②Refund_amount:退款金额不能大于花费金额
今天就更新到这啦。如果有什么不懂的,我看到也会尽可能地回复大家!不过我也还只是一枚萌新ヾ(◍°∇°◍)ノ゙