zlb820的gravatar头像
zlb820 2017-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简单的支付功能实现(一)

        》私钥:你自己生成的。


打赏
最近浏览
自行车没有爱  LV1 2022年11月11日
Llyynn 2022年4月16日
暂无贡献等级
qq1464455196 2021年11月14日
暂无贡献等级
asdqwedasdas  LV5 2021年8月23日
natism  LV9 2021年4月29日
QianMo888  LV2 2021年4月27日
Madocfun 2021年4月16日
暂无贡献等级
woxiang1002 2020年11月23日
暂无贡献等级
z84931842  LV2 2020年11月4日
sunpx3  LV2 2020年9月12日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友