android最新微信支付总结

签名和包名,签名的话:用release。

关于上线:非硬性指标。

1.申请appid 
提交应用,等待审核。只有审核通过后,才能有开发资格。支付认证费:300元/年。每年需要认证一次。 
2.下载sdk 
gradle做以下配置:

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}
  • 1
  • 2
  • 3

3.清单文件配置 
3.1添加权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  • 1
  • 2
  • 3
  • 4
  • 5

3.2注册activity


<!--微信支付-->
    <activity
        android:name=".wxapi.WXPayEntryActivity"
        android:exported="true"
        android:launchMode="singleTop"/>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

WXPayEntryActivity实现了IWXAPIEventHandler,重写了onResp(BaseResp resp),是微信支付结果的回调,由微信api调用。并将接收到的intent和实现了IWXAPIEventHandler的对象传递给IWXAPI 的handleIntent方法。onResp是微信发送请求的回调,onReq是app发送微信请求结果的回调。

     @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);

        api = WXAPIFactory.createWXAPI(this, WXConstants.APP_ID);

        api.handleIntent(getIntent(), this);

    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);

        api.handleIntent(intent, this);
    }


    @Override
    public void onReq(BaseReq req) {
    }

    @Override
    public void onResp(BaseResp resp) {
        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle(R.string.app_tip);
            builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));
            builder.show();
        }
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 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

注意 WXPayEntryActivity必须在包名.wxapi目录下,否则无法被回调。WXPayEntryActivity可参考demo。 
这里写图片描述 
4.混淆配置


   #微信支付
   -keep class com.tencent.mm.opensdk.** {*;}
   -keep class com.tencent.wxop.** {*;}
   -keep class com.tencent.mm.sdk.** {*;}
  • 1
  • 2
  • 3
  • 4
  • 5

5.代码 
5.1注册api

    private IWXAPI wxapi;

     /**
     * 注册到微信
     * 使用支付前必须注册,可放在activity的oncreate()中执行。
     */
    private void registerWeChatPay(){

        wxapi = WXAPIFactory.createWXAPI(mContext, WXConstants.APP_ID,false);
        wxapi.registerApp(WXConstants.APP_ID);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

5.2支付 
流程: 
app将订单信息提交给后台服务器后,服务器生成预支付交易单。app提取支付需要的参数,调用微信支付接口进行支付。支付结果由微信回调返回。

这里写图片描述

关键代码

        PayReq request = new PayReq();

        request.appId = "wxd930ea5d5a258f4f";

        request.partnerId = "1900000109";

        request.prepayId= "1101000000140415649af9fc314aa427";

        request.packageValue = "Sign=WXPay";

        request.nonceStr= "1101000000140429eb40476f8896f4c9";

        request.timeStamp= "1398746574";

        request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";

        wxapi.sendReq(request);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

6.总结 
支付流程同支付宝支付。不得不说,在申请支付功能上比较耗时,没有在线客服。所有问题基本是靠电话沟通。很不方便。 
支付很简单,不多说了。

猜你喜欢

转载自blog.csdn.net/u014644594/article/details/79697141
今日推荐