Android 调用第三方微信支付

版权声明:转载请注明出处:https://blog.csdn.net/mijiaxiaojiu https://blog.csdn.net/mijiaxiaojiu/article/details/82670467

好久没写东西了,恰逢最近做三方支付,听身边很多开发的朋友说都被微信坑过,就把过程记录下,避免以后再碰到类似的坑。

第一步:

  1. 其实第一步实在是没什么好说明的,到微信开放平台填写相应的资料即可。
  2. 然后申请支付权限
    这里写图片描述
  3. 相应的都去申请,主要是一些资料的审核。

注意:微信申请的支付过程中,大概两到三个工作日就会有回复,会给你申请的银行卡号上随机转入一笔钱(想指着这发财的还是免了吧,一般是几毛几分钱),然后需要在你绑定的微信号上开发激活账号。这些在申请文档步骤中都有提示。

第二步:

  • 以上准备工作完事后正式进入接入微信支付到APP中的流程。

    1. 没什么可多说的,首先要做的是先导入微信支付的相应的SDK,微信这一点目前做的还是比较好的,不用下载库文件,可以直接引用
      这里写图片描述
    2. 其实微信让人感觉的有点绕的地方就在于它的流程的严密性的地方,之所以在第二部才提到这个微信的流程,是因为从这个地方开始,是真正的开始走微信的流程的时候了
      这里写图片描述
  • 流程图中的1,2两步不用多说,是开发者在自己应用中的内容

  • 从3开始,把相应的信息传递给自家后台,由后台开发人员去调用微信的统一下单的APP,就是第4这个流程,目的是需要在服务器端进行加密操作,且返回给相应的订单信息(第5步),比如订单号之类的(注意:相应的信息,尽量不要在客户端操作)最重要的是签名,稍后会具体说
  • 从第6、7开始就是调用微信支付的核心代码了

    1. 在调用支付前,先注册APPID
            商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:
        final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
            // 将该app注册到微信
        msgApi.registerApp("wxd930ea5d5a258f4f");
    2.然后调用核心代码
    
IWXAPI api;
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";
api.sendReq(request);

这里写图片描述

注意:特别要注意签名的问题啊老铁们,这个签名是二次签名过的,就是说在第5步和第6步之间,必须把第一次返回的签名信息,进行二次签名,这个非常重要,笔者就是因为这个操作给坑了很久。

  • 微信支付的回调,同样重要,很多同学的支付坑,就坑在了回调不起来上面,原因当然有很多种,微信的回调文档是这样写的,注意我划线的部分
    这里写图片描述
    请看好,这个包名,可不是让写net.sourceforge.simcpux,这个是示例的包名,在你自己项目中,只需写入包名和类名即可,这个时候,这个包名和类名一定不能写错的
    这里写图片描述

那个WXEnterActivity这个类是做微信分享时用的,只做支付的可以忽略掉,注意回调结果

这里写图片描述

第三步:

还有就是千万不要忘记,在AndroidManifest.xml中的配置文件

1. 权限
2. 配置核心代码

 <activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="你的微信注册的AppID" />
            </intent-filter>
        </activity>

以上就是使用android开发者接入微信支付的简单流程
总结:
1. 第一个就是那个签名了,我相信很多开发者头疼就在于这个签名上了,二次复签别忘了
2. 第二个是那个时间戳了,请认真看清楚这个时间戳是10位的,是精确到秒既可的,咱们平时用的13位的那个精确到了毫秒
3. 查看是否在AndroidManifest.xml中配置了核心代码
最最重要的,先认真阅读流程图和开发文档,其实很多错误,文档中都有提示的。
暂时mark到这吧!

没有更多推荐了,返回首页