2016-08-18 18:59:21 beibaokongming 阅读数 1847
  • 自己开发一套微信支付接口(SDK)-微信开发15(PHP)

    会员免费看,http://edu.csdn.net/lecturer/842 边栏可办理会员卡。自己开发一套微信支付接口(SDK)是子恒老师《子恒说微信开发》视频教程的第15部。详细讲解了用php开发一套自己的微信支付接口。内容包含微信支付开发思路,基础类开发,微信支付接口应用,公众号发红包,企业付款等等。欢迎反馈,微信号:QQ68183131

    5395 人正在学习 去看看 秦子恒
微信支付开发步骤:

首先去申请开通微信支付功能(亦可从网上找到申请开通的方法),这里不详细讲解了,自行百度或者按照微信提示操作,主要讲解接入过程。注册微信,主要的是得到app id和key。下面进入详细接入流程;

1.到微信商户平台,下载安卓支付的Demo
 下载地址:https://pay.weixin.qq.com

2.将下载的demo的libs文件夹下的 libammsdk.jar包,拷贝到自己项目中的libs文件夹下(见下图)

3.在项目上右键,点击properties
4.添加jar包路径(见下图)
 
5.点击上图中的add jars按钮,之后,在弹出的对话框中,找到自己的项目中的libs文件夹下的libammsdk.jar文件,选中双击。 
6. 点击Order and Export按钮,勾选libammsdk.jar包,然后点击ok;(见下图)
 
7.
创建一个类继承自Application,在入口处注册微信api(在onCreate方法中写入以下代码)
 
api = WXAPIFactory.createWXAPI(this, Constants.WXAPPID, true); 
api.registerApp(Constants.WXAPPID); //Constants.WXAPPID为微信开放平台注册得到的appID

8.在需要调用微信支付的地方activity里面,发送订单号和金额给你们自己的后台接口,后台根据订单号和金额去微信生成预支付订单,返回json给你,拿到json进行解析。注意:解析的时候只需要解析以下几个数据就可以了,其他不用解析(特别注意:json返回的sign签名不能使用,最后发起支付请求的sign,是你自己对要请求的参数的签名,下面会给出详情步骤)在需要调用微信支付的地方写入以下代码:
 8.1
// api声明称全局变量
 
                api = WXAPIFactory.createWXAPI(getApplicationContext(),Constants.WXAPP_ID);
      
                // 
                if (!api.isWXAppInstalled()) {
                    return;
                }
                // 
                if (api.getWXAppSupportAPI() < Build.PAY_SUPPORTED_SDK_INT) {
                    return;
                }
 
8.2:对返回的json进行解析,解析得到以下图中红色标注的4个字段的值,其他3个字段的值是你自己这边填写的。
 

其他3个字段的值为: 

1.package字段的值为package=Sign=WXPay”;
2.timestamp字段的值为 timestamp=Long.toString(System.currentTimeMillis() / 1000) ;
3.sign字段的值为(这里要根据微信给的签名算法生成签名,具体方法见下图) 这里的key,为申请微信支付时候生成AppSecret;
需要签名的6个字段,首先把这5个字段: appid,
partnerid,prepayid,noncestr,timestamp,package按照字段排序进行排序,按照key=value&key2=value2的格式拼接,然后在结尾拼接上(key=申请微信支付时候生成AppSecret的值)。把拼接好的字符串进行md5加密,得到签名sign的值不懂的可以在看下图解说:
 

8.3在注册清单文件中找到,调用微信支付的activity注册信息,加入下面代码:
 
           <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="你申请的appId" />
            </intent-filter>
 


