美文网首页微信支付踩坑系列Android知识设计产品运营商业模式
最新版微信支付和支付宝支付集成(未完待续)

最新版微信支付和支付宝支付集成(未完待续)

作者: CrazyJasonX | 来源:发表于2017-01-22 17:21 被阅读215次

最近公司新项目要集成微信支付,支付宝支付,搜了一下,网上旧版本的集成比较多,所以就按照官方最新文档进行集成,记录下集成过程中遇到的问题,方便以后查看。

1.微信支付集成

首先要了解微信 支付的业务流程,具体可以看微信支付业务流程,后台刚开始不知道统一下单接口返回的sing要再进行一次签名后才返回实体bean,我每次都是拿到第一次的签名sing去调支付,怎么调都调不起来,然后就是报-1的错误,排除了appkey错误,后来跟后台对接的时候才知道他把第一次请求下来的支付信息直接返回了。。。

上图在第5步的时候,后台请求到预订单信息后,按照第6步还要后台把sing再签名一次才能正常的调起支付哦!

后台2次签名需要的参数

统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay

下面是接入微信支付的步奏:

1.用官方的工具做app的签名(前期用debug版本签名的话,后期上线打包要更换成正式版本的签名),发给台人员或者项目经理去创建app并配置秘钥私钥,开通app的支付功能,前端只要一个AppID。

2.下载Demo,获取SDK、地址:下载微信支付SDK和Demo

3.导入微信支付的jar文件到libs,拷贝WXPayEntryActivity.java文件,这个页面是在你调起微信支付完成支付(或取消或失败)后,再回到你的App时会调用的一个页面。页面的布局可以是你自定义的布局,配置AndroidManifest.xml文件,代码如下:

(新建一个wxapi包,把这个类复制到自己的项目中(不要改类名))
<activity
    android:name=".wxapi.WXPayEntryActivity"
    android:exported="true"
    android:launchMode="singleTop"/>

WXPayEntryActivity这个类中不想要布局的话可以把setContentView(R.layout.pay_result);这句代码删除,然后在onResp这个方法中我的更改如下:

4.在要调起支付的地方先调用下面代码将该app注册到微信。必须先注册

// IWXAPI 是第三方app和微信通信的openapi接口
   private IWXAPIapi;
   public void regToWx() {
       // 通过WXAPIFactory工厂,获取IWXAPI的实例
        api= WXAPIFactory.createWXAPI(this,Api.APP_ID, false);
        // 将该app注册到微信
        api.registerApp(Api.APP_ID);
}

5.点击支付按钮时候先调用后台提供的生成预支付信息的接口,拿到调起微信支付的参数

6.接收后台传回来的实体bean,配置微信调用信息参数,发起调用。

private void showWxPay(AppPayBean appPayBean) {
    PayReq req =newPayReq();
    req.appId= appPayBean.getPay().getAppid();
    req.partnerId= appPayBean.getPay().getMch_id();
    req.prepayId= appPayBean.getPay().getPrepay_id();
    req.nonceStr= appPayBean.getPay().getNonce_str();
    req.timeStamp= appPayBean.getPay().getTime();
    req.packageValue="Sign=WXPay";
    req.sign= appPayBean.getPay().getSign();
    //req.extData = "app data";
   // 在支付之前,如果应用没有注册到微信,先调用IWXMsg.registerApp将应用注册到微信      
    api.sendReq(req);
}

7.无论成功失败都会调用WXPayEntryActivity这个类的onResp方法,在里面进行逻辑判断

/**
 * 微信支付结果
 */
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        api = WXAPIFactory.createWXAPI(this, Api.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) {
        KLog.e(resp.errCode + resp.errStr + "===toString===" + resp.toString());

        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            if (resp.errCode == 0) {
                Toast.makeText(getApplicationContext(), "支付成功", Toast.LENGTH_SHORT).show();
                EventBus.getDefault().post(new MessageEvent.PayEvent(0));//发送通知关闭确认订单界面
                //跳转到待发货界面
                Intent intent = new Intent(WXPayEntryActivity.this, MyOrderActivity.class);
                intent.putExtra("type", 2);
                startActivity(intent);
            } else if (resp.errCode == -1) {
                EventBus.getDefault().post(new MessageEvent.PayEvent(1));
                Toast.makeText(getApplicationContext(), "支付失败", Toast.LENGTH_SHORT).show();
            } else if (resp.errCode == -2) {
                EventBus.getDefault().post(new MessageEvent.PayEvent(2));
                Toast.makeText(getApplicationContext(), "支付取消", Toast.LENGTH_SHORT).show();
            }
        }
        finish();
    }
}

2.支付宝支付集成

后续更新

相关文章

  • iOS- 收藏 (专题文章分类)

    支付宝/ 微信 / 银联 1. iOS 支付宝详细集成总结2. 支付宝3. iOS-微信支付和支付宝支付4. ...

  • 一分钟快速集成微信支付宝支付

    本篇文章主要记录:在项目中集成微信支付和微信支付的快速解决方案 风鼎科技支付插件 里面集成了支付宝支付和微信支付 ...

  • iOS集成支付宝/微信支付遇到的坑...

    最近在集成微信/支付宝支付,下面是集成的大体流程以及遇到的一些坑,特此记录.首先来谈下微信支付(因为集成支付宝支付...

  • 支付

    微信支付集成 前段时间,公司突然要在App中集成支付功能。毫无意外的选择了支付宝、微信 支付宝,这里就不多说了。按...

  • iOS 集成微信支付

    这次是一个新项目,集成支付宝和微信支付,在上一篇中,记录了一下集成支付宝支付时的一些坑,不过集成微信时要顺利得多。...

  • iOS集成支付宝-Swift版

    iOS集成支付宝-Swift版 如果要了解整个支付流程可以阅读文章《手机App集成微信支付&支付宝-iOS&And...

  • 一分钟快速集成微信支付宝支付

    上班墨鱼-支付插件 GitHub地址-欢迎star 集成了支付宝支付和微信支付一分钟集成集成支付不是梦现在仅支持支...

  • 支付功能

    项目中集成的第三方支付如下: 支付宝支付及(支付宝多账户支付 )?支付宝花呗微信及微信多账户支付银联京东支付京东白...

  • Android集成微信支付功能

    公司项目中需要支付功能,原来已经集成了支付宝,现在集成微信支付;由于我在集成支付宝的时候,已经做了一次支付工具类的...

  • 支付

    支付宝集成:http://caoyudong.com/2016/01/03/iOS接入支付宝/ 微信支付:http...

网友评论

本文标题:最新版微信支付和支付宝支付集成(未完待续)

本文链接:https://www.haomeiwen.com/subject/kbjobttx.html