feat: android add choose invoice

This commit is contained in:
Tom Xu 2021-01-08 14:13:09 +08:00
parent 8049474db8
commit e8c6f55963
3 changed files with 44 additions and 3 deletions

View File

@ -31,6 +31,7 @@ import com.facebook.react.bridge.WritableMap;
import com.facebook.react.modules.core.DeviceEventManagerModule; import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.tencent.mm.opensdk.modelbase.BaseReq; import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp; import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelbiz.ChooseCardFromWXCardPackage;
import com.tencent.mm.opensdk.modelmsg.SendAuth; import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.modelmsg.SendMessageToWX; import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.modelmsg.ShowMessageFromWX; import com.tencent.mm.opensdk.modelmsg.ShowMessageFromWX;
@ -197,8 +198,29 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv
callback.invoke(null, api.sendReq(req)); callback.invoke(null, api.sendReq(req));
} }
/**
* 选择发票
*
* @param data
* @param callback
*/
@ReactMethod
public void chooseInvoice(ReadableMap data, Callback callback) {
ChooseCardFromWXCardPackage.Req req = new ChooseCardFromWXCardPackage.Req();
req.appId = this.appId;
req.cardType = "INVOICE";
req.timeStamp = String.valueOf(data.getInt("timeStamp"));
req.nonceStr = data.getString("nonceStr");
req.cardSign = data.getString("cardSign");
req.signType = data.getString("signType");
callback.invoke(null, api.sendReq(req));
}
/** /**
* 分享文本 * 分享文本
*
* @param data * @param data
* @param callback * @param callback
*/ */
@ -222,6 +244,7 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv
/** /**
* 分享图片 * 分享图片
*
* @param data * @param data
* @param callback * @param callback
*/ */
@ -255,8 +278,10 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv
} }
// private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().getAbsolutePath(); // private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().getAbsolutePath();
/** /**
* 分享本地图片 * 分享本地图片
*
* @param data * @param data
* @param callback * @param callback
*/ */
@ -318,6 +343,7 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv
/** /**
* 分享音乐 * 分享音乐
*
* @param data * @param data
* @param callback * @param callback
*/ */
@ -365,6 +391,7 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv
/** /**
* 分享视频 * 分享视频
*
* @param data * @param data
* @param callback * @param callback
*/ */
@ -407,6 +434,7 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv
/** /**
* 分享网页 * 分享网页
*
* @param data * @param data
* @param callback * @param callback
*/ */
@ -449,6 +477,7 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv
/** /**
* 分享小程序 * 分享小程序
*
* @param data * @param data
* @param callback * @param callback
*/ */
@ -525,6 +554,7 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv
/** /**
* 一次性订阅消息 * 一次性订阅消息
*
* @param data * @param data
* @param callback * @param callback
*/ */
@ -895,6 +925,10 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv
map.putString("type", "WXLaunchMiniProgramReq.Resp"); map.putString("type", "WXLaunchMiniProgramReq.Resp");
map.putString("extraData", extraData); map.putString("extraData", extraData);
map.putString("extMsg", extraData); map.putString("extMsg", extraData);
} else if (baseResp instanceof ChooseCardFromWXCardPackage.Resp) {
ChooseCardFromWXCardPackage.Resp resp = (ChooseCardFromWXCardPackage.Resp) baseResp;
map.putString("type", "WXChooseInvoiceResp.Resp");
map.putString("cardItemList", resp.cardItemList);
} }
this.getReactApplicationContext() this.getReactApplicationContext()

2
index.d.ts vendored
View File

@ -159,7 +159,7 @@ declare module 'react-native-wechat-lib' {
} }
export function chooseInvoice( export function chooseInvoice(
data?: ChooseInvoice, data: ChooseInvoice,
): Promise<{ errCode?: number; errStr?: string; cards: Invoice[] }>; ): Promise<{ errCode?: number; errStr?: string; cards: Invoice[] }>;
export interface ShareFileMetadata { export interface ShareFileMetadata {

View File

@ -205,11 +205,18 @@ export function shareText(data) {
* @method chooseInvoice * @method chooseInvoice
* @param {Object} data * @param {Object} data
*/ */
export function chooseInvoice(data) { export function chooseInvoice(data = {}) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
nativeChooseInvoice(data); nativeChooseInvoice(data);
emitter.once('WXChooseInvoiceResp.Resp', (resp) => { emitter.once('WXChooseInvoiceResp.Resp', (resp) => {
if (resp.errCode === 0) { if (resp.errCode === 0) {
if (Platform.OS === 'android') {
const cardItemList = JSON.parse(resp.cardItemList);
resp.cards = cardItemList.map((item) => ({
cardId: item.card_id,
encryptCode: item.encrypt_code,
}));
}
resolve(resp); resolve(resp);
} else { } else {
reject(new WechatError(resp)); reject(new WechatError(resp));