安卓开发接入微信支付功能的详细步骤(手把手教你一步一步接入,适合小白)

微信支付开发步骤:

首先去申请开通微信支付功能(亦可从网上找到申请开通的方法),这里不详细讲解了,自行百度或者按照微信提示操作,主要讲解接入过程。注册微信,主要的是得到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的格式拼接,然后在结尾拼接上(k ey= 申请微信支付时候生成 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,先检查签名(一般都是签名错误导致的,回去重新检查签名)、包名是否与开放平台上面的一致,若一致则是服务端的问题,一般是服务端签名问题。
 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在安卓应用中接入微信支付,您可以按照以下步骤进行操作: 1. 在微信放平台上注册并创建一个应用,获取到对应的AppID和AppSecret。 2. 在安卓应用的项目中,添加微信支付的SDK文件,可以通过在项目的build.gradle文件中添加相应的依赖来引入。 3. 在安卓应用的manifest文件中,添加以下权限和activity声明: ```xml <uses-permission android:name="android.permission.INTERNET" /> <activity android:name="com.tencent.mm.opensdk.openapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> ``` 4. 在安卓应用的代码中,使用微信支付SDK提供的API进行支付操作。具体步骤如下: - 在您的支付页面或订单确认页面,用户点击支付按钮后,调用以下代码创建一个支付请求: ```java PayReq req = new PayReq(); req.appId = "您的AppID"; req.partnerId = "商户号"; req.prepayId = "预支付交易会话ID"; req.packageValue = "扩展字段(暂填写固定值:Sign=WXPay)"; req.nonceStr = "随机字符串"; req.timeStamp = "时间戳"; req.sign = "签名"; // 发送支付请求 IWXAPI api = WXAPIFactory.createWXAPI(context, req.appId); api.registerApp(req.appId); api.sendReq(req); ``` - 在安卓应用的代码中,实现一个WXPayEntryActivity来接收支付结果的回调。在该Activity的`onCreate`方法中,调用以下代码处理支付结果: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wxpay_entry); // 处理支付结果 handlePayResult(getIntent()); } private void handlePayResult(Intent intent) { // 获取支付结果信息 PayResp resp = new PayResp(); resp.fromIntent(intent); // 根据支付结果进行相应处理 if (resp.errCode == BaseResp.ErrCode.ERR_OK) { // 支付成功 // TODO: 进行支付成功后的逻辑处理 } else { // 支付失败 // TODO: 进行支付失败后的逻辑处理 } finish(); } ``` 以上是接入微信支付的基本步骤,您需要根据具体的业务需求和微信支付提供的文档进行相应的配置和发。希望对您有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值