Android微信支付

这篇文章记录微信支付,因为很多地方用的到,今天特意写一下,加深印象大笑,首先我们要到微信开发者平台去申请一些我们用到的数据

appid是必须的,申请好了之后,在开发文档里下载最新SDK放到 libs下面,



然后到Manifest里面填写

<!--微信支付 -->
<activity
    android:name=".wxapi.WXPayEntryActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</activity>
别忘了这里需要填写appid
<activity
    android:name=".activity.YourActivity"//主activity入口
    android:launchMode="standard"
    android:theme="@style/AppThemeTwo">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="appid"/>//填写你的appid
    </intent-filter>
</activity>
接下来代码部分

注意 一定要新建一个wxapi这个包,把WxEntryActivity这个类放到这个包下才可能调起微信
直接把代码放上去
public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {

    private IWXAPI api;
    String appid = "填写你的appid", partnerid, prepayid, packagex, noncestr, timestamp, sign;//这几个字段是后台需要返回给我们的
    private AlertDialog.Builder builder;
    private Dialog dialog;
    String sn = "";
    String order_id;

     //下面这些把字段换成自己的基本可以copy,没什么吐舌头
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();

//        appid = intent.getStringExtra("appid");
        partnerid = intent.getStringExtra("partnerid");
        prepayid = intent.getStringExtra("prepayid");
        packagex = intent.getStringExtra("package");
        noncestr = intent.getStringExtra("noncestr");
        timestamp = intent.getStringExtra("timestamp");
        sign = intent.getStringExtra("sign");
       
        api = WXAPIFactory.createWXAPI(this, appid);
        api.registerApp(appid);
        api.handleIntent(getIntent(), this);
        if (!api.isWXAppInstalled()) {
            Toast.makeText(WXPayEntryActivity.this, "没有安装微信", Toast.LENGTH_SHORT).show();
            finish();
            return;
        }
        if (!api.isWXAppSupportAPI()) {
            Toast.makeText(WXPayEntryActivity.this, "当前微信版本不支持支付", Toast.LENGTH_SHORT).show();
            finish();
            return;
        }
        PayReq req = new PayReq();
        req.appId = appid;
        req.partnerId = partnerid;
        req.prepayId = prepayid;
        req.packageValue = packagex;
        String nonceStr = noncestr;//获取随机生成字段
        req.nonceStr = nonceStr;
        String time = timestamp;
//        if (time < 0) {
//            time = System.currentTimeMillis() / 1000;
//        }
        req.timeStamp = String.valueOf(time);// 时间戳单位秒 10位.
        req.sign = sign;
        api.sendReq(req);
    }


    @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) {
        //支付结果回调
        myHandler.sendEmptyMessage(0x001);

        if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            builder = new AlertDialog.Builder(this);
            builder.setTitle(R.string.app_tip);
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            dialog = builder.show();
            builder.setMessage(getString(R.string.pay_result_callback_msg, baseResp.errStr + ";code=" + String.valueOf(baseResp.errCode)));
            dialog.show();

            if (String.valueOf(baseResp.errCode).equals("0")) {
                ToastCommonUtils.showCommonToast(WXPayEntryActivity.this, "支付成功");
            }else if (String.valueOf(baseResp.errCode).equals("2")) {
                {
                    if (dialog.isShowing()) {
                        dialog.dismiss();
                        ToastCommonUtils.showCommonToast(WXPayEntryActivity.this, "支付失败");
                       
                    }

                }
            }
        }
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        
    }

    @Override
    protected void onStop() {
        if (dialog.isShowing()) {
            dialog.dismiss();

            finish();
        }
        super.onStop();
    }

    Handler myHandler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 0x001:
//                    finish();
                    break;
            }
            super.handleMessage(msg);
        }
    };
}
//到这里就可以调起微信支付了,别忘记打包的apk是release版的



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值