微信浏览器调用支付-node.js

XorPay:第三方个人支付接入入口

通过上面链接进去可以浏览相应的服务,我选择的是体验版本。以下出现的客服皆为xorpay客服

优势:免营业执照/企业资质。

缺点:交易手续费在0.88~1.58%之间,高于企业支付,周期长。

周期:1~2天,需联系xorpay客服。

需要提前准备的材料:

  1. 身份证正反面照片。
  2. 100元预存手续费(官方防止恶意注册耗费人力,因为原理是基于微信小微商户接入,人工接入)。
  3. https的域名同时icp备案,我的是在花生壳上买的38元的壳域名。
  4. 有了https域名后要联系客服授权,授权此域名可被xorpay接收调用(调用WeixinJSBridge控件时需要当前域名被授权)。

步骤:

1.提交相应资料申请,等待审核通过。(几乎100%通过)

2.通过官方demo,下载node版本的demo。此处可下载node的demo文件。

3.修改demo文件,封装为可调用方法。

const crypto = require('crypto');
const axios = require('axios');
const aid = '****';         //xorpay 用户 aid,在后台查看
const secret = '*************';      //xorpay 用户 secret,在后台查看
const md5 = (str, encoding = 'utf8') => crypto.createHash('md5').update(str, encoding).digest('hex');
function payByWx(pay_data,callback) {
//签名
pay_data['sign'] = md5(pay_data['name'] + pay_data['pay_type'] + pay_data['price'] + pay_data['order_id'] + pay_data['notify_url'] + secret);
let query_string = Object.entries(pay_data).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&');
let url = 'https://xorpay.com/api/pay/' + aid + '?' + query_string;
console.log(url,'??')
axios.post(url).then(r => callback.send(r.data)).catch(err => console.log(err));
} 

module.exports = payByWx

aid和secret审核通过后需在应用配置里查看。

3.在发起支付的页面加入下列方法(前端)。

//获取用户openid的方法
function getPay(){
    window.location = 'https://xorpay.com/api/openid/(你的aid)?callback=(获取用户openid后跳转的页面地址)?'//我的回调地址https://amlie.oicp.vip/
}
//拿到openId后会跳转到你回调的地址,然后就可以支付了,唤起支付
 window.οnlοad=function(){
            function ajax(url,callback){
        let xhr = new XMLHttpRequest()
        xhr.onreadystatechange = function(){
            if(xhr.readyState===4&&xhr.status===200){
              callback(xhr.responseText)
            }
        }
        xhr.open('POST',url,true)
        xhr.setRequestHeader('Content-Type','application/json;;charset=utf-8;')
        //发送openid和支付金额给后台,金额在回调的时候可以当做参数传入url,这样可以动态设置金额
xhr.send(JSON.stringify({opendId:window.location.href.split('&').pop().split('=').pop(),price:1}))
    }
    function onBridgeReady(){
        ajax('https://amlie.oicp.vip/getPay',(res)=>{
            WeixinJSBridge.invoke(
           'getBrandWCPayRequest', JSON.parse(res).info,
           function(res){
               // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg 将在用户支付成功后返回 ok,但并不保证它绝对可靠。
               if(res.err_msg == "get_brand_wcpay_request:ok" ) {}
           }
         );
        })  
    }
       
        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(JSON.parse(JSON.parse(res).info));
        }  
       
        }

 

4.后台接受参数,调用支付方法,返回appid和其他参数给前台。

const wxPay = require('./native');//引入调用支付的文件
const uuid = require('uuid');
const app = require('express')();
app.post('/getPay',(req,res)=>{
    req.on('data',async (result)=>{
       let openId = JSON.parse(result);
       wxPay({'name': '测试','pay_type': 'jsapi','openid':openId.opendId,'price': openId.price||'1.00','order_id':uuid.v1(),'notify_url':支付成功后回调},res)
    })
})

5.第二天4:30-6:00之间会获得收益。

 

微信支付测试地址:https://amlie.oicp.vip

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章