uni-app 微信付款

微信小程序 付款

首先看官方网文本文档 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_2.shtml

了解有那些比不能少的步骤,以后后端开发明确回到的变量值,用以前面付款。变量值务必一一对应,要不然付款会不成功

uni.requestPayment({
        timeStamp: data.timeStamp, //当今的時间
        nonceStr: data.nonceStr, //随机字符串
        package: data.package, //统一提交订单插口回到的 prepay_id 变量值
        signType: data.signType, //签字优化算法,暂适用 MD5。
        paySign: data.paySign, //签字
        success(res) {
            console.log('取得成功', res);    
        },
        fail: (res) => {
            console.log('不成功', res);
        },
})

小程序支付相对性简易。付款的订单信息多要在后端开发转化成。回到订单信息给前面启用付款API

APP付款

app付款方式 和微信小程序基本一致,便是app要配备的地区许多


或是首先看开发设计官方网文本文档,基本的准备好。https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_4.shtml


以后在uni的文件目录中寻找manifest.json 开启 挑选app模卡--付款前边打个勾

 

这里只对微信付款,因此微信付款勾上 ,把微信公众平台的appid 放进相匹配的文本框里边

    //获得服务提供商
    uni.getProvider({
        service: 'payment',
        success: (res) => {
            console.log('getProvider', res) //服务项目:payment
            console.log('服务项目', res.provider) //回到的是 手机微信 支付宝钱包
            //在这儿要求插口取得回到的订单信息数据信息 用以调起付款
            that.sponsorPro(res.data) // 付款 res.data 为后端开发回到的订单信息
            //这一分辨 是不是有手机微信 不必加 真机调节不容易过 检测能够过
            if(res.provider.indexOf('wxpay')){}
        }
    })

进行付款

md5().toUpperCase() 提取签字前30位为 小写转大写

md5为独立的一个js,编码在最终

sponsorPro(data) {
    //data 为后端主要参数
    let info = {
        "appid": data.appId,
        "partnerid": data.mchid,
        "package": 'Sign=WXPay',
        "package": data.package,
        "noncestr": data.noncestr,
        "timestamp": data.timestamp,
        // "sign": data.paySign,
        "sign": md5(data.sign).toUpperCase(),
        }
    console.log('进行付款', info);
    uni.requestPayment({
        provider: 'wxpay',
        signType: "MD5",
        orderInfo: info,
        success(res) {
            console.log('取得成功:'   JSON.stringify(res));
        },
        fail(err) {
            console.log('不成功:'   JSON.stringify(err));
        }
    })
}

info 的主要参数 和官方网回到的主要参数务必一致

分辨手机微信是不是安裝

if (plus.runtime.isApplicationExist({
            pname: 'com.tencent.mm',
            action: 'weixin://'
    })) {
        console.log("微信功能已安裝");
    } else {
        console.log("手机微信应用未安装");
}

可以用上边这一分辨手机微信是不是安裝

官方网详细地址 http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.isApplicationExist

微信付款启用不成功 [payment手机微信:-1]General errors","errCode":-100,"code":-100

payment手机微信:-1 是手机微信的错误码提醒

"errCode":-100," code":-100 为uni-app 错误码提醒

尤其要留意第一次递交日报的是啥不正确,那样对症治疗

如果提醒: 包名(签字)与开发者平台包名(签字)不一致 ,先查验装包的包名(签字)是啥,随后比照与网上的名称一致

 

 

 

APP签名查询专用工具 

下载链接 https://developers.weixin.qq.com/doc/oplatform/Downloads/Android_Resource.html

 

安装下载到手机上 开启 键入包名 签字

要先装包,将你必须获得签字的包安裝到手机,随后安裝签字获得专用工具开启键入包名

 

ios付款

要先建立一个uni-app 账户 启用 云服务器室内空间和启用前面网页页面代管

详细信息看官方网步骤 https://uniapp.dcloud.io/api/plugins/universal-links

 

在加上网站域名日报---设定一个三级域名就行

 

附:md5.js源代码

在网页页面中引入 import md5 from '../../common/md5.js'

form 后边为储放详细地址

/*
 * JavaScript MD5
 * https://GitHub.com/blueimp/JavaScript-MD5
 *
 * Copyright 2011, Sebastian Tschan
 * https://blueimp.net
 *
 * Licensed under the MIT license:
 * https://opensource.org/licenses/MIT
 *
 * Based on
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

/* global define */

