Android支付宝和微信支付 简单记录2019.05

    xiaoxiao2022-06-28  212

    最近朋友项目让帮忙加个支付,正好好久没弄过支付宝和微信了。就看了下,本以为挺简单的,可是还是踩了几个小时坑。在此记录下,方便以后查阅。

    (其实这种大型第三方平台的对接都很简单的,即使是新手也不用有啥压力。细心跟着文档一步步走就好的。)

     

    注意:各种第三方平台接入时,务必保证应用包名,签名和平台上配置的是统一的!!!!这一点非常关键。

    包名就不多说了,没啥出错的可能。但是签名一定要保证统一。有的平台是可以配置dbug版签名和release版签名两个,但是有的平台只能配置一个release版签名,这时我们调试的时候就很麻烦,甚至粗心的时候还会出错。可以临时在app的build.gradle中配置一下:

    android { signingConfigs { release { keyAlias '这里填签名别名' keyPassword '这里填密码' storeFile file('C:/Develop/APK/key/mykey.jks') 这里是示例,填写签名全路径 storePassword '这里填密码' } debug {//这里是dbug签名,临时填成发布版签名。方便调试,格式同上 keyAlias '' keyPassword '' storeFile file('') storePassword '' } } }

     

    1.微信支付

    官方文档地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

    (这里只讨论Android端的接入,所以涉及到后台的就不细说了。)

     

    1.1 后台配置签名和包名

    这一步需要android配合,先在微信下载一个签名工具apk。

    下载地址:https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk

    下载完之后安装,然后输入我们app的包名(务必保证是正式版签名的app),然后点击Get Signature按钮,下面会生成一个签名串。如下图:

    得到签名串之后将这个签名和包名配置到后台。如下图:

     

    1.2 导包

    现在Android Studio中直接用gradle就行了。(遥想当年被各种jar包支配的恐惧~ 都是泪...)

    在app的build.gradle中的dependencies目录下添加:

    //微信支付 implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

    (因为我这里用的Studio3.4所以用“implementation”,老版本的话用“compile”)

    OK导包结束,就这么简单。

     

    1.3 注册APPID

    调用API前,需要先向微信注册您的APPID,Kotlin代码如下:

    val msgApi = WXAPIFactory.createWXAPI(this, null) // 将该app注册到微信 msgApi.registerApp("这里填APPID")

    java代码如下:

    final IWXAPI msgApi = WXAPIFactory.createWXAPI(this, null); //将该app注册到微信 msgApi.registerApp("这里填APPID");

     

    1.4 调起支付

    这里主要是后台的工作了,我们将订单号,金额等数据传给后台,后台返回我们调起支付宝的一些参数。最终调用如下:

    var request = PayReq()//以下参数全由后台返回 request.appId = "" request.partnerId = "" request.prepayId = "" request.packageValue = "" request.nonceStr = "" request.timeStamp = "" request.sign = "" msgApi.sendReq(request)//发起支付请求

     

    1.5 添加支付回调函数

    在项目包名根目录下创建一个文件夹:wxapi并把WXPayEntryActivity拷进去。(WXPayEntryActivity在官方demo中有,本文下面也会贴出)。目录创建位置如图:

    这是一个容易出问题的地方,切记,要在包名根目录添加wxapi文件夹。

     

    WXPayEntryActivity代码如下:

    public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler { private String TAG = "WXPayEntryActivity"; private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pay_result); api = WXAPIFactory.createWXAPI(this, MyApplication.WxAPPID); 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) { Log.i("onReq", "onPayFinish, openId = " + req.openId); } @Override public void onResp(BaseResp resp) { if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) { //在这里通过errCode判断支付状态并进行处理 Log.i("微信支付", "errCode:" + resp.errCode); Log.i("微信支付", "errStr:" + resp.errStr); } } }

     

    然后在AndroidManifest中声明这个Activity。代码如下:(注意android:exported="true"一定要加)

    <!--微信支付--> <activity android:name=".wxapi.WXPayEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

    以上5步做完之后就可以开心的去支付了~~

     

    2.支付宝支付

    官方文档地址:https://docs.open.alipay.com/204/105296/

    我看的是支付宝2019-05.07更新的文档。说实话,简直挑不出毛病。写的非常清晰明了。

    可以这么说,我本来想找到一个文档中容易出错或者不完善的地方,然后在此记录一下。不过至今没找到突破口~~

    所以,支付宝支付大家直接看文档就行了,我就不献丑了。


    最新回复(0)