最近在做个车辆认证app,需要用到支付宝付款.前端使用H5,框架是react,后台是java。app支付与普通网页支付差别还是很大,我这里主要对于app支付做说明
“`
1.让财务开通支付宝账号(需要企业税号,营业执照,财务身份证,等信息)
2.开通之后由于一直麻烦财务操作不方便,让财务登录支付宝账号后,将企业账号设置成主账号,将自己的支付宝账号设置为绑定企业的子账号的开发管理员,方便后续操作
3.创建app应用,该过程需要阿里审核,说是3天,我当时2小时就通过了。
4.通过软件生成公钥,私钥,创建app应用的时候会有appid
5.导入支付宝jar,编写后台代码,将加密后的一大串字符串返回给前端,前端用codva的支付宝插件,直接拼接这个字符串就可以调用支付宝了
6.支付宝上配置回调接口.
大致这么操作下面具体说明
###1.申请支付宝账号后[登陆](https://open.alipay.com/platform/home.htm)
![image.png](http://upload-images.jianshu.io/upload_images/5548226-1e8cbc9f9cbc4125.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
###2.[如何设置开发者管理员](https://docs.open.alipay.com/200/ug05sr/)
![image.png](http://upload-images.jianshu.io/upload_images/5548226-d06240ca5a1ccb1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](http://upload-images.jianshu.io/upload_images/5548226-2dab50979d398936.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](http://upload-images.jianshu.io/upload_images/5548226-75fb5da4037958a3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](http://upload-images.jianshu.io/upload_images/5548226-6ec76bd238d7c737.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3.然后点击页面上的开发者中心,选中自己的
![image.png](http://upload-images.jianshu.io/upload_images/5548226-39d2a34fdb5e3221.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](http://upload-images.jianshu.io/upload_images/5548226-b20c77e34a96a97e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
4.进入之后查看app支付是否开通
![image.png](http://upload-images.jianshu.io/upload_images/5548226-f7698197001bd16f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
如果要开通app应用支付请点击支付接入
![image.png](http://upload-images.jianshu.io/upload_images/5548226-3ab6955cbf222fbf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](http://upload-images.jianshu.io/upload_images/5548226-d1f3353143e58317.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####支付宝网关是固定的,如果是沙箱环境就改成https://openapidev.alipay.com/gateway.do
![image.png](http://upload-images.jianshu.io/upload_images/5548226-f4d1fdc815efa6ac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
###如何生成私钥公钥,请[点击]( http://vodcdn.video.taobao.com/oss/taobao-ugc/63dcb8b1980147608d501cd38aa42b1c/1494311046/video.mp4)
5.[java后端代码编写](https://docs.open.alipay.com/54/106370/),当前端调用后端接口后将后台的订单以及支付宝生成的url传到前端,前端需要这个url调用支付宝接口
![image.png](http://upload-images.jianshu.io/upload_images/5548226-036ab978a45e7825.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##[我遇到的坑](https://docs.open.alipay.com/204/105465)
![image.png](http://upload-images.jianshu.io/upload_images/5548226-f8c3a143191a2358.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
我按照上面3步,自己解析了一下午,终于完成了,然后无意中发现支付宝一个sdk一句话就完成了,不过这个过程中把md5加密,[URLEncode编码](http://tool.chinaz.com/tools/urlencode.aspx),java基础练了下- -
public static void main(String[] args) {
//签名方式
String sign_type=”RSA2”;
//编码格式
String CHARSET=”utf-8”;
//正式环境支付宝网关,如果是沙箱环境需更改成https://openapi.alipaydev.com/gateway.do
String url=”https://openapi.alipay.com/gateway.do”;
//实例化客户端
AlipayClient alipayClient = new DefaultAlipayClient(url, APP_ID, APP_PRIVATE_KEY, “json”, CHARSET, ALIPAY_PUBLIC_KEY,sign_type);
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody(“我是测试数据”);
model.setSubject(“1”);
//请保证OutTradeNo值每次保证唯一
model.setOutTradeNo(“IQJZSRC1YMQB5HU”);
model.setTimeoutExpress(“30m”);
model.setTotalAmount(“0.01”);
model.setProductCode(“QUICK_MSECURITY_PAY”);
request.setBizModel(model);
request.setNotifyUrl(“你的回调地址”);
try {
//这里和普通的接口调用不同,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。
} catch (AlipayApiException e) {
e.printStackTrace();
}
}
“`
另外看过一些相关有用的支付宝连接供参考:app支付宝服务端demo
app支付客户端demo
异步回调通知
通知参数说明
关注我的公众号,都是满满的干货!