Android实现微信支付功能详解

 更新时间:2017年12月13日 08:39:47   作者:Sun2Ming  
这篇文章主要为大家详细介绍了Android实现微信支付功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

1.集成微信支付SDK:

在build.gradle中,添加如下依赖

compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

2.设置微信支付回调页面:

路径:项目包名.wxapi
名称:WXPayEntryActivity

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

 private IWXAPI api;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.wx_pay_result);
  api = WXAPIFactory.createWXAPI(this, "你的APP_ID");
  api.handleIntent(getIntent(), this);
 }

 @Override
 protected void onNewIntent(Intent intent) {
  super.onNewIntent(intent);
  setIntent(intent);
  api.handleIntent(intent, this);
 }

 @Override
 public void onResp(BaseResp resp) {
  int errCode = resp.errCode;
 }
}

errCode:说明
0:成功……展示成功页面。
-1:错误……可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
-2:用户取消……无需处理。发生场景:用户不支付了,点击取消,返回APP。

3.设置Manifest

<activity
 android:name=".wxapi.WXPayEntryActivity"
 android:exported="true"
 android:launchMode="singleTop">
 <intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:scheme="你的APP_ID" />
 </intent-filter>
</activity>

4.设置MD5

public class MD5 {

 private MD5() {
 }

 public final static String getMessageDigest(byte[] buffer) {
  char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  try {
   MessageDigest mdTemp = MessageDigest.getInstance("MD5");
   mdTemp.update(buffer);
   byte[] md = mdTemp.digest();
   int j = md.length;
   char str[] = new char[j * 2];
   int k = 0;
   for (int i = 0; i < j; i++) {
    byte byte0 = md[i];
    str[k++] = hexDigits[byte0 >>> 4 & 0xf];
    str[k++] = hexDigits[byte0 & 0xf];
   }
   return new String(str);
  } catch (Exception e) {
   return null;
  }
 }
}

5.发起微信支付

/**
 * 注册微信支付
 */
private void registerWx() {
 IWXAPI wxapi = WXAPIFactory.createWXAPI(context, null);
 wxapi.registerApp("你的APP_ID");
}

/**
 * 发起微信支付
 */
private void wxPay() {
 PayReq payReq = new PayReq();
 payReq.appId = "后台返回的appId";
 payReq.partnerId = "后台返回的partnerId";
 payReq.prepayId = "后台返回的prepayId";
 payReq.packageValue = "后台返回的package";
 payReq.nonceStr = "后台返回的nonceStr";
 payReq.timeStamp = "后台返回的timeStamp";
 payReq.signType = "后台返回的signType";
 payReq.sign = signNum();
 wxapi.sendReq(payReq);
}

/**
 * 拼接sign
 */
public static String signNum() {
 String stringA = "appid=" + "后台返回的appid" +
   "&noncestr=" + "后台返回的noncestr" +
   "&package=" + "后台返回的package" +
   "&partnerid=" + "后台返回的partnerid" +
   "&prepayid=" + "后台返回的prepayid" +
   "&timestamp=" + "后台返回的timestamp";
 String stringSignTemp = stringA + "&key=" + "后台商户服务端的key";
 String sign = MD5.getMessageDigest(stringSignTemp.getBytes()).toUpperCase();
 return sign;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android NotificationListenerService 通知服务原理解析

    Android NotificationListenerService 通知服务原理解析

    这篇文章主要为大家介绍了Android NotificationListenerService 通知服务原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Android编程实现对话框Dialog背景透明功能示例

    Android编程实现对话框Dialog背景透明功能示例

    这篇文章主要介绍了Android编程实现对话框Dialog背景透明功能,涉及Android对话框的布局、属性及事件处理相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • Android自定义实现BaseAdapter的普通实现

    Android自定义实现BaseAdapter的普通实现

    这篇文章主要为大家详细介绍了Android自定义实现BaseAdapter的普通实现,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android自定义View实现粉碎的面具效果

    Android自定义View实现粉碎的面具效果

    这篇文章主要给大家介绍了关于Android自定义View实现粉碎的面具效果的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • Android自定义ProgressDialog加载图片

    Android自定义ProgressDialog加载图片

    这篇文章主要介绍了Android自定义ProgressDialog系统加载框,通过本文大家可以尝试利用Android自定义ProgressDialog,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android性能优化方法

    Android性能优化方法

    这篇文章主要介绍了Android性能优化方法 的相关资料,需要的朋友可以参考下
    2015-12-12
  • Android总结之WebView与Javascript交互(互相调用)

    Android总结之WebView与Javascript交互(互相调用)

    本篇文章主要介绍了WebView与Javascript进行数据交互,详解的讲诉了WebView与Javascript进行数据交互的方法,有兴趣的可以了解一下。
    2016-11-11
  • 拥抱kotlin之如何习惯使用kotlin高阶函数

    拥抱kotlin之如何习惯使用kotlin高阶函数

    这篇文章主要给大家介绍了关于拥抱kotlin之如何习惯使用kotlin高阶函数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用kotlin具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • Android自定义View实现圆形切图效果

    Android自定义View实现圆形切图效果

    这篇文章主要为大家详细介绍了Android自定义View实现圆形切图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android Rreact Native 常见错误总结

    Android Rreact Native 常见错误总结

    这篇文章主要介绍了Android Rreact Native 常见错误总结的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论