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.onload=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