微信APP支付转小程序支付

2019-10-22  本文已影响0人  will666

思路概述:

商户APP跳转到商户小程序,跳转时附带支付参数,小程序内下单做支付。支付完成后,回调商户APP带回支付结果,APP展示支付结果。

功能要点:

1,APP跳转微信小程序(附带参数)
2,小程序获取用户open_id
3,小程序处理(支付参数)
4,小程序下单做支付
5,小程序返回APP

APP跳转微信小程序

配置准备:

//微信建议应用启动时调用
[WXApi registerApp:@"wx_app_id"];//wx_app_id 为移动应用的appid
...
...
...
//跳转小程序部分
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
launchMiniProgramReq.userName = @"gh_4fxxxxxx";  //待拉起的小程序原始Id 
launchMiniProgramReq.path = @"pages/index/index?query='test'";    ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
launchMiniProgramReq.miniProgramType = WXMiniProgramTypePreview; //拉起小程序的类型
[WXApi sendReq:launchMiniProgramReq];
...
...
...

小程序返回APP 回调需实现以下代码

-(void)onResp:(BaseResp*)resp{
    
    if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]])
    {
//        NSString *string = resp.extMsg;
        // 对应JsApi navigateBackApplication中的extraData字段数据
    }
}

小程序获取用户open_id

1,小程序调用接口 获取登录凭证(code)
2,使用 code 换取 openid 和 session_key 等信息,后台调用接口 获取openID

小程序处理

1,接收APP传来的参数
上面的App打开的path是'path/index',所以需要把App的onLaunch事件定义在page/index.js上


image.png

这里的options.scene是1069,这个场景id表示从app打开。
options.query.key1和options.query.key2就是app打开小程序传递的参数。
2,下单,
3,发起支付
调用wx.requestPayment(OBJECT)发起微信支付,见官方说明

4,关闭小程序,回到APP

官方说明

<button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打开APP</button>

Page({
  launchAppError (e) {
    console.log(e.detail.errMsg)
  }
})

注意
APP端需要设置正确URL scheme才能从微信正确回调。

image.png
上一篇下一篇

猜你喜欢

热点阅读