微信 之 微信支付

目录

1.使用微信支付 [JSAPI]调起支付

2.使用微信网页开发,使用 微信开放文档 JS-SDK支付 


假设已经授权完成,拿到openId了。 (可以去看我微信授权的文章)

1.使用微信支付 [JSAPI]调起支付

注意事项:

1.在微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。

2.注意:WeixinJSBridge内置对象在其他浏览器中无效,只能在微信中打开才有用

3.参与签名的参数为:appId、timeStamp、nonceStr、package、signType,参数区分大小写。

function onBridgeReady(){
   WeixinJSBridge.invoke(
      'getBrandWCPayRequest', {
         "appId":"wx2421b1c4370ec43b",     //公众号ID,由商户传入     
         "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数     
         "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串     
         "package":"prepay_id=u802345jgfjsdfgsdg888",     
         "signType":"MD5",         //微信签名方式:     
         "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
      },
      function(res){
      //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
      if(res.err_msg == "get_brand_wcpay_request:ok" ){
      
            
      }
      // 支付过程中用户取消
	  if (res.err_msg == "get_brand_wcpay_request:cancel") {

	  }
	  // 支付失败
	  if (res.err_msg == "get_brand_wcpay_request:fail") {

	  }
   }); 
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}

2.使用微信网页开发,使用 微信开放文档 JS-SDK支付 

走完步骤后,即可开始调用支付接口

wx.chooseWXPay({
  timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
  nonceStr: '', // 支付签名随机串,不长于 32 位
  package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
  signType: '', // 微信支付V3的传入RSA,微信支付V2的传入格式与V2统一下单的签名格式保持一致
  paySign: '', // 支付签名
  success: function (res) {
    // 支付成功后的回调函数
    // 前端判断返回方式,微信团队郑重提示:不保证绝对可靠,切记!
	if (res.errMsg == 'chooseWXPay:ok') {
	// 【支付成功】 
	} else if (res.errMsg == 'chooseWXPay:cancel') {
	// 【支付取消】:用户取消支付不会进入这个判断,而是进入complate和cancel函数
	} else {
    }
  },
  complete: function(res) {
	// 接口调用完成时执行的回调函数,无论成功或失败都会执行
	if (res.errMsg == 'chooseWXPay:ok') {
	// 【支付成功】:支付成功提示页面,点击完成按钮之后
	   wx.closeWindow(); /* 关闭微信窗口,调用时需要在config中进行校验 */
	} else if (res.errMsg == 'chooseWXPay:cancel') {
	// 【支付取消】
	} else {

    }
	/**
	  * iOS和Android支付成功点击“完成”后都会进入success和complete函数,都返回'chooseWXPay:ok'
	  * (也有人说Android支付成功不进入success函数,)
	  * 原因是【iOS和Android返回数据不同。支付成功后Android返回 {"errMsg":"getBrandWCPayRequest:ok"},iOS返回{"err_Info":"success","errMsg":"chooseWXPay:ok"},故Android找不到success方法,导致失败】
	**/
	},
	fail: function(err) {
	// 接口调用失败
	},
	cancel: function(err) {
	// 用户点击取消时的回调函数:用户取消支付后实际上进入cancel 和 complate函数
    }
});

注意事项:

所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:

  1. success:接口调用成功时执行的回调函数。
  2. fail:接口调用失败时执行的回调函数。
  3. complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。
  4. cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
  5. trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。

备注:不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回。

以上几个函数都带有一个参数,类型为对象,其中除了每个接口本身返回的数据之外,还有一个通用属性errMsg,其值格式如下:

调用成功时:"xxx:ok" ,其中xxx为调用的接口名

用户取消时:"xxx:cancel",其中xxx为调用的接口名

调用失败时:其值为具体错误信息


另:详细还可查阅相关资料(官方 -- 微信支付文档

猜你喜欢

转载自blog.csdn.net/a15297701931/article/details/117292501