;(function ($) {
  'use strict'

  /*
  * Add integers, wrapping at 2^32. This uses 16-bit operations internally
  * to work around bugs in some JS interpreters.
  */
  function safeAdd (x, y) {
    var lsw = (x & c0ffff)   (y & c0ffff)
    var msw = (x >> 16)   (y >> 16)   (lsw >> 16)
    return (msw << 16) | (lsw & c0ffff)
  }

  /*
  * Bitwise rotate a 32-bit number to the left.
  */
  function bitRotateLeft (num, cnt) {
    return (num << cnt) | (num >>> (32 - cnt))
  }

  /*
  * These functions implement the four basic operations the algorithm uses.
  */
  function md5厘米n (q, a, b, x, s, t) {
    return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)
  }
  function md5ff (a, b, c, d, x, s, t) {
    return md5厘米n((b & c) | (~b & d), a, b, x, s, t)
  }
  function md5gg (a, b, c, d, x, s, t) {
    return md5厘米n((b & d) | (c & ~d), a, b, x, s, t)
  }
  function md5hh (a, b, c, d, x, s, t) {
    return md5厘米n(b ^ c ^ d, a, b, x, s, t)
  }
  function md5ii (a, b, c, d, x, s, t) {
    return md5厘米n(c ^ (b | ~d), a, b, x, s, t)
  }

  /*
  * Calculate the MD5 of an array of little-endian words, and a bit length.
  */
  function binlMD5 (x, len) {
    /* append padding */
    x[len >> 5] |= 0x80 << (len % 32)
    x[((len   64) >>> 9 << 4)   14] = len

    var i
    var olda
    var oldb
    var oldc
    var oldd
    var a = 1732584193
    var b = -271733879
    var c = -1732584194
    var d = 271733878

    for (i = 0; i < x.length; i  = 16) {
      olda = a
      oldb = b
      oldc = c
      oldd = d

      a = md5ff(a, b, c, d, x[i], 7, -680876936)
      d = md5ff(d, a, b, c, x[i   1], 12, -389564586)
      c = md5ff(c, d, a, b, x[i   2], 17, 606105819)
      b = md5ff(b, c, d, a, x[i   3], 22, -1044525330)
      a = md5ff(a, b, c, d, x[i   4], 7, -176418897)
      d = md5ff(d, a, b, c, x[i   5], 12, 1200080426)
      c = md5ff(c, d, a, b, x[i   6], 17, -1473231341)
      b = md5ff(b, c, d, a, x[i   7], 22, -45705983)
      a = md5ff(a, b, c, d, x[i   8], 7, 1770035416)
      d = md5ff(d, a, b, c, x[i   9], 12, -1958414417)
      c = md5ff(c, d, a, b, x[i   10], 17, -42063)
      b = md5ff(b, c, d, a, x[i   11], 22, -1990404162)
      a = md5ff(a, b, c, d, x[i   12], 7, 1804603682)
      d = md5ff(d, a, b, c, x[i   13], 12, -40341101)
      c = md5ff(c, d, a, b, x[i   14], 17, -1502002290)
      b = md5ff(b, c, d, a, x[i   15], 22, 1236535329)

      a = md5gg(a, b, c, d, x[i   1], 5, -165796510)
      d = md5gg(d, a, b, c, x[i   6], 9, -1069501632)
      c = md5gg(c, d, a, b, x[i   11], 14, 643717713)
      b = md5gg(b, c, d, a, x[i], 20, -373897302)
      a = md5gg(a, b, c, d, x[i   5], 5, -701558691)
      d = md5gg(d, a, b, c, x[i   10], 9, 38016083)
      c = md5gg(c, d, a, b, x[i   15], 14, -660478335)
      b = md5gg(b, c, d, a, x[i   4], 20, -405537848)
      a = md5gg(a, b, c, d, x[i   9], 5, 568446438)
      d = md5gg(d, a, b, c, x[i   14], 9, -1019803690)
      c = md5gg(c, d, a, b, x[i   3], 14, -187363961)
      b = md5gg(b, c, d, a, x[i   8], 20, 1163531501)
      a = md5gg(a, b, c, d, x[i   13], 5, -1444681467)
      d = md5gg(d, a, b, c, x[i   2], 9, -51403784)
      c = md5gg(c, d, a, b, x[i   7], 14, 1735328473)
      b = md5gg(b, c, d, a, x[i   12], 20, -1926607734)

      a = md5hh(a, b, c, d, x[i   5], 4, -378558)
      d = md5hh(d, a, b, c, x[i   8], 11, -2022574463)
      c = md5hh(c, d, a, b, x[i   11], 16, 1839030562)
      b = md5hh(b, c, d, a, x[i   14], 23, -35309556)
      a = md5hh(a, b, c, d, x[i   1], 4, -1530992060)
      d = md5hh(d, a, b, c, x[i   4], 11, 1272893353)
      c = md5hh(c, d, a, b, x[i   7], 16, -155497632)
      b = md5hh(b, c, d, a, x[i   10], 23, -1094730640)
      a = md5hh(a, b, c, d, x[i   13], 4, 681279174)
      d = md5hh(d, a, b, c, x[i], 11, -358537222)
      c = md5hh(c, d, a, b, x[i   3], 16, -722521979)
      b = md5hh(b, c, d, a, x[i   6], 23, 76029189)
      a = md5hh(a, b, c, d, x[i   9], 4, -640364487)
      d = md5hh(d, a, b, c, x[i   12], 11, -421815835)
      c = md5hh(c, d, a, b, x[i   15], 16, 530742520)
      b = md5hh(b, c, d, a, x[i   2], 23, -995338651)

      a = md5ii(a, b, c, d, x[i], 6, -198630844)
      d = md5ii(d, a, b, c, x[i   7], 10, 1126891415)
      c = md5ii(c, d, a, b, x[i   14], 15, -1416354905)
      b = md5ii(b, c, d, a, x[i   5], 21, -57434055)
      a = md5ii(a, b, c, d, x[i   12], 6, 1700485571)
      d = md5ii(d, a, b, c, x[i   3], 10, -1894986606)
      c = md5ii(c, d, a, b, x[i   10], 15, -1051523)
      b = md5ii(b, c, d, a, x[i   1], 21, -2054922799)
      a = md5ii(a, b, c, d, x[i   8], 6, 1873313359)
      d = md5ii(d, a, b, c, x[i   15], 10, -30611744)
      c = md5ii(c, d, a, b, x[i   6], 15, -1560198380)
      b = md5ii(b, c, d, a, x[i   13], 21, 1309151649)
      a = md5ii(a, b, c, d, x[i   4], 6, -145523070)
      d = md5ii(d, a, b, c, x[i   11], 10, -1120210379)
      c = md5ii(c, d, a, b, x[i   2], 15, 718787259)
      b = md5ii(b, c, d, a, x[i   9], 21, -343485551)

      a = safeAdd(a, olda)
      b = safeAdd(b, oldb)
      c = safeAdd(c, oldc)
      d = safeAdd(d, oldd)
    }
    return [a, b, c, d]
  }

  /*
  * Convert an array of little-endian words to a string
  */
  function binl2rstr (input) {
    var i
    var output = ''
    var length32 = input.length * 32
    for (i = 0; i < length32; i  = 8) {
      output  = String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff)
    }
    return output
  }

  /*
  * Convert a raw string to an array of little-endian words
  * Characters >255 have their high-byte silently ignored.
  */
  function rstr2binl (input) {
    var i
    var output = []
    output[(input.length >> 2) - 1] = undefined
    for (i = 0; i < output.length; i  = 1) {
      output[i] = 0
    }
    var length8 = input.length * 8
    for (i = 0; i < length8; i  = 8) {
      output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32)
    }
    return output
  }

  /*
  * Calculate the MD5 of a raw string
  */
  function rstrMD5 (s) {
    return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))
  }

  /*
  * Calculate the HMAC-MD5, of a key and some data (raw strings)
  */
  function rstrHMACMD5 (key, data) {
    var i
    var bkey = rstr2binl(key)
    var ipad = []
    var opad = []
    var hash
    ipad[15] = opad[15] = undefined
    if (bkey.length > 16) {
      bkey = binlMD5(bkey, key.length * 8)
    }
    for (i = 0; i < 16; i  = 1) {
      ipad[i] = bkey[i] ^ c036363636
      opad[i] = bkey[i] ^ c05c5c5c5c
    }
    hash = binlMD5(ipad.concat(rstr2binl(data)), 512   data.length * 8)
    return binl2rstr(binlMD5(opad.concat(hash), 512   128))
  }

  /*
  * Convert a raw string to a hex string
  */
  function rstr2hex (input) {
    var hexTab = '0123456789abcdef'
    var output = ''
    var x
    var i
    for (i = 0; i < input.length; i  = 1) {
      x = input.charCodeAt(i)
      output  = hexTab.charAt((x >>> 4) & c00f)   hexTab.charAt(x & c00f)
    }
    return output
  }

  /*
  * Encode a string as utf-8
  */
  function str2rstrUTF8 (input) {
    return unescape(encodeURIComponent(input))
  }

  /*
  * Take string arguments and return either raw or hex encoded strings
  */
  function rawMD5 (s) {
    return rstrMD5(str2rstrUTF8(s))
  }
  function hexMD5 (s) {
    return rstr2hex(rawMD5(s))
  }
  function rawHMACMD5 (k, d) {
    return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))
  }
  function hexHMACMD5 (k, d) {
    return rstr2hex(rawHMACMD5(k, d))
  }

  function md5 (string, key, raw) {
    if (!key) {
      if (!raw) {
        return hexMD5(string)
      }
      return rawMD5(string)
    }
    if (!raw) {
      return hexHMACMD5(key, string)
    }
    return rawHMACMD5(key, string)
  }

  if (typeof define === 'function' && define.amd) {
    define(function () {
      return md5
    })
  } else if (typeof module === 'object' && module.exports) {
    module.exports = md5
  } else {
    $.md5 = md5
  }
})(this)

附赠app 端 拔打电话

微信小程序拔打电话就很少讲了

app端 官方网详细介绍: http://www.html5plus.org/doc/zh_cn/device.html#plus.device.dial

立即真机调节,手机模拟器会不成功

plus.device.dial(phone); // phone 为要拨通的号

uni-app 真机调节(挑选自定底座)

(规范底座)开发人员设定的第三方SDK配备信息内容不容易起效。

(规范底座)安裝到手机app名称是“HBuilder”。付款不容易起效

(自定底座)包名会变为你新项目的名称,这时候付款,共享等多会儿起效

 

评论(0条)

刀客源码 游客评论