Alipay第三方支付接口:
在做支付功能之前,需要去蚂蚁金服开发者平台,对于Alipay做一个简单大体的了解。下面提供几个文档链接地址建议好好看看:
Alipay支付能力文档:即:Alipay可以做到的支付方式:
https://doc.open.alipay.com/docs/doc.htm?treeId=193&articleId=105304&docType=1
Alipay API文档,详细的介绍了其各种支付方式的详细的 请求参数,返回参数,必选和可选参数的说明:(需要仔细看):
https://doc.open.alipay.com/doc2/apiList?docType=4
Alipay集成demo测试:(我的习惯是,在做任何一个功能之前首先做一个极简的demo,测试成功后再集成到正式项目)。
这里使用Alipay沙箱环境:
第一步:Alipay 支付资格获取。
> 根据所有的第三方的尿性,你需要申请成为开发者资格才可以。这个也一样。
> 沙箱环境开发和正式环境开发没有区别,唯一区别在于:网关不同。
> 去开发中心创建沙箱应用:这个跟着网页的步骤一步步建立就行,不会就百度。。。
第二步:看官方文档,根据文档进行
> 使用这个接口,precreate
alipay.trade.precreate 免费 统一收单线下交易预创建
>进去看。。。。。。其实仔细看下来,一步步写就可以。。。
我简单说下一个简单demo工程的创建过程:
1.在做项目之前,可以仔细看下这个官方文档,进入主页点击 -> 开发文档 -> 所有能力文档 即可。
2.项目导包,Alipay有官方sdk使用。 开发使用的包,可以从官方demo获取。比如:以下图片中的:
|
|
比如这个当面付支付方式,官方详细demo,很不错。主要的包就三个,还有些commons依赖包,一股脑儿copy进去即可。当面付下回写。
3.编码
直接复制官方代码,哈哈哈哈哈。。。。。就是这么懒,需要说明的是 ,这个测试demo和当面付的demo不同,当面付其实是对这个最基本demo的封装,当面付详细分析,源码查看下回一并说:
这是我写的servlet:红字每一句都很重要,首先是创建一个AlipayClient,每个参数都是必选,根据API文档自己看。。。。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//需要注意的是 这里的正式网关"https://openapi.alipay.com/gateway.do",必须换成沙箱的测试网关 https://openapi.alipaydev.com/gateway.do
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //获得初始化的AlipayClient
AlipayTradePrecreateRequest alipayRequest = new AlipayTradePrecreateRequest();//创建API对应的request类
alipayRequest.setBizContent("{" +
" \"out_trade_no\":\"20150320010101005\"," +
" \"total_amount\":\"88.88\"," +
" \"subject\":\"Iphone6 16G\"," +
" \"store_id\":\"NJ_001\"," +
" \"timeout_express\":\"90m\"}");//设置业务参数
AlipayTradePrecreateResponse alipayResponse;
try {
alipayResponse = alipayClient.execute(alipayRequest);
//System.out.print(alipayResponse.getBody());
System.out.println(alipayResponse.getMsg());
System.out.println("二维码串 = "+alipayResponse.getQrCode());
} catch (AlipayApiException e) {
e.printStackTrace();
}
}
tip: alipayRequest.setBizContent ---》这个设置可能有些疑惑,仔细看来,全都是API里的参数,是我们的项目向Alipay提交的参数。
比如:\"out_trade_no\":\"20150320010101005\" --》是我们提交的 订单号(是你网站的订单号,要求唯一),
》 看看这个参数吧 :
biz_content String --》 请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档
4.写个jsp ,一个按钮就行 ,请求servlet 即可,会看到console打印出 :
System.out.println(alipayResponse.getMsg()); ---》网关返回码 ,详细的看文档去吧。。。
System.out.println("二维码串 = "+alipayResponse.getQrCode());--》二维码哟,。。。。可以用来扫码支付的哟
问题:1.运行过程中,必须联网才可以。是支付宝支付,和正常付款没多大区别。
2.APPID 和 private_key 必须填写正确。
3.有几个参数需要注意 :AliPayClient的参数都是沙箱的参数。
》网关:沙箱测试网关-->https://openapi.alipaydev.com/gateway.do
》支付宝应用公钥:
》私钥:你自己生成的。
