微信瀏覽器調用支付-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

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