تكامل WeChat JSSDK مع NodeJS وWeb تكامل WeChat JS-SDK مع NodeJS وWeb.
الإنجليزية |. ملاحظات الإصدار
npm install wechat-jssdk --save
# 或者
yarn add wechat-jssdk
const { Wechat } = require ( 'wechat-jssdk' ) ;
const wx = new Wechat ( wechatConfig ) ;
wechatConfig
بالتنسيق التالي:
{
//第一个为设置网页授权回调地址
wechatRedirectUrl : "http://yourdomain.com/wechat/oauth-callback" ,
wechatToken : "xxx" , //第一次在微信控制台保存开发者配置信息时使用
appId : "xxx" ,
appSecret : "xxx" ,
card : true , //开启卡券支持,默认关闭
payment : true , //开启支付支持,默认关闭
merchantId : '' , //商户ID
paymentSandBox : true , //沙箱模式,验收用例
paymentKey : '' , //必传,验签密钥,TIP:获取沙箱密钥也需要真实的密钥,所以即使在沙箱模式下,真实验签密钥也需要传入。
//pfx 证书
paymentCertificatePfx : fs . readFileSync ( path . join ( process . cwd ( ) , 'cert/apiclient_cert.p12' ) ) ,
//默认微信支付通知地址
paymentNotifyUrl : `http://your.domain.com/api/wechat/payment/` ,
//小程序配置
"miniProgram" : {
"appId" : "mp_appid" ,
"appSecret" : "mp_app_secret" ,
}
}
تحتوي الإعدادات المدعومة الأخرى على قيم افتراضية، وهي في الأساس عناوين WeChat API ولن تتغير. يمكنك التحقق من ./lib/config.js
.
1. انتقل إلى منصة WeChat العامة
قم بتنزيل ملف مثل MP_verify_XHZon7GAGRdcAFxx.txt
ووضعه في الدليل الجذر لموقع الويب، مثل http://yourdomain.com/MP_verify_XHZon7GAGRdcAFxx.txt
وسيقوم WeChat بالتحقق من الرابط.
2. ثم قم بتوفير واجهة في تطبيق Express/koa الخاص بك للمتصفح للحصول على معلومات التحقق، @انظر العرض التوضيحي
//express app:
router . get ( '/get-signature' , ( req , res ) => {
wx . jssdk . getSignature ( req . query . url ) . then ( signatureData => {
res . json ( signatureData ) ;
} ) ;
} ) ;
//koa2/koa-router app:
router . get ( '/get-signature' , async ctx => {
ctx . body = await wx . jssdk . getSignature ( ctx . request . query . url ) ;
} ) ;
3. بعد الحصول على التوقيع، انتقل إلى الخطوة التالية لكيفية استخدام المتصفح.
const WechatJSSDK = require ( 'wechat-jssdk/dist/client.umd' ) ;
//ES6 import
import WechatJSSDK from 'wechat-jssdk/dist/client.umd' ;
//没有打包的话直接script扔到html,然后从`window`获取, e.g:
const wechatObj = new window . WechatJSSDK ( config )
يجب أن يكون config
:
const config = {
//前4个是微信验证签名必须的参数,第2-4个参数为类似上面 '/get-signature' 从node端获取的结果
'appId' : 'xxx' ,
'nonceStr' : 'xxx' ,
'signature' : 'xxx' ,
'timestamp' : 'xxx' ,
//下面为可选参数
'debug' : true , //开启 debug 模式
'jsApiList' : [ ] , //设置所有想要使用的微信jsapi列表, 默认值为 ['updateAppMessageShareData','updateTimelineShareData','onMenuShareTimeline', 'onMenuShareAppMessage'],分享到朋友圈及聊天记录
'customUrl' : '' //自定义微信js链接
}
const wechatObj = new WechatJSSDK ( config ) ;
wechatObj . initialize ( )
. then ( w => {
//set up your share info, "w" is the same instance as "wechatObj"
} )
. catch ( err => {
console . error ( err ) ;
} ) ;
بعد التحقق من التوقيع بنجاح، يمكنك تخصيص محتوى المشاركة الخاص بك:
افتراضيًا، يقوم sdk بتسجيل
updateAppMessageShareData
وupdateTimelineShareData
وonMenuShareTimeline(wx即将废弃)
وonMenuShareAppMessage(wx即将废弃)
//自定义分享到聊天窗口
//内部调用 `wechatObj.callWechatApi('updateAppMessageShareData', {...})`, 语法糖而已
wechatObj . updateAppMessageShareData ( {
type : 'link' ,
title : 'title' ,
link : location . href ,
imgUrl : '/logo.png' ,
desc : 'description' ,
success : function ( ) { } ,
fail : function ( ) { } ,
complete : function ( ) { } ,
cancel : function ( ) { }
} ) ;
//自定义分享到朋友圈
//语法糖
wechatObj . updateTimelineShareData ( {
type : 'link' ,
title : 'title' ,
link : location . href ,
imgUrl : '/logo.png'
} ) ;
للحصول على كائن WeChat الأصلي wx
، يمكنك الحصول عليه من خلال wechatObj.getOriginalWx()
.
إذا فشلت عملية التحقق الأولى، يمكنك تحديث معلومات التوقيع في رد اتصال error
وإعادة إرسال طلب التحقق:
wechatObj.signSignature(newSignatureConfig);
يحتاج newSignatureConfig
إلى أن يحتوي فقط على:
{
'nonceStr': 'xxx',
'signature': 'xxx',
'timestamp': 'xxx',
}
اتصل بواجهات WeChat الأخرى:
wechatObj.callWechatApi(apiName, apiConfig)
apiName
و apiConfig
يرجى الرجوع إلى وثائق واجهة WeChat الرسمية.
عناوين URL الافتراضية التي تم إنشاؤها لتفويض WeChat هي wx.oauth.snsUserInfoUrl
و wx.oauth.snsUserBaseUrl
، وعنوان URL الافتراضي لرد الاتصال هو wechatRedirectUrl
الذي تم تكوينه في wechatConfig
. يمكنك أيضًا تخصيص رد الاتصال عن طريق استدعاء wx.oauth. generateOAuthUrl(customUrl, scope, state)
عنوان
//callback url handler
//如"wechatRedirectUrl"配置为 "http://127.0.0.1/wechat/oauth-callback", 你的路由需要为:
router . get ( '/wechat/oauth-callback' , function ( req , res ) {
//得到code,获取用户信息
wx . oauth . getUserInfo ( req . query . code )
. then ( function ( userProfile ) {
console . log ( userProfile )
res . render ( "demo" , {
wechatInfo : userProfile
} ) ;
} ) ;
} ) ;
نصيحة: تأكد من تعيين اسم مجال عنوان إعادة التوجيه أعلاه في إعدادات عنوان رد الاتصال المعتمد في WeChat.
تعيين card: true
في wechatConfig لدعم الدعم من جانب الخادم لوظائف البطاقة والقسيمة، راجع العرض التوضيحي.
لعرض واجهات برمجة التطبيقات (APIs) للبطاقات والقسائم، راجع واجهات برمجة التطبيقات (APIs) للبطاقات
تعيين payment: true
في wechatConfig لدعم الدعم من جانب الخادم لوظيفة الدفع WeChat، يلزم أيضًا تعيين التكوينات الضرورية الأخرى للدفع معًا.
العرض المرجعي.
لعرض واجهات برمجة تطبيقات الدفع، راجع واجهات برمجة تطبيقات الدفع
استخدم الدعم من جانب الخادم للبرنامج الصغير (انظر الواجهة)، وقم بتعيين appId
و appSecret
للبرنامج الصغير في التكوين:
const { Wechat , MiniProgram } = require ( 'wechat-jssdk' ) ;
const wechatConfig = {
"appId" : "appid" ,
"appSecret" : "app_secret" ,
//...other configs
//...
//小程序配置
"miniProgram" : {
"appId" : "mp_appid" ,
"appSecret" : "mp_app_secret" ,
}
} ;
const wx = new Wechat ( wechatConfig ) ;
//调用小程序接口
wx . miniProgram . getSession ( 'code' ) ;
//手动实例化 MiniProgram
const miniProgram = new MiniProgram ( {
miniProgram : {
"appId" : "mp_appid" ,
"appSecret" : "mp_app_secret" ,
}
} )
يُستخدم المتجر لتخصيص استمرارية رمز التخزين (مثل الملفات وقواعد البيانات وما إلى ذلك) وتنفيذ المتجر الخاص بك، يرجى الاطلاع على واجهة برمجة التطبيقات.
يأتي مع المتجر: FileStore
، MongoStore
، الافتراضي هو FileStore
، المخزن في ملف wechat-info.json
.
عرض ويكي API
بعد الإصدار 3.1.0، تضيف الصفحة التجريبية اختبارات حالة استخدام للقسائم والمدفوعات، انسخ demo/wechat-config-sample.js
إلى demo/wechat-config.js
،
ثم قم بتعديل appId
و appSecret
والتكوينات الأخرى مثل تكوينات الدفع إذا كنت بحاجة إلى استخدام وظيفة الدفع.
قم بتعيين appId
الخاص بك و appSecret
في ./demo/index.js
، ثم npm start
أو npm run dev
، واستخدام أدوات مطور WeChat للاختبار.
إذا وجدت هذا المشروع مفيدًا، فاشتري لي قهوة
معهد ماساتشوستس للتكنولوجيا @ 2016 إلى الوقت الحاضر جيسون