• This repository has been archived on 20/Feb/2023
  • Stars
    star
    2,912
  • Rank 15,580 (Top 0.4 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created about 9 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🚀 WeChat login, share, favorite and payment for React-Native on iOS and Android platforms (QQ: 336021910)

React-Native-Wechat

React Native bridging library that integrates WeChat SDKs:

  • iOS SDK 1.7.2
  • Android SDK 221

react-native-wechat has the following tracking data in the open source world:

NPM Dependency Downloads Build
NPM version Dependency Status Downloads Build Status

Table of Contents

Getting Started

API Documentation

react-native-wechat uses Promises, therefore you can use Promise or async/await to manage your dataflow.

registerApp(appid)

  • appid {String} the appid you get from WeChat dashboard
  • returns {Boolean} explains if your application is registered done

This method should be called once globally.

import * as WeChat from 'react-native-wechat';

WeChat.registerApp('appid');

registerAppWithDescription(appid, description)

  • appid {String} the appid you get from WeChat dashboard
  • description {String} the description of your app
  • returns {Boolean} explains if your application is registered done

This method is only available on iOS.

isWXAppInstalled()

  • returns {Boolean} if WeChat is installed.

Check if the WeChat app is installed on the device.

isWXAppSupportApi()

  • returns {Boolean} Contains the result.

Check if wechat support open url.

getApiVersion()

  • returns {String} Contains the result.

Get the WeChat SDK api version.

openWXApp()

  • returns {Boolean}

Open the WeChat app from your application.

sendAuthRequest([scope[, state]])

  • scope {Array|String} Scopes of auth request.
  • state {String} the state of OAuth2
  • returns {Object}

Send authentication request, and it returns an object with the following fields:

field type description
errCode Number Error Code
errStr String Error message if any error occurred
openId String
code String Authorization code
url String The URL string
lang String The user language
country String The user country

class ShareMetadata

  • title {String} title of this message.
  • type {Number} type of this message. Can be {news|text|imageUrl|imageFile|imageResource|video|audio|file}
  • thumbImage {String} Thumb image of the message, which can be a uri or a resource id.
  • description {String} The description about the sharing.
  • webpageUrl {String} Required if type equals news. The webpage link to share.
  • imageUrl {String} Provide a remote image if type equals image.
  • videoUrl {String} Provide a remote video if type equals video.
  • musicUrl {String} Provide a remote music if type equals audio.
  • filePath {String} Provide a local file if type equals file.
  • fileExtension {String} Provide the file type if type equals file.

shareToTimeline(message)

  • message {ShareMetadata} This object saves the metadata for sharing
  • returns {Object}

Share a ShareMetadata message to timeline(朋友圈) and returns:

name type description
errCode Number 0 if authorization successed
errStr String Error message if any error occurred

The following examples require the 'react-native-chat' and 'react-native-fs' packages.

import * as WeChat from 'react-native-wechat';
import fs from 'react-native-fs';
let resolveAssetSource = require('resolveAssetSource');

// Code example to share text message:
try {
  let result = await WeChat.shareToTimeline({
    type: 'text', 
    description: 'hello, wechat'
  });
  console.log('share text message to time line successful:', result);
} catch (e) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw e;
  }
}

// Code example to share image url:
// Share raw http(s) image from web will always fail with unknown reason, please use image file or image resource instead
try {
  let result = await WeChat.shareToTimeline({
    type: 'imageUrl',
    title: 'web image',
    description: 'share web image to time line',
    mediaTagName: 'email signature',
    messageAction: undefined,
    messageExt: undefined,
    imageUrl: 'http://www.ncloud.hk/email-signature-262x100.png'
  });
  console.log('share image url to time line successful:', result);
} catch (e) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw e;
  }
}