9.现在拿到了调用微信支付的所有字段的值,下面就是调用微信支付了,代码如下:
 
 
// 
                            PayReq req = new PayReq();
                            req.appId = json.getString("appid");//json返回的值
                            req.partnerId = json.getString("mch_id");//json返回的值
                            req.prepayId = json.getString("prepay_id");//json返回的值
                            req.nonceStr = json.getString("nonce_str");//json返回的值
                            req.sign = sign;//这个签名是用上面的方法生成的签名
                            req.timeStamp =Long.toString(System.currentTimeMillis() / 1000);//固定的值
                            req.packageValue = "Sign=WXPay";//固定的值
                            // IWXMsg.registerApp
                           
                            api.sendReq(req);
 
10.这样就完成了调用微信支付,但是暂时还收不到支付结果,所以接下来就是要实现微信支付后的回调方法。具体方法如下:
1.在你的项目中新建一个包,包名必须为wxapi,否则微信无法回调。比如你的项目包名为com.xixiangfu.test。那么就在test下新建一个包com.xixiangfu.test.wxapi;
然后将下载的微信支付的demo中的WXPayEntryActivity这个类拷贝到这个包下,记得将布局文件也拷贝过去,还有要在AndroidManifest.xml对这个activity进行注册。(如图)

 
activity注册代码如下:
 
<activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:theme="@android:style/Theme.Translucent"
            android:launchMode="singleTop" />
 
11.这时候很多人就去运行测试了,这就是一个非常大的坑,这是根本无法调用微信支付,你要做的是要给你的app进行签名,要和你微信注册的地方的签名保持一致(可以参考下微信官方给的签名设置方法https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5),完成签名后才可以进行测试。

