Android 微信支付接入笔记

我们在App移动开发中,支付功能基本都会遇到。前几天公司项目中有微信支付的功能,特此记录一下。本文基于AndroidStudio进行开发的。

第1步 阅读官方文档

微信官方文档
通过文档,我们要申请微信开发者平台和微信公众号要区别),对开发者资质进行认证。还有重要一点交费!!!

第2步 填写App基本信息,获取APPID

填写App信息时候,要注意下面几点:

  • 应用包名要保持一致.
    要确定填写应用包名和App项目配置文件AndroidManifest.xml中声明的package值、项目中build.gradle文件中applicationId都保持一致。
    build.gradle文件
    AndroidManifest.xml文件

  • 应用签名:32位的md5串(数字小写
    可以用微信签名工具获取md5值,也可以用keytool 命令进行编译查看md5值。重要一点:该处填写 release签名(后缀名.jks)。

请注意以上2点,否则,会导致调起支付报errCode=-1.

第3步 熟悉支付流程

具体看微信业务交互时序图,可以更好理解支付整个流程和逻辑。

第4步 支付SDK依赖
  • 在build.gradle文件中,添加如下依赖即可:
//下面依赖根据业务需要,任选其一
dependencies {
   //包含统计功能
   compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
   //不包含统计功能
   compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
  • 权限配置
<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"/>
第5步 配置AS工程

在项目中增加一个wxapi包名,同时必须有WXPayEntryActivity这个类名,否则无法调起微信支付。建议:WXPayEntryActivity直接从demo中copy过来,减少不必要的麻烦。同时,包名的路径和AndroidManifest.xml文件中WXPayEntryActivity配置如图:
包名的路径
WXPayEntryActivity配置

第6步 支付请求代码
  • 注册appId
    在需要调起支付Activity的onCreate()方法中进行注册appId.
 IWXAPI wxApi= WXAPIFactory.createWXAPI(context, null);
 wxApi.registerApp(appId);
  • 发起支付
public void getWXpayOrderInfo(WXPayBean wxPayBean) {
        PayReq req = new PayReq();
        //wxPayBean是根据服务器返回json数据生成bean实体对象
        req.appId = wxPayBean.getAppid();
        req.partnerId = wxPayBean.getMch_id();
        req.prepayId = wxPayBean.getPrepay_id();
        req.nonceStr = wxPayBean.getNonce_str();
        req.timeStamp = String.valueOf(wxPayBean.getTimestamp());
        req.packageValue ="Sign=WXPay";
        req.sign =CommonUtils.getSign(wxPayBean,req.timeStamp);
        //发起支付请求
        wxApi.sendReq(req);
    }
  • 注意: sign值 服务器端应该如下规则进行加密:
    签名算法

  • 调起支付接口参数说明
    参数说明

第7步 WXPayEntryActivity配置
public class WXPayEntryActivity extends BaseActivity implements IWXAPIEventHandler {
    private IWXAPI api;

      @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        api = App.getWXApi();
        api.handleIntent(getIntent(), this);

    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        api.handleIntent(intent, this);
    }
    @Override
    public void onReq(BaseReq baseReq) {
    }
    @Override
    public void onResp(BaseResp resp) {
      if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){
          switch (resp.errCode) {
             case BaseResp.ErrCode.ERR_OK://成功

              break;
            case BaseResp.ErrCode.ERR_USER_CANCEL://取消支付

              break;
             case BaseResp.ErrCode.ERR_COMM:// -1

             break;
          }
      }
   }
}

至此,支付接入流程已完成了。

支付接入注意点

  • 微信开放平台签名的问题
    只要你手机上的程序的签名和你在微信平台登记的签名一致即可,无论是debug版本,还是release版本都可以调起支付成功。如果你使用debug签名,记得正式上线的时候,去微信开发平台改成release版本的签名(可能需要一段时间才会生效)。如果你使用release签名,不需要测试支付功能打包,在bulid.gradle文件加如下代码:
    release签名

  • 微信支付同一订单不会第二次跳到支付页面 提示支付失败,同一订单第二次支付的时候直接在请求遇支付订单的时候就会返回preayid为null。

  • 微信支付同一订单只能绑定一个价格,如果已经生成过则获取到的prepareid为null ,不可以调起支付。
对于Android应用接入微信支付,您需要按照以下步骤进行操作: 1. 在微信支付开放平台注册账号并登录。前往微信支付开放平台(https://pay.weixin.qq.com/)注册一个账号,并进行登录。 2. 创建应用并获取应用ID。在开放平台创建一个应用,并获取到对应的应用ID,这是后续接入过程中的重要标识。 3. 配置应用信息。在应用管理页面填写应用的基本信息,包括应用名称、AppID、支付回调URL等。确保信息填写准确无误。 4. 下载SDK和文档。在开放平台下载对应的微信支付SDK和接入文档,以便后续进行接入操作。 5. 导入SDK到Android项目。将下载的微信支付SDK导入到您的Android项目中,可以使用Gradle或手动导入的方式进行集成。 6. 配置权限和签名。在AndroidManifest.xml文件中添加必要的权限声明,并确保应用的签名信息与在微信支付开放平台注册时填写的一致。 7. 实现支付功能。根据微信支付开放平台提供的接入文档,按照要求实现支付功能的相关代码逻辑。 8. 发起支付请求。在合适的时机,通过调用微信支付SDK提供的API发起支付请求,并传递必要的订单信息和回调参数。 9. 处理支付结果回调。在您的应用中处理微信支付结果的回调通知,根据返回的支付结果状态进行相应的处理操作。 10. 测试和上线。在开发阶段进行测试,确保支付流程和结果正常。待测试通过后,提交应用上线并进行发布。 请注意,以上只是一个大致的流程概述,具体的接入步骤和代码实现会因应用的具体需求和技术栈而有所差异。建议您仔细阅读微信支付开放平台提供的官方文档,并根据文档中的指引进行接入操作。如果遇到问题,可以参考文档中的常见问题解答或联系微信支付开放平台的技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值