资讯动态

武汉微信开发之在微信应用程序中创建C4C账户

标签:   | 作者:admin | VISITORS: | 来源:未知
17
Jan
2018
在武汉微信开发的过程中,我们常常会遇到各种各样的问题,例如:作为成熟的武汉微信开发从业者,我们应该如何在微信应用程序中创建C4C账户?关于这个问题,下面就让武汉微信开发公司的小编来告诉你。


腾讯的微信,社交应用每月有超过7.6亿活跃用户,正在成为一个占主导地位的移动通道连接企业和客户。
在以前的博客我们已经设置Wechat环境开发和构建一些玩具服务熟悉整个过程。
在这个博客中,我们将实现一些功能,与C4C交互系统。
实现包含纯粹nodejs通过Javascript开发,不需要任何C4C发展的一面。
实现的功能
 
我可以点击绿色按钮”关注”(订阅)完成订阅这个帐户。

 
按钮被按下后,我将收到这个测试的欢迎信息自动发送订阅帐户:

 
 
然后将会创建一个新的个人客户通过OData服务C4C配置系统。 一旦创建,我会看到Wechat app ID创建账户:
 
 
创建账户名字是硬编码和姓等于“Wechat”技术的Wechat帐户id执行QRCode扫描活动。 下面的截图是C4C系统中创建帐户。
 
 
具体实现步骤
1。 创建一个配置模块在你nodejs项目使用以下设置:
var config = {
   individualCustomerurl: "https://<host_name>/sap/c4c/odata/v1/c4codata/IndividualCustomerCollection/",
   credential: "<your user name>:<your password>",
   accessToken: "access token of your test subscription account"
};
module.exports = config;
你必须保持一个有效的用户名和密码访问C4C系统创建新的个人客户。
访问令牌将使用当你试图发送消息到一个用户订阅你的微信帐号通过微信Restful API。 它将生成默认情况下2小时后失效。 令牌可以刷新基于appid和秘密。 为了简化目的我只是生成令牌并将其存储在配置文件中。
2。 一次微信用户按下“订阅”按钮时,一个事件与HTTP post发送到微信服务器绑定到你的订阅账户。 因此我们必须对这个post请求,解析微信号,点击“订阅”按钮,并创建一个新的个人客户C4C系统基于这个微信号。
以下是源代码如何应对事件与事件关键“订阅”。
(1)欢迎消息“欢迎来到杰瑞的订阅账户”是硬编码的
(2)用户的微信号存储在变量fromUserName完成订阅
var request = require('request');
var createAccount = require("../service/createAccountInC4C.js");
var getXMLNodeValue = require("../tool/xmlparse.js");
var formattedValue = require("../tool/formatValue.js");
var replyMessage = require("../tool/replyMessage.js");
 
module.exports = function (app) {
  app.route('/').post(function(req,res){
    var _da;
    req.on("data",function(data){
        _da = data.toString("utf-8");
    });
    req.on("end",function(){
        console.log("new http post: " + _da);
        var msgType = formattedValue(getXMLNodeValue('MsgType',_da));
        if( msgType === "event"){
          var event = formattedValue(getXMLNodeValue('Event',_da));
          if( event === "subscribe"){
            var replyxml = replyMessage(_da, "Welcome to Jerry's subscription account");
            var fromUserName = formattedValue(getXMLNodeValue('FromUserName',_da));
            createAccount(fromUserName);
            res.send(replyxml);
          }
        }
    });
  });
};
3所示。 个人客户是由createAccountInC4C.js C4C OData服务中实现模块。
var config = require("../../config.js");
var request = require('request');
var postWCMessage = require("./postMessageToUser.js");
 
var getTokenOptions = {
        url: config.individualCustomerurl,
        method: "GET",
        json:true,
        headers: {
            "content-type": "application/json",
            'Authorization': 'Basic ' + new Buffer(config.credential).toString('base64'),
            "x-csrf-token" :"fetch"
        }
};
 
function getToken() {
  return new Promise(function(resolve,reject){
      var requestC = request.defaults({jar: true});
      requestC(getTokenOptions,function(error,response,body){
       var csrfToken = response.headers['x-csrf-token'];
       if(!csrfToken){
          reject({message:"token fetch error"});
          return;
       }
       resolve(csrfToken);
      }); // end of requestC
     });
}
 
function _createIndividualCustomer(token, fromUserName){
return new Promise(function(resolve, reject){
var oPostData = {
"FirstName":"Wechat",
  "LastName":fromUserName,
  "RoleCode": "ZCRM01",
  "CountryCode": "US",
  "StatusCode": "2"
};
var requestC = request.defaults({jar: true});
        var createOptions = {
              url: config.individualCustomerurl,
              method: "POST",
              json:true,
              headers: {
                  "content-type": "application/json",
                  'x-csrf-token': token
              },
              body:oPostData
        };
        
        requestC(createOptions,function(error,response,data){
            if(error){
                reject(error.message);
            }else {
               resolve(data);
            }
        });// end of requestC
});
}
 
module.exports = function createAccount(fromUserName){
  getToken().then(function(token) {
  console.log("token received: " + token);
  _createIndividualCustomer(token, fromUserName).then(function(data){
    var message = "account created: " + data.d.results.CustomerID;
    console.log(message);
    postWCMessage(fromUserName, message);
  });
});
};
在代码中创建账户的名字是硬编码作为微信最后的名字充满了变量fromUserName从上一步解析。

 
4所示。 一旦个人客户C4C系统中创建成功,一个负责任的消息将被发送到微信订阅用户帐户通知他/她的ID创建帐户。
 
 
这个回答是由Wechat消息实现Restful API:
var config = require("../../config.js");
var request = require("request");
 
function printObject(oData){
for( var a in oData){
console.log("key: " + a);
console.log("value: " + oData[a]);
if( typeof oData[a] === "object"){
printObject(oData[a]);
}
}
}
function sendWCMeaasge(toUser,sMessage){
console.log("begin to send message to user: " + toUser + " with message: " + sMessage);
    var options = {
            url:"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" +
            config.accessToken, 
            method: "POST",
            json:true,
            headers: {
            "content-type": "application/json"},
            body:{
              "touser":toUser,
              "msgtype":"text",
              "text":
              {
                   "content":sMessage
              }
                }
          };
      request(options,function(error,response,data){
        console.log("Status message: " + response.statusMessage);
        console.log("Data: " + data.errmsg);
      });
  }
 
module.exports = sendWCMeaasge;
它非常方便使用Restful API发送消息到一个给定的微信用户订阅的测试账户。 你可以测试它在邮递员:
资讯动态
首页 | 解决案例 | 资讯动态 | 客户服务 | 关于我们
分享按钮