12.返回结果代码(这里如果要对展示结果的页面进行自定义,可以在这个类
WXPayEntryActivity中进行修改


注意:
调用微信支付,如果不能调起,或者返回-1,先检查签名(一般都是签名错误导致的,回去重新检查签名)、包名是否与开放平台上面的一致,若一致则是服务端的问题,一般是服务端签名问题。
 
2016-12-14 14:20:31 LiuHang03 阅读数 528
  • 自己开发一套微信支付接口(SDK)-微信开发15(PHP)

    会员免费看,http://edu.csdn.net/lecturer/842 边栏可办理会员卡。自己开发一套微信支付接口(SDK)是子恒老师《子恒说微信开发》视频教程的第15部。详细讲解了用php开发一套自己的微信支付接口。内容包含微信支付开发思路,基础类开发,微信支付接口应用,公众号发红包,企业付款等等。欢迎反馈,微信号:QQ68183131

    5395 人正在学习 去看看 秦子恒

一.进行基本配置,接入配置


二.由于测试账号可以使用很多功能,所以我们选择测试账号进行开发

    2.1本文采用JAVA进行开发,框架为SpringMVC+Spring+MyBatis,具体代码就不贴了。这里只讲解认证步骤

    2.2 开启本地的Ngrok,进行服务器端认证,如下图所示

   2.3 .java认证代码

@Controller
public class WeinxinController {
	
	public static final String TOKEN = "weixin";

	@RequestMapping("/init")
	public void init(HttpServletRequest req,HttpServletResponse response) throws IOException {
//		signature	微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
//		timestamp	时间戳
//		nonce	随机数
//		echostr 随机字符串
		String signature = req.getParameter("signature");	// 微信加密签名(标识该请求来源于微信)
		String timestamp = req.getParameter("timestamp");	// 时间戳
		String nonce = req.getParameter("nonce"); 	// 随机数
		String echostr = req.getParameter("echostr"); 
		String[] arr = {WeinxinController.TOKEN,timestamp,nonce};
		Arrays.sort(arr);
		StringBuffer sb = new StringBuffer();
		for(String a:arr) {
			sb.append(a);
		}
		String sha1Msg = SecurityKit.sha1(sb.toString());  // 对字符串进行加密
		if(signature.equals(sha1Msg)) {
			System.out.println(signature.equals(sha1Msg));
			response.getWriter().println(echostr);
		}
}
		
  

   2.4 微信端接入认证

输入你的URL和Token(自己随机命名),如下为认证成功状态,接下来就可以进行微信开发了。



2019-09-20 00:36:04 qq_41813208 阅读数 20
  • 自己开发一套微信支付接口(SDK)-微信开发15(PHP)

    会员免费看,http://edu.csdn.net/lecturer/842 边栏可办理会员卡。自己开发一套微信支付接口(SDK)是子恒老师《子恒说微信开发》视频教程的第15部。详细讲解了用php开发一套自己的微信支付接口。内容包含微信支付开发思路,基础类开发,微信支付接口应用,公众号发红包,企业付款等等。欢迎反馈,微信号:QQ68183131

    5395 人正在学习 去看看 秦子恒

第一步、要申请微信支付接入,需要注册一个商户号

注册入口:https://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal

按照提示提交相关资料即可注册。

第二步、根据自己的应用场景选择相应的接口

https://pay.weixin.qq.com/wiki/doc/api/index.html

 

我在这里使用的是JSAPI    (JavaScript API的简写)

下面带你去解读一下官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1

 

 

 

 

2018-02-09 12:12:50 qq962464qq 阅读数 1091
  • 自己开发一套微信支付接口(SDK)-微信开发15(PHP)

    会员免费看,http://edu.csdn.net/lecturer/842 边栏可办理会员卡。自己开发一套微信支付接口(SDK)是子恒老师《子恒说微信开发》视频教程的第15部。详细讲解了用php开发一套自己的微信支付接口。内容包含微信支付开发思路,基础类开发,微信支付接口应用,公众号发红包,企业付款等等。欢迎反馈,微信号:QQ68183131

    5395 人正在学习 去看看 秦子恒

微信公众号开发的时候大多数人都是看官方文档,但是这样很耗费时间,下面是一个Demo的讲解,可以让初次开发者快速的搭建好开发环境。

首先在公众号开发之前我们要做一个重要准备,那就是把我们本地的项目部署起来并将端口映射到外网,让外网也可以访问我们的项目,请看我之前转载的一片文章。

开发准备工作:点击打开链接http://blog.csdn.net/qq962464qq/article/details/79296319

Demo:Demo下载,Demo中采用简单的Spring MVC+mybaitis进行开发,Demo结构如下

我们用到的文件讲解

controller:接收请求

dao:和mapper中的sql对应,用于操作数据库

entity:实体

mapper:mybaitis的操作数据库的.xml文件,编写的sql

util:工具类

weixin:微信开发用到的一些代码(下面会详细讲解)

配置文件:applicationContext.xml和Spring-MVC.xml是spring的一些配置language.....文件是用来做页面中英文切换的(可以不要)system.properties文件配置了全局的一些变量,如Token等

这个准备工作的作用:

在公众号开发之前我们需要在微信官网平台的公众号(测试号也可以)填写一个urlToken,token可以自己命名,但是必须和你的项目中的Token一致,在你点击确 定的时候微信将访问你的url,加密你填写的token和你本地设置的token(本地需要加密,加密代码后面讲解)进行对比,对比成功则完成设置。

Demo讲解

1.绑定URL和Token

URL是微信平台访问的链接,用来校验Token的请求地址(DoMessageController中)


2.接收请求

接收关注,消息等请求,绑定了图灵机器人,实现智能问答。关注时进行消息推送(DoMessageController中)

/**
     * 处理微信发来的请求
     * @param request
     * @return xml
     */
    public String processRequest(HttpServletRequest request) {
        // xml格式的消息数据
        String respXml = null;
        // 默认返回的文本消息内容
        String respContent = "未知的消息类型!";
        try {
            // 调用parseXml方法解析请求消息
            Map<String, String> requestMap = MessageUtil.parseXml(request);
            // 发送方帐号
            String fromUserName = requestMap.get("FromUserName");
            // 开发者微信号
            String toUserName = requestMap.get("ToUserName");
            // 消息类型
            String msgType = requestMap.get("MsgType");
            // 回复文本消息
            TextMessage textMessage = new TextMessage();
            textMessage.setToUserName(fromUserName);
            textMessage.setFromUserName(toUserName);
            textMessage.setCreateTime(new Date().getTime());
            textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
            // 文本消息
            if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
            	//消息内容
            	String content = requestMap.get("Content");
            	Robot robot = new Robot();
            	//调用机器人对话
                respContent = robot.dialogue(content, fromUserName);
            }
            // 图片消息
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {
                respContent = "您发送的图片我没见过!";
            }
            // 语音消息
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {
                respContent = "我听不见您说的什么,还是打字吧!";
            }
            // 视频消息
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VIDEO)) {
                respContent = "您发送视频我没看过!";
            }
            // 视频消息
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_SHORTVIDEO)) {
                respContent = "您发送的是小视频消息!";
            }
            // 地理位置消息
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {
                respContent = "这个地方我没去过!";
            }
            // 链接消息
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {
                respContent = "您发送的是链接消息!但是我不认识!";
            }
            // 事件推送
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
                // 事件类型
                String eventType = requestMap.get("Event");
                // 关注
                if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
                    respContent = "欢迎关注上海质子重离子医院设备设施综合运行管理微信平台!";
                    //拉取用户数据
                    String url = "https://api.weixin.qq.com/cgi-bin/user/info";
                    String param = "access_token="+accessTokenService.getAccessToken().getAccesstoken()+"&openid="+fromUserName+"&lang=zh_CN";
                    JSONObject followPersonJson =  HttpUtil.sendGetOfJson(url, param);
                    followPersonJson.remove("tagid_list");
                    FollowPerson followPerson = (FollowPerson)JSONObject.toBean(followPersonJson,FollowPerson.class);
                    if(followPersonService.listFollowPerson(followPerson).size()==0){
                    	followPersonService.saveFollowPerson(followPerson);
                    	//tempMsgPushService.pushAllUser();
                    }
                }
                // 取消关注
                else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
                    //取消订阅后用户不会再收到公众账号发送的消息,因此不需要回复
                	FollowPerson followPerson = new FollowPerson();
                	followPerson.setOpenid(fromUserName);
                	followPersonService.delFollowPerson(followPerson);
                }
                // 扫描带参数二维码
                else if (eventType.equals(MessageUtil.EVENT_TYPE_SCAN)) {
                    // 处理扫描带参数二维码事件
                }
                // 上报地理位置
                else if (eventType.equals(MessageUtil.EVENT_TYPE_LOCATION)) {
                    //处理上报地理位置事件
                }
                // 自定义菜单
                else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
                    //处理菜单点击事件
                }
            }
            // 设置文本消息的内容
            textMessage.setContent(respContent);
            // 将文本消息对象转换成xml
            respXml = MessageUtil.messageToXml(textMessage);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return respXml;
    }
