快速DEMO

用户对接与支付DEMO演示

用户对接与支付DEMO代码


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>云城H5</title>
  <script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
  <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script>
  <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
  <script src="./vconsole.min.js"></script>
  <script src="http://oss-ydpt-a-szzb.oss-cn-shenzhen.aliyuncs.com/static/yc-jssdk.js"></script>
  <script>var vConsole = new VConsole();</script>
  <style>
    body {font-size: 16px;padding: 0;margin: 0;}
        .page {width: 100%;height: 100%;background-color: #fff;padding: 1rem;overflow-x: hidden;overflow-y: scroll;}
        p {font-size: 1.5rem;line-height: 1.5rem;margin: 1rem 0;}
        .res {font-size: 0.75rem;color: #999;}
        .btn {border: 1px solid #000;margin: 10px;width: 200px;text-align: center;}
        .btn:active {background: #eee;}
    .item {width: 100%;}
    label {width: 10rem;color:#999;}
    .value {width: 200px;}
  </style>
</head>
<body>
    <div id="app" class="page">
      <div class="btn" @click="getAccessTokenQuckily()">用户对接</div>
      <div class="btn" @click="payOrder()">云城支付payOrder</div>
      <div class="btn" @click="queryPayResult()">查询订单queryPayResult</div>
      <p class="res">请求参数</p>
      <p id="res" class="res"></p>
      <p class="res">请求结果</p>
      <p id="res" class="res"></p>
          <!-- <div class="btn" onclick="testAppInfo()">testAppInfo</div> -->
    </div>
  <script>
  function getParams(url) {
        var result = {};
        url = decodeURIComponent(url);
        if (url.indexOf('?') > 0) {
            var strParams = url.split('?')[1];
            if (strParams.indexOf('#') > 0) {
                strParams = url.split('#')[0];
            }
            var arrParams = strParams.split('&');
            for (var i = 0; i < arrParams.length; i++) {
                var params = arrParams[i].split('=');
                if (params[0] != '') {
                    result[params[0]] = params[1];
                }
            }
        }
        return result;
    };

    let app = new Vue({
      el: '#app',
      data: {
        code: '',
        accessToken: '',
        openid: '',
        infor: '~',
        infor1: '~',
      },
      created() {
        let opt = getParams(window.location.href);
        this.infor = window.location.href;
        this.code = opt.code;
        this.domain = opt.endpoint;

        console.log('created ~~~~');
        console.log(window.location.href);
      },
      methods: {
        getAccessTokenQuckily() {
          let params = {
            appkey: '7e950acc09', // 开放平台颁发的appId,需与云城对接
            secret: '0687555********2c87e28f'
          }
          console.log('getServiceTokenInfo->',params);
          /*
            step1: 获取子服务access_token
          */
          yc.getAccessTokenQuckily(params,res=>{
            console.log('getServiceTokenInfo->',res);
            res = JSON.parse(res);
            this.infor1 = res;
            let { access_token, openid } = res.data;
            this.accessToken = access_token;
            this.openid = openid;

            //step2 获取云城用户信息,主要是mobilePhone,此步骤需要在业务后台对接,通过手机号mobilePhone,完成用户对接,返回业务token给子服务
            this.userLogin();
            // this.getUserInfo();
          });
        },
        userLogin() {
          //子服务系统用户对接接口
          //业务流程:app子服务取到accessToken-->业务后台login接口-->云城开放平台查询用户信息uaa/sns/userinfo取手机号
          let url = 'http://api-ioc-h.icloudcity.com/mobile/gateway/auth/ioc';
          let opt = {
            "ssoToken": this.accessToken,
            "openid": this.openid,
            "parkCode": "CN_SC_44_003_SZWKYC",
            "appKey": "7e950acc09",
            "secret": "*****************"
          }
          this.infor = opt;
          app.$http.post(url, opt).then(({body})=>{
            //返回业务系统用户信息,及token
            this.infor1 = body;
          })
        },
        getUserInfo() {
          let params = {
            'access_token': this.accessToken,
            'openid': this.openid,
            'lang': 'zh-cn'
          }
          this.infor = params;
          /*
            step2: 获取云城用户信息
          */
          ///uaa/sns/userinfo
          yc.getUserInfo(params, res=>{
            this.infor1 = res;
          })
        },
        payOrder() {
          console.log('payOrder--->');
          try{
            let params = {
              "merchantNo": "MCH100001", //云城app分配的商户号,需与云城app对接
              "amount": "0.01",          //订单金额(0.01-20000),最多2位小数
              "goodsDesc": "凤巢支付  -- 测试环境",  //商品描述,最多20个字符
              "expireTimeMinute": "5", //订单过期时间,单位分钟,不低于5分钟,不高于1440分钟
              "notifyUrl": "https://www.baidu.com",  //支付回调的地址,支付完成后,会回调这个地址(选填)
              "tradeOrderNo": "ODER0000001",    //业务订单号,1-32位,只能为英文、数字、下划线
              "orderSource": "eleme",
              "guaranteeType": "PLATFORM_GUARANTEE",
              "orderRemark":"惠余支付测试"
            }
            this.infor = params;
            yc.payOrder(params,res=>{
              console.log('payOrder->',res);
              this.infor1 = res;
            });
          }catch(e) {
            console.log('payOrder->catch->',e);
          }
        },
        queryPayResult() {
          yc.queryPayResult({
            merchantNo: 'MCH100001',
            tradeOrderNo: 'ODER0000001'
          },res => {
            this.infor1 = res;
            console.log(res);
          })
        },
        scanQRCode() {
          console.log('scanQRCode---->');
          yc.scanQRCode(res=>{
            this.infor1 = res;
            console.log('scanQRCode->',res);
          });
        }
      }
    })
  </script>
  <script>
    function payResult(res){
      console.log('payResult->',res);
      app.infor1 = res;
      let obj = JSON.parse(res);
      app.paymentOrderNo = obj.data.paymentOrderNo;
      // if(ret.code=='0' && ret.data) this.paymentOrderNo=ret.data.paymentOrderNo;
    }
    function queryPayCallback(res){
      console.log('queryPayCallback->',res);
      app.infor1 = res;
    }
    function serviceTokenInfoResult(res){
      app.infor1 = res;
      var obj = JSON.parse(res);
      if(obj.code=='0'){
        let url = 'http://icloudcityuat.vanke.com/gardener-test-server/uaa/sns/userinfo';
        let opt = {access_token:obj.data.access_token,openid:obj.data.openid,lang:'zh-cn'};
        app.infor = opt;
        app.$http.post(url, opt).then((res)=>{
          app.infor1 = res;   
          // alert(res);
        },()=>{
          alert('请求失败处理');
          app.res = '请求失败处理'; 
        });
      }
    }

    function onScanCallback(res) {
      console.log('onScanCallback->',res);
      app.infor1 = res;
    }
  </script>
</body>
</html>

results matching ""

    No results matching ""