思路概述:
商戶APP跳轉到商戶小程序丁鹉,跳轉時附帶支付參數(shù)喂江,小程序內(nèi)下單做支付恳不。支付完成后,回調(diào)商戶APP帶回支付結果开呐,APP展示支付結果烟勋。
功能要點:
1,APP跳轉微信小程序(附帶參數(shù))
2筐付,小程序獲取用戶open_id
3卵惦,小程序處理(支付參數(shù))
4,小程序下單做支付
5瓦戚,小程序返回APP
APP跳轉微信小程序
配置準備:
在微信開放平臺上有賬號而且有通過的移動應用。
-
在微信公眾平臺有賬號而且有小程序较解,最好發(fā)布為體驗版本
在微信開放平臺把對應的移動應用和小程序建立關聯(lián)
調(diào)用代碼
示例代碼:
//微信建議應用啟動時調(diào)用
[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 部分啡捶,來實現(xiàn)傳參效果,如:傳入 "?foo=bar"奸焙。
launchMiniProgramReq.miniProgramType = WXMiniProgramTypePreview; //拉起小程序的類型
[WXApi sendReq:launchMiniProgramReq];
...
...
...
小程序返回APP 回調(diào)需實現(xiàn)以下代碼
-(void)onResp:(BaseResp*)resp{
if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]])
{
// NSString *string = resp.extMsg;
// 對應JsApi navigateBackApplication中的extraData字段數(shù)據(jù)
}
}
小程序獲取用戶open_id
1,小程序調(diào)用接口 獲取登錄憑證(code)
2,使用 code 換取 openid 和 session_key 等信息瞎暑,后臺調(diào)用接口 獲取openID
小程序處理
1彤敛,接收APP傳來的參數(shù)
上面的App打開的path是'path/index',所以需要把App的onLaunch事件定義在page/index.js上
這里的options.scene是1069,這個場景id表示從app打開了赌。
options.query.key1和options.query.key2就是app打開小程序傳遞的參數(shù)墨榄。
2,下單勿她,
3袄秩,發(fā)起支付
調(diào)用wx.requestPayment(OBJECT)發(fā)起微信支付,見官方說明
4逢并,關閉小程序播揪,回到APP
<button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打開APP</button>
Page({
launchAppError (e) {
console.log(e.detail.errMsg)
}
})
注意
APP端需要設置正確URL scheme才能從微信正確回調(diào)。