// Code example to share image file:
try {
  let rootPath = fs.DocumentDirectoryPath;
  let savePath = rootPath + '/email-signature-262x100.png';
  console.log(savePath);
  
  /*
   * savePath on iOS may be:
   *  /var/mobile/Containers/Data/Application/B1308E13-35F1-41AB-A20D-3117BE8EE8FE/Documents/email-signature-262x100.png
   *
   * savePath on Android may be:
   *  /data/data/com.wechatsample/files/email-signature-262x100.png
   **/
  await fs.downloadFile('http://www.ncloud.hk/email-signature-262x100.png', savePath);
  let result = await WeChat.shareToTimeline({
    type: 'imageFile',
    title: 'image file download from network',
    description: 'share image file to time line',
    mediaTagName: 'email signature',
    messageAction: undefined,
    messageExt: undefined,
    imageUrl: "file://" + savePath // require the prefix on both iOS and Android platform
  });
  console.log('share image file to time line successful:', result);
} catch (e) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw e;
  }
}

// Code example to share image resource:
try {
  let imageResource = require('./email-signature-262x100.png');
  let result = await WeChat.shareToTimeline({
    type: 'imageResource',
    title: 'resource image',
    description: 'share resource image to time line',
    mediaTagName: 'email signature',
    messageAction: undefined,
    messageExt: undefined,
    imageUrl: resolveAssetSource(imageResource).uri
  });
  console.log('share resource image to time line successful', result);
}
catch (e) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw e;
  }
}

// Code example to download an word file from web, then share it to WeChat session
// only support to share to session but time line
// iOS code use DocumentDirectoryPath
try {
  let rootPath = fs.DocumentDirectoryPath;
  let fileName = 'signature_method.doc';
  /*
   * savePath on iOS may be:
   *  /var/mobile/Containers/Data/Application/B1308E13-35F1-41AB-A20D-3117BE8EE8FE/Documents/signature_method.doc
   **/ 
  let savePath = rootPath + '/' + fileName;

  await fs.downloadFile('https://open.weixin.qq.com/zh_CN/htmledition/res/assets/signature_method.doc', savePath);
  let result = await WeChat.shareToSession({
    type: 'file',
    title: fileName, // WeChat app treat title as file name
    description: 'share word file to chat session',
    mediaTagName: 'word file',
    messageAction: undefined,
    messageExt: undefined,
    filePath: savePath,
    fileExtension: '.doc'
  });
  console.log('share word file to chat session successful', result);
} catch (e) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw e;
  }
}

//android code use ExternalDirectoryPath
try {
  let rootPath = fs.ExternalDirectoryPath;
  let fileName = 'signature_method.doc';
  /*
   * savePath on Android may be:
   *  /storage/emulated/0/Android/data/com.wechatsample/files/signature_method.doc
   **/
  let savePath = rootPath + '/' + fileName;
  await fs.downloadFile('https://open.weixin.qq.com/zh_CN/htmledition/res/assets/signature_method.doc', savePath);
  let result = await WeChat.shareToSession({
    type: 'file',
    title: fileName, // WeChat app treat title as file name
    description: 'share word file to chat session',
    mediaTagName: 'word file',
    messageAction: undefined,
    messageExt: undefined,
    filePath: savePath,
    fileExtension: '.doc'
  });
  console.log('share word file to chat session successful', result);
}
catch (e) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw e;
  }
}

shareToSession(message)

  • message {ShareMetadata} This object saves the metadata for sharing
  • returns {Object}

Similar to shareToTimeline but sends the message to a friend or chat group.

pay(payload)

  • payload {Object} the payment data
    • partnerId {String} 商家向财付通申请的商家ID
    • prepayId {String} 预支付订单ID
    • nonceStr {String} 随机串
    • timeStamp {String} 时间戳
    • package {String} 商家根据财付通文档填写的数据和签名
    • sign {String} 商家根据微信开放平台文档对数据做的签名
  • returns {Object}

Sends request for proceeding payment, then returns an object:

name type description
errCode Number 0 if authorization successed
errStr String Error message if any error occurred

Installation

$ npm install react-native-wechat --save

Partners

React Native Starter Kit - is a mobile starter kit that allows your team to fully focus on development of the features that set your product apart from the competitors instead of building your app from scratch.

Community

IRC

Tutorials

Who's using it

Authors

GitHub Role Email
@yorkie Author [email protected]
@xing-zheng Emeriti
@tdzl2003 Emeriti [email protected]

