easypay.network3/3

easypay.network3/3

package io.github.xiong_it.easypay.network;



import com.android.volley.AuthFailureError;

import com.android.volley.Request;

import com.android.volley.RequestQueue;

import com.android.volley.Response;

import com.android.volley.VolleyError;

import com.android.volley.toolbox.StringRequest;

import com.android.volley.toolbox.Volley;



import java.util.HashMap;

import java.util.Map;



import io.github.xiong_it.easypay.PayParams;



/**

* @author 注释者:王教成

* @version 注释版:1.0.0

* Volley网络请求封装

*/

public class VolleyClient implements NetworkClientInterf {

/**

    * 实现父类获取方法

    * @param payParams 支付参数

    * @param callBack 网络客户端接口中回调接口

    */

   @Override

   public void get(PayParams payParams, final CallBack callBack) {

RequestQueue queue = Volley.newRequestQueue(payParams.getActivity());//创建请求队列,支付参数获取活动为参数

       String baseUrl = payParams.getApiUrl();//支付参数获取API统一资源定位器

       StringBuffer sburl = new StringBuffer();//创建线程安全字符串变量

       sburl.append(baseUrl)//添加API统一资源定位器

               .append("?")

.append("pay_way=").append(payParams.getPayWay())//添加支付方式

               .append("&")

.append("price=").append(payParams.getGoodsPrice())//添加商品价格

               .append("&")

.append("goods_name=").append(payParams.getGoodsName())//添加商品名称

               .append("&")

.append("goods_introduction=").append(payParams.getGoodsIntroduction());//添加商品介绍

       StringRequest request = new StringRequest(Request.Method.GET, sburl.toString(),

               new Response.Listener<String>() {//创建监听器

                   @Override

                   public void onResponse(String response) {

callBack.onSuccess(response);//成功回调

                   }//实现响应回调方法

               },

               new Response.ErrorListener() {//创建错误监听器

                   @Override

                   public void onErrorResponse(VolleyError error) {

callBack.onFailure();//失败回调

                   }//实现错误响应回调方法

       });//创建请求字符串

       queue.add(request);//请求队列添加请求字符串

   }

/**

    * 实现父类邮寄方法

    * @param payParams 支付参数

    * @param callBack 网络客户端接口中回调接口

    */

   @Override

   public void post(final PayParams payParams, final CallBack callBack) {

RequestQueue queue = Volley.newRequestQueue(payParams.getActivity());//创建请求队列,支付参数获取活动为参数

       StringRequest request = new StringRequest(Request.Method.POST, payParams.getApiUrl(),

               new Response.Listener<String>() {//创建监听器

                   @Override

                   public void onResponse(String response) {

callBack.onSuccess(response);//成功回调

                   }//实现响应回调方法

               },

               new Response.ErrorListener() {//创建错误监听器

                   @Override

                   public void onErrorResponse(VolleyError error) {

callBack.onFailure();//失败回调

                   }//实现错误响应回调方法

       }) {

@Override

           protected Map<String, String> getParams() throws AuthFailureError {

Map<String, String> params = new HashMap<>();//创建参数字符串键值对HashMap

               params.put("pay_way", payParams.getPayWay().toString());//放入支付方式

               params.put("price", String.valueOf(payParams.getGoodsPrice()));//放入商品价格

               params.put("goods_name", payParams.getGoodsName());//放入商品名称

               params.put("goods_introduction", payParams.getGoodsIntroduction());//放入商品介绍

               return params;//返回参数字符串键值对HashMap

           }//实现Volley请求类的获取参数方法

       };//创建请求字符串

       queue.add(request);//请求队列添加请求字符串

   }

}

package io.github.xiong_it.easypay.network;



import io.github.xiong_it.easypay.PayParams;

import okhttp3.ResponseBody;

import retrofit2.Call;

import retrofit2.Callback;

import retrofit2.Response;

import retrofit2.Retrofit;



/**

* @author 注释者:王教成

* @version 注释版:1.0.0

* Retrofit2网络请求简单封装

*/

public class RetrofitClient implements NetworkClientInterf {

/**

    * 实现父类获取方法

    * @param payParams 支付参数

    * @param callBack 网络客户端接口中回调接口

    */

   @Override

   public void get(PayParams payParams, final CallBack callBack) {

Retrofit retrofit = new Retrofit.Builder()//创建Retrofit构建器

               .baseUrl(payParams.getApiUrl())//设置API统一资源定位器

               .build();//构建Retrofit

       PrePayInfoService service = retrofit.create(PrePayInfoService.class);//Retrofit对象创建预支付信息服务

       Call<ResponseBody> call = service.getPrePayInfo(//获取预支付信息

               payParams.getPayWay().toString(),//支付方式

               String.valueOf(payParams.getGoodsPrice()), payParams.getGoodsName(), payParams.getGoodsIntroduction());//商品价格、名称、介绍

       call.enqueue(new Callback<ResponseBody>() {//创建Retrofit中回调接口

           @Override

           public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

if (response.isSuccessful()) {//如果响应不成功

                   callBack.onSuccess(response.body().toString());//成功回调

               } else {

callBack.onFailure();//如果响应成功,失败回调

               }

}//实现响应方法

           @Override

           public void onFailure(Call<ResponseBody> call, Throwable t) {

callBack.onFailure();//失败回调

           }//实现失败回调方法

       });//预支付信息排队

   }