3.自定义菜单

weixin/InitMenu.java


   

//使用线程初始化access_Token
    public void init() throws ServletException {  
		try {
			ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
			AccessTokenService accessTokenService = (AccessTokenService) applicationContext.getBean("accessTokenService");
			//获取access_token
			String aturl = "https://api.weixin.qq.com/cgi-bin/token";
			//参数配置在system.properties中
			String param = "grant_type=client_credential&appid="+Common.getSystemProperty("appID")+"&secret="+Common.getSystemProperty("appsecret");
			JSONObject jsonObj = HttpUtil.sendGetOfJson(aturl, param);
			String access_token = jsonObj.getString("access_token");
			int expires_in= jsonObj.getInt("expires_in");
			AccessToken accessToken = new AccessToken();
			if(StringUtils.isNotBlank(access_token) && expires_in>0){
				accessToken.setAccesstoken(access_token);
				accessToken.setExpires(expires_in);
				//保存access_Token到数据库
				accessTokenService.delAccessToken();
				accessTokenService.saveAccessToken(accessToken);;
			}
			if(Common.isnull(accessToken)){
				System.out.println("access_Token错误");
			}
			String url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token="+accessToken.getAccesstoken();
			//json参数
			JSONObject jsonParam = new JSONObject();
			JSONArray jsonArr1 = new JSONArray();
			JSONArray jsonArr2 = new JSONArray();
			//一级菜单项
			JSONObject jsonParam1 = new JSONObject();
			//二级菜单项
			JSONObject jsonParam2 = new JSONObject();
			//第一组
			jsonParam1.put("name", "首页");
			//添加二级
			jsonParam2.put("type", "view");
			jsonParam2.put("appid", Common.getSystemProperty("appID"));
			jsonParam2.put("name", "登陆");
			jsonParam2.put("url", "http://e23c7752.ngrok.io");
			
			jsonArr2.add(jsonParam2);
			jsonParam2.clear();
			//继续添加二级
			//将二级添加到1级下
			jsonParam1.put("sub_button", jsonArr2);
			
			jsonArr1.add(jsonParam1);
			
			jsonParam2.clear();
			jsonParam1.clear();
			/*//第二组
			jsonParam1.put("name", "首页");
			jsonParam1.put("type", "view");
			jsonParam1.put("url", "www.baidu.com");
			
			jsonParam.put("button", jsonParam1);
			
			jsonParam2.clear();
			jsonParam1.clear();
			//第二组
			jsonParam1.put("name", "首页");
			jsonParam1.put("type", "view");
			jsonParam1.put("url", "www.baidu.com");
			
			jsonParam.put("button", jsonParam1);
			
			jsonParam2.clear();
			jsonParam1.clear();*/
			
			jsonParam.put("button", jsonArr1);
			System.out.println(jsonParam);
			//初始化返回
			//JSONObject rsJson = HttpUtil.sendPost(url, jsonParam);
			JSONObject rsJson = HttpUtil.sendPostOfJson(url, jsonParam);
			String  errmsg= rsJson.getString("errmsg");
			int errcode= rsJson.getInt("errcode");
			if(errcode==0 && errmsg.equals("ok")){
				System.out.println(DateTimeUtil.formatDate(new Date(), DateTimeUtil.yyyy_MM_dd_HH_mm_ss)+"  success:初始化菜单成功");
			}else{
				System.out.println(DateTimeUtil.formatDate(new Date(), DateTimeUtil.yyyy_MM_dd_HH_mm_ss)+":    error:初始化菜单失败");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
    }  
其余核心代码中都有注释

2016-08-17 11:06:50 ou1114910138 阅读数 4985
  • 自己开发一套微信支付接口(SDK)-微信开发15(PHP)

    会员免费看,http://edu.csdn.net/lecturer/842 边栏可办理会员卡。自己开发一套微信支付接口(SDK)是子恒老师《子恒说微信开发》视频教程的第15部。详细讲解了用php开发一套自己的微信支付接口。内容包含微信支付开发思路,基础类开发,微信支付接口应用,公众号发红包,企业付款等等。欢迎反馈,微信号:QQ68183131

    5395 人正在学习 去看看 秦子恒

欢迎大家观看我录制的课程:http://edu.csdn.net/lecturer/944


转载请注明出处:http://blog.csdn.net/ou1114910138/article/details/52229090  或我的博客园  http://www.cnblogs.com/wangoublog/p/5367950.html  

现在微信的功能众所周知,用户量、影响力也是惊人,很多应用接入微信的功能已成为一种不可缺少的一部分,下面我就来讲解如何在自己的App中接入微信分享功能

开发软件:AndroidStudio1.5.1
1、先进入微信开放平台:https://open.weixin.qq.com/ 进行注册自己的账号

2、注册好账号后,在平台首页点击顶部的管理中心,如下图

3、进入到管理中心后,选择移动“移动应用”,再点击“创建移动应用”,如下图

4、进入到创建移动应用界面,填写相关信息,如下下图

 

5、填写完该页面的信息后,点击下一步,进入如下界面,填写相关信息,

 

这里要注意的是应用签名,网上有很多可以生产签名的软件,在这里给大家一个软件,链接为http://pan.baidu.com/s/1hsqAC6K,下载这个软件安装到手机上可生产签名,前提是你的手机先安装好你自己的app,填写完信息后,提交审核,接下来就是等待审核,快的话1小时内就可以通过,慢的话就不清楚要多久了,哈哈。

6、之后就是查看是否审核完成,如步骤2操作,操作完后会进入如下界面,状态列显示“已通过"说明已经通过审核了

7、这时可点击右边的操作列的”查看“,进入到下面的界面获取App_ID和AppSecret,

其中接口信息中前2行已经默认有了免费有了“分享给好友和朋友圈”的功能,这时就可以正式写代码为应用接入微信的功能了。

在写代码前请先在该网站”资源中心下载-资源下载“下载开发工具包,在这里需要的是开发包中的SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar,也可以到我的网盘中下载

http://pan.baidu.com/s/1miEOZaC,http://pan.baidu.com/s/1gfDDrSf,还有就是httpmime(http://pan.baidu.com/s/1geSqitl)或fastjson(http://pan.baidu.com/s/1eSfjzmM)

8、用AndroidStudio打开或新建自己的应用,把下载的包名加入到自己的app中,再在配置文件中添加配置权限等,此处略;

在包名目录下新建一个wxapi包,再在这个新建的包下新建一个名为“WXEntryActivity”的Activity

,如下图

9、WXEntryActivity并实现接口IWXAPIEventHandler该类的代码具体如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
 
    private Button  reg_btn,share_btn;//reg_btn将自己的app注册到微信的按钮,share_btn进行分享<br>
    private IWXAPI api;
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.entry);
 
        api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, false);
 
    reg_btn = (Button) findViewById(R.id.reg_btn);
    reg_btn.setOnClickListener(new View.OnClickListener() {
 
        @Override
        public void onClick(View v) {
            api.registerApp(Constants.APP_ID);
        }
        });
 
    //分享
    share_btn=(Button)findViewById(R.id.share_btn);
    share_btn.setOnClickListener(new View.OnClickListener() {
        @Override
            public void onClick(View v) {
                // 初始化一个WXTextObject对象
                WXTextObject textObj = new WXTextObject();
                 
                textObj.text = "hallo";
 
                // 用WXTextObject对象初始化一个WXMediaMessage对象
                WXMediaMessage msg = new WXMediaMessage();
                msg.mediaObject = textObj;
                // 发送文本类型的消息时,title字段不起作用
                // msg.title = "Will be ignored";
                msg.description = "hallo";
 
                // 构造一个Req
                SendMessageToWX.Req req = new SendMessageToWX.Req();
                req.transaction = "transaction"+System.currentTimeMillis(); // transaction字段用于唯一标识一个请求
                req.message = msg;
                req.scene = true ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
 
                // 调用api接口发送数据到微信
                api.sendReq(req);
                finish();
            }
        });
    }
 
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
         
        setIntent(intent);
        api.handleIntent(intent, this);
    }
 
    @Override
    public void onReq(BaseReq baseReq) {
 
    }
 
    @Override
    public void onResp(BaseResp baseResp) {
 
    }
}

  

10、代码写完后,再生产apk文件,如下图

其中会得到一个jks文件,把jks文件放到我们工程文件根目录下,再在AndroidStudio命令行中输入:

keytool -v -list -keystore keystore.jks 命令,其中keystore.jks改为你自己的jks文件名

最后在build.gradle中设置自己的jks文件即可

 

 结束..............

本人文笔表达有限,如有不到位的地方,还请包涵,如有解决你的问题,请转发或点赞,谢谢。

技术讨论,资料分享请加我QQ入群,为了群的干净有秩序,所以有2元入群费要求,群里所收获保证不止2元


本人联系方式:

                更多精彩分享,可关注我的微信公众号:

                                    

                 微信号:WeixinJungle

              

                 邮箱:oneou6688@163.com

没有更多推荐了,返回首页