License

MIT

More Repositories

1

tensorflow-nodejs

TensorFlow Node.js provides idiomatic JavaScript language bindings and a high layer API for Node.js users. TensorFlow Node.js provides idiomatic JavaScript language bindings and a high layer API for Node.js users.
JavaScript
578
star
2

rust.js

Run your JavaScript apps backed by Rust
Rust
150
star
3

me

CV at Github and Notes based on Issues
70
star
4

lv

compile your JavaScript to native code in pure JavaScript
Roff
19
star
5

serve

a tiny server for serving static files and website, no any other runtime required based on mongoose.
C
18
star
6

node-orgmode

The orgmode implementation for Node.js which contains a search engine and a parser written in Parser Combinator
JavaScript
16
star
7

ios-tbb

Thread Building Block for iOS and iOS Simulator
C++
8
star
8

yorkie.github.io

yorkie site
HTML
8
star
9

uv-mongo

async mongo library based on libuv and clibs
C
8
star
10

rust-imap

an imap implementation for rust
Rust
7
star
11

express-model

deprecated project
JavaScript
5
star
12

node-ifconfig-parser

ifconfig text parser
JavaScript
5
star
13

ikanbao.fm

电子报在线阅读第三方平台 based on Express.js
JavaScript
5
star
14

watjs

Write WebAssembly Text Format Files(.wat) in JavaScript
JavaScript
4
star
15

node-ifconfig

ifconfig port for nodejs
JavaScript
3
star
16

stream-slice

slice stream like buffer/string
JavaScript
3
star
17

node-loaderio

loader.io api wrapper for nodejs
JavaScript
3
star
18

node-naoqi

Connects NAOqi robots in Node.js
JavaScript
3
star
19

node-sexp

Creates symboltic-expression builder in JavaScript.
JavaScript
3
star
20

node-gitlog-parser

parse git log stream(Readable)
JavaScript
3
star
21

node-httpmocker

configurable HTTP/s stubbed-tool for nodejs
JavaScript
2
star
22

browser-cli

A html render in your shell
JavaScript
2
star
23

node-bypass

config your bypass of proxy by using `networksetup` tool
JavaScript
2
star
24

node-x509-builder

x509 certificate builder from buffer(tls)
JavaScript
2
star
25

name-your-function

Just rename your anonymous function in ES6.
JavaScript
2
star
26

rsync-ignore

It helps rsync to parse a `.rsyncignore` file for a project like other `.gitignore` and `.npmignore`.
JavaScript
2
star
27

nasm-example

just a example for learning nasm
Assembly
2
star
28

ADBHttpRequest

A XMLHttpRequest re-implementation that based on the ADB transfer
1
star
29

node-get-signal

cross-platform system signal tool for nodejs
JavaScript
1
star
30

JTLS

TLS implementation in pure javascript
JavaScript
1
star
31

node-tls-header

Generating TLS Header in pure javascript.
JavaScript
1
star
32

node-buffer24

node buffer extension: support 24bit operators
JavaScript
1
star
33

node-mongoose-connectionstate

a little gateway to mongoose state
JavaScript
1
star
34

node-mongo-url

mongo url generator for nodejs
JavaScript
1
star
35

process-once.node

The `pthread_once(3)` binding to the Node.js community.
C++
1
star
36

node-rainbow-console

colorize your console for NodeJS
JavaScript
1
star
37

nginx-lang-redirect.lua

The Lua Script for supporting language redirections working with proxy_pass for Nginx/OpenResty
Lua
1
star
38

chrome.sh

Chrome Shortcut for opening url with your Terminal
Shell
1
star
39

FlashDB

A database system for providing a local, fast, convenient accessor, which can query, extend and remove. And it's support Multi-keys.
1
star
40

esprima-to-value

convert an esprima ast object/literal to an real object
JavaScript
1
star
41

node-comongo

mongo coroutinue library for nodejs
JavaScript
1
star
42

node-hash-array

hashify array and get element by its key
JavaScript
1
star
43

node-ext2type

convert extension of the path to the http Content-Type format, like application/xml, application/json.
JavaScript
1
star