微信支付

 1.集成微信支付sdk:

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

[Java] 查看源文件 复制代码

?

1

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

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

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

[Java] 查看源文件 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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

[Java] 查看源文件 复制代码

?

01

02

03

04

05

06

07

08

09

10

<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

[Java] 查看源文件 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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.发起微信支付

[Java] 查看源文件 复制代码

?

01

02

03

04

05

06

07

08

09

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

/**

 * 注册微信支付

 */

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值