XorPay:第三方個人支付接入入口
通過上面鏈接進去可以瀏覽相應的服務,我選擇的是體驗版本。以下出現的客服皆爲xorpay客服
優勢:免營業執照/企業資質。
缺點:交易手續費在0.88~1.58%之間,高於企業支付,週期長。
週期:1~2天,需聯繫xorpay客服。
需要提前準備的材料:
- 身份證正反面照片。
- 100元預存手續費(官方防止惡意註冊耗費人力,因爲原理是基於微信小微商戶接入,人工接入)。
- https的域名同時icp備案,我的是在花生殼上買的38元的殼域名。
- 有了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