仿电商App:笔记(十一):购物车,订单,支付功能开发(包含支付宝支付)(二)

本文详细介绍了仿电商App购物车、订单及支付功能的开发过程,特别是如何集成支付宝支付。从逻辑梳理到具体实现,包括订单创建、支付工具封装、支付宝SDK的引入和支付回调处理,提供了清晰的步骤和代码实现。
摘要由CSDN通过智能技术生成

仿电商App:笔记(十一):购物车,订单,支付功能开发(包含支付宝支付)(二)

6、订单和支付逻辑梳理和创建

6.1 购物车初始化时候的总价值

6.2 订单和支付逻辑梳理

7、封装傻瓜式操作支付工具

7.1 引入支付宝开发的jar包

7.2 支付dialog的布局与弹出效果

7.3 设置dialog,与对应的window绑定

7.4 根Fragment中加入结算事件逻辑

7.5 效果图

8、支付宝接入和实现支付

8.1 支付宝服务器的请求入口

8.2 支付宝请求的具体逻辑实现

8.3 支付请求后的回调

逻辑梳理:

订单包含:用户id,订单id,描述,总之,类型等,通过post传递给自己服务器-->第三方服务器(认证)-->通知自己的服务器可以发起支付-->支付宝的sdk(将签名等信息传过去)-->返回响应值(支付宝规定的):支付状态:成功、失败、网络意外...

具体流程:在购物车根页面中:进行网络请求(自己的服务器,传入生成订单需要的参数)-->请求成功(省略了第三方认证环节,将第三方认证的orderId自己传入):调用支付宝支付平台,传入需要的信息(订单)-->进入FastPay中,进行异步的网络请求,调用客服端支付接口(使用AsyncTask)-->PayAsyncTask中,含有支付状态码,处理doInBackground():根据签名信息返回状态码,返回结果onPostExecute():对返回结果中的状态码进行判断,不同状态吗显示不同信息,具体接口方法实现在购物车根页面中。

6、订单和支付逻辑梳理和创建

6.1 购物车初始化时候的总价值

逻辑:从adapter中获取到总价数据,赋值到总价按钮的View上。

位于latte-ec模块main->cart包下的ShopCartDelegate。

主要作用:购物车页面的根fragment,初始化总价钱按钮。

public class ShopCartDelegate extends BottomItemDelegate implements ISuccess,ICartItemListener {
......
    private double mTotalPrice = 0.0;//初始化总价钱的数值
......
    @BindView(R2.id.tv_shop_cart_total_price)//总价按钮
    AppCompatTextView mTvTotalPrice = null;
......
    @Override
    public void onSuccess(String response) {
        final ArrayList<MultipleItemEntity> data =
                new ShopCartDataConverter()
                        .setJsonData(response)
                        .convert();
        mAdapter = new ShopCartAdapter(data);
        mAdapter.setCartItemListener(this);
        final LinearLayoutManager manager = new LinearLayoutManager(getContext());
        mRecyclerView.setLayoutManager(manager);
        mRecyclerView.setAdapter(mAdapter);//缓存到类中
**      mTotalPrice = mAdapter.getTotalPrice();
**      mTvTotalPrice.setText(String.valueOf(mTotalPrice));//初始化的时候直接更新数值
        checkItemCount();
    }

    @Override
    public void onItemClick(double itemTotalPrice) {
        final double price = mAdapter.getTotalPrice();
**      mTvTotalPrice.setText(String.valueOf(price));
    }
}

6.2 订单和支付逻辑梳理

订单和支付是两个不同的东西

订单:记录这次发起的行为:行为所标记的信息,支付成功、支付失败、支付意外等

支付:将钱给支付宝,支付宝管理

订单包含:用户id,订单id,描述,总之,类型等,通过post传递给自己服务器-->第三方服务器(认证)-->通知自己的服务器可以发起支付-->支付宝的sdk(将签名等信息传过去)-->返回响应值(支付宝规定的):支付状态:成功、失败、网络意外...

位于latte-ec模块main->cart包下的ShopCartDelegate。

主要作用:购物车页面的根fragment,创建订单。

public class ShopCartDelegate extends BottomItemDelegate implements ISuccess,ICartItemListener {
......
    @OnClick(R2.id.tv_shop_cart_pay)//结算按钮
    void onClickPay(){

    }

    //创建订单,注意:和支付是没有关系的
    private void createOrder(){
        final String orderUrl = "";
        final WeakHashMap<String,Object> orderParams = new WeakHashMap<>();//订单需要传入的参数
        orderParams.put("userid","");
        orderParams.put("amount",0.01);//总价
        orderParams.put("commit","测试支付");//描述
        orderParams.put("type",1);
        orderParams.put("ordertype",0);
        orderParams.put("isanonymous",true);
        orderParams.put("followeduser",0);
        RestClient.builder()//发起订单
                .url(orderUrl)//请求自己的服务器
                .loader(getContext())
                .params(orderParams)
                .success(new ISuccess() {
                    @Override
                    public void onSuccess(String response) {
                        //进行具体的支付
                    }
                })
                .build()
                .pos
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值