zlb820的gravatar头像
zlb8202017-04-26 18:36:09
Alipay之web简单的支付功能实现(一)

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 支付资格获取。

   > 根据所有的第三方的尿性,你需要申请成为开发者资格才可以。这个也一样。

   > 沙箱环境开发和正式环境开发没有区别,唯一区别在于:网关不同。

   > 去开发中心创建沙箱应用:这个跟着网页的步骤一步步建立就行,不会就百度。。。

 Alipay之web简单的支付功能实现(一)

第二步:看官方文档,根据文档进行

   Alipay之web简单的支付功能实现(一)

  > 使用这个接口,precreate

alipay.trade.precreate    免费    统一收单线下交易预创建

 >进去看。。。。。。其实仔细看下来,一步步写就可以。。。

我简单说下一个简单demo工程的创建过程:

1.在做项目之前,可以仔细看下这个官方文档,进入主页点击  -> 开发文档 -> 所有能力文档 即可。

Alipay之web简单的支付功能实现(一)

2.项目导包,Alipay有官方sdk使用。

  开发使用的包,可以从官方demo获取。比如:以下图片中的:

 

Alipay之web简单的支付功能实现(一)

 

 

 

 比如这个当面付支付方式,官方详细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

          》支付宝应用公钥:

Alipay之web简单的支付功能实现(一)

        》私钥:你自己生成的。


打赏
最近浏览
qq146445519611月14日
暂无贡献等级
asdqwedasdas LV58月23日
月亮星星
natism LV94月29日
月亮月亮星星
QianMo888 LV24月27日
星星星星
Madocfun4月16日
暂无贡献等级
woxiang10022020年11月23日
暂无贡献等级
z84931842 LV22020年11月4日
星星星星
sunpx3 LV22020年9月12日
星星星星
Mweili0162020年6月15日
暂无贡献等级
adminjiang LV72020年6月8日
月亮星星星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友