跳到主要内容

打开微信小程序

APP端要能调起微信小程序,需要做简单的代码改造。 下面以安卓端开发为例作介绍:

  1. 项目配置 在微信移动应用开发平台配置好的包名下新建目录wxapi,并将WXEntryActivity拷贝到下面: 工程配置
    并将如下内容拷贝到AndroidManifest.xml

<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:taskAffinity="com.ikudot.frog">
</activity>

注:将包名改成自己的包名

  1. 创建订单并返回 业务系统需调用 订单预支付接口 并将返回值返回客户端APP,应用APP获取到token和唤起小程序的关键参数。
参数说明
appId小程序appId
originAppId小程序原始appId
path小程序打开路径
token订单验证token
  1. 封装RequestParamss启动WXEntryActivity RequestParams参数说明:
参数类型说明
appIdString移动应用AppId
miniProgramOriginIdString小程序原始appId
pathString小程序打开路径
tokenString订单验证token
notifyActivityString支付结果回调Activity全类名
RequestParams requestParams = new RequestParams(result.getString("appId"),result.getString("originAppId"),result.getString("path"),result.getString("token"),"com.ikudot.frog.ResultActivity");
WXEntryActivity.actionStart(activity,requestParams);
  1. WXEntryActivity跳转小程序支付
WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
// 填小程序原始id
req.userName = requestParams.getMiniProgramOriginId();
//拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
req.path = requestParams.getPath() + "?token=" + requestParams.getToken();
//req.miniprogramType = WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_TEST;// 可选打开 开发版,体验版和正式版
//req.miniprogramType = WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW;// 可选打开 开发版,体验版和正式版
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
api.sendReq(req);

可选择跳转小程序开发版(MINIPROGRAM_TYPE_TEST),体验版(MINIPROGRAM_TYPE_PREVIEW),正式版(MINIPTOGRAM_TYPE_RELEASE),建议调试时跳转开发版或者体验版。

  1. 接收小程序回调结果
if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) 
{
WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
String extraData = launchMiniProResp.extMsg; //对应小程序组件 <button open-type="launchApp"> 中的 app-parameter 属性
Log.d(TAG, "onResp: " + extraData);
try
{
Class clazz = Class.forName(requestParams.getNotifyActivity());
Intent intent = new Intent(this, clazz);
intent.putExtra("response", extraData);
startActivity(intent);
finish();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
Toast.makeText(this, "回调activity不存在,请检查全类名是否正确", Toast.LENGTH_SHORT).show();
finish();
}
}

支付小程序将回调一个字符串extraData给WxEntryActivity,值为"true"或"false" 标记此订单是否支付成功,然后WxEntryActivity将携带此参数启动指定接收回调结果的Activity。

可参考微信官方文档: