微信小程序JSAPI支付

一、准备资料

1、需要注册一个微信商户平台https://pay.weixin.qq.com/ (主要是需要mch_id(微信支付商户号)商户Key(其实就是API密钥)

2、申请一个微信小程序账号(需要有微信支付、微信认证) (主要是需要appid、AppSecret(小程序密钥))

 

二、操作流程(https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3建议多多看看操作流程图,之前就是因为,没注意再次签名这个步骤一直失败)

1、使用 wx.login({success: function(res){console.log(res); } }),获取code({errMsg: "login:ok", code: "***********"})

2、根据code、appid、AppSecret(小程序密钥) 去获取openid

https://api.weixin.qq.com/sns/jscode2session?appid=-你的openId&secret=你的小程序密钥ceda&js_code=wx.login返回的code值&grant_type=authorization_code
返回值{"session_key":"返回的session_key","openid":"返回的openid"}

3、生成签名https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=20_1(这里是以前端思路流程为主)

(1)根据统一下单的接口https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1&index=1需要上传的参数以此输入地址https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=20_1生成签名sign 这一步感觉有点坑爹

 let xmlData = '<xml>
	<appid><![CDATA[************]]></appid>
	<body><![CDATA[JSAPI支付测试]]></body>
	<mch_id><![CDATA[************]]></mch_id>
	<nonce_str><![CDATA[************]]></nonce_str>
	<notify_url><![CDATA[http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php]]></notify_url>
	<openid><![CDATA[************]]></openid>
	<out_trade_no><![CDATA[************]]></out_trade_no>
	<spbill_create_ip><![CDATA[14.23.150.211]]></spbill_create_ip>
	<total_fee><![CDATA[1]]></total_fee>
	<trade_type><![CDATA[JSAPI]]></trade_type>
	<sign>F9C47A514D2F49E2D39A61915BD6D313</sign>
</xml>';
    wx.request({
      url: URL,
      data: xmlData,
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      method: 'POST',
      success (res) {
        console.log(res.data);
      }
    })

//返回值
<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[*********]]></appid>
<mch_id><![CDATA[*********]]></mch_id>
<nonce_str><![CDATA[*********]]></nonce_str>
<sign><![CDATA[*********]]></sign>
<result_code><![CDATA[*********]]></result_code>
<prepay_id><![CDATA[*********]]></prepay_id>
<trade_type><![CDATA[*********]]></trade_type>
</xml>

(2)你以为这样就可以了吗?可以通过wx.requestPayment进行支付了吗?不你想多了,接下来进行再次签名。

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=3

根据返回的值(主要是prepay_id)按文档的顺序依次输入再次签名

 3、拿到后端的返回值调用wx.requestPayment进行小程序的微信支付(其实前端的工作只要相应的参数调用支付接口就行了)

    wx.requestPayment({
      // timeStamp: ''+parseInt(new Date().getTime()/1000),
      timeStamp: '1600324751',
      nonceStr: '*******',
      package: 'prepay_id=************',
      signType: 'MD5',
      paySign: '****************',
      success (res) { },
      fail (res) { }
    })

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值