/**

    * 实现父类邮寄方法

    * @param payParams 支付参数

    * @param callBack 网络客户端接口中回调接口

    */

   @Override

   public void post(PayParams payParams, final CallBack callBack) {

Retrofit retrofit = new Retrofit.Builder()//创建Retrofit构建器

               .baseUrl(payParams.getApiUrl())//设置API统一资源定位器

               .build();//构建Retrofit

       PrePayInfoService service = retrofit.create(PrePayInfoService.class);//Retrofit对象创建预支付信息服务

       Call<ResponseBody> call = service.postPrePayInfo(//邮寄预支付信息

               payParams.getPayWay().toString(),//支付方式

               String.valueOf(payParams.getGoodsPrice()), payParams.getGoodsName(), payParams.getGoodsIntroduction());//商品价格、名称、介绍

       call.enqueue(new Callback<ResponseBody>() {//创建Retrofit中回调接口

           @Override

           public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

if (response.isSuccessful()) {//如果响应不成功

                   callBack.onSuccess(response.body().toString());//成功回调

               } else {

callBack.onFailure();//如果响应成功,失败回调

               }

}//实现响应方法

           @Override

           public void onFailure(Call<ResponseBody> call, Throwable t) {

callBack.onFailure();//失败回调

           }//实现失败回调方法

       });//支付信息排队

   }

}package io.github.xiong_it.easypay.network;



import java.io.IOException;



import io.github.xiong_it.easypay.PayParams;

import okhttp3.Call;

import okhttp3.Callback;

import okhttp3.FormBody;

import okhttp3.OkHttpClient;

import okhttp3.Request;

import okhttp3.RequestBody;

import okhttp3.Response;



/**

* @author 注释者:王教成

* @version 注释版:1.0.0

* OkHttp3网络请求简单封装

*/

public class OkHttpClientImpl implements NetworkClientInterf {

/**

    * 实现父类获取方法

    * @param payParams 支付参数

    * @param callBack 网络客户端接口中回调接口

    */

   @Override

   public void get(PayParams payParams, final CallBack callBack) {

String baseUrl = payParams.getApiUrl();//支付参数获取API统一资源定位器

       StringBuffer sburl = new StringBuffer();//创建线程安全字符串变量

       // TODO 与服务器开发人员协商接口形式,需要为微信、支付宝、银联等,预支付信息走一个接口,通过pay_way或者其他字段进行区分

       // 以下信息除商品详情介绍(goods_introduction)外,均为必须上传字段,key值与服务器人员协商自行定义

       sburl.append(baseUrl)//添加API统一资源定位器

               .append("?")

.append("pay_way=").append(payParams.getPayWay())//添加支付方式

               .append("&")

.append("price=").append(payParams.getGoodsPrice())//添加商品价格

               .append("&")

.append("goods_name=").append(payParams.getGoodsName())//添加商品名称

               .append("&")

.append("goods_introduction=").append(payParams.getGoodsIntroduction());//添加商品介绍

       OkHttpClient mOkHttpClient = new OkHttpClient();//创建OkHttpClient

       final Request request = new Request.Builder().url(sburl.toString()).build();//创建请求构建器,设置统一资源定位器,构建请求

       mOkHttpClient.newCall(request).enqueue(new Callback() {//创建回调接口

           @Override

           public void onFailure(Call call, IOException e) {

callBack.onFailure();//失败回调

           }//实现失败回调方法

           @Override

           public void onResponse(Call call, Response response) throws IOException {

if (response.isSuccessful()) {//如果响应成功

                   callBack.onSuccess(response.body().string());//成功回调

               } else {

callBack.onFailure();//如果响应失败,失败回调

               }

}//实现响应回调方法

       });//创建预支付信息排队

   }

/**

    * 实现父类邮寄方法

    * @param payParams 支付参数

    * @param callBack 网络客户端接口中回调接口

    */

   @Override

   public void post(PayParams payParams, final CallBack callBack) {

OkHttpClient mOkHttpClient = new OkHttpClient();//

       // TODO 与服务器开发人员协商接口形式,需要为、微信、支付宝、银联等,预支付信息走一个接口,通过pay_way或者其他字段进行区分

       // 以下信息除商品详情介绍(goods_introduction)外,均为必须上传字段,key值与服务器人员协商自行定义

       RequestBody body = new FormBody.Builder()//创建从体构建器

               .add("pay_way", payParams.getPayWay().toString())//添加支付方式

               .add("price", String.valueOf(payParams.getGoodsPrice()))//添加商品价格

               .add("goods_name", payParams.getGoodsName())//添加商品名称

               .add("goods_introduction", payParams.getGoodsIntroduction())//添加商品介绍

               .build();//构建请求体

       final Request request = new Request.Builder().url(payParams.getApiUrl()).post(body).build();//创建请求构建器,设置统一资源定位器,设置邮寄,构建请求

       mOkHttpClient.newCall(request).enqueue(new Callback() {//创建回调接口

           @Override

           public void onFailure(Call call, IOException e) {

callBack.onFailure();//失败回调

           }//实现失败回调方法

           @Override

           public void onResponse(Call call, Response response) throws IOException {

if (response.isSuccessful()) {//如果响应成功

                   callBack.onSuccess(response.body().string());//成功回调

               } else {

callBack.onFailure();//如果响应失败,失败回调

               }

}//实现响应回调方法

       });//创建预支付信息排队

   }

}

easypay.network3/3