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

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

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

 

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

包名就不多说了,没啥出错的可能。但是签名一定要保证统一。有的平台是可以配置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);            

        }
    }

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

然后在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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值