支付宝网站接入支付需要营业执照,ICP备案。
可以在百度或者高德随便找个门头照申请开通当面付,0.38的费率,单笔交易限额1000,日限额5w。不过如果频繁有外地ip支付就会风控,包括要求提供营业执照,限制收款,以及清退,最严重的就是当面抓了^ - ^。
这个时候可以用收款码(码支付)解决。
主要原理就是系统生成固定金额的支付宝个人收款码,展示给用户,用户付款,手机收到转账到帐通知后通知网站支付成功。
示例代码
$uid = "20885022222227"
$desc = urlencode(sprintf("%s 订单号:%s", $order->description,$order->id);
$webUrl = sprintf('alipays://platformapi/startapp?appId=20000123&actionType=scan&biz_data={"s": "money", "u": "%s", "a": "%.2f", "m": "%s"}',
$price / 100, $desc
);
//uid 是支付宝的收单pid,从b.alipay.com登录后帐号中心->商户信息->商户基本信息->收单账号(PID)获取
// 生成的weburl返回给页面,前端使用jquery.qrcode这个包生成二维码让用户扫码即可
手机端用户扫码很麻烦,需要让用户保存图片,然后打开支付宝,选择扫一扫,在选择相册中的图片,会劝退很大一部分用户,这个时候可以利用支付宝的url scheme
首先在二维码扫码支付页面,前端判断用户是否是移动端,如果是移动端,显示一个a标签,链接地址如下,用户点击这个链接,浏览器会去查手机中注册了alipays://这个scheme的app,然后浏览器唤醒支付宝,让支付宝作为一个web view打开h5订单支付地址,带上订单id
后端代码
$h5url = sprintf('alipays://platformapi/startapp?appId=20000067&appClearTop=false&startMultApp=YES&showTitleBar=YES&showToolBar=NO&showLoading=YES&pullRefresh=YES&url=%s', urlencode(route('orders.h5pay', ['order' => $order->order_id])))
档用户在支付宝中请求访问上面的h5订单支付地址时,根据url中的参数查出订单,返回新的页面
新页面前端代码
<script
src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script>
<script type="text/javascript">
function returnApp() {
AlipayJSBridge.call("exitApp")
}
function ready(a) {
if (window.AlipayJSBridge) {
if (a) {
a()
}
} else {
document.addEventListener("AlipayJSBridgeReady", a, !1)
}
}
ready(function () {
try {
var userId = "{{$info['uid']}}}";
var money = "{{$info['price']/100}}";
var remark = "{{$info['desc']}}";
var a = {
actionType: "scan",
u: userId,
a: money,
m: remark,
biz_data: {
s: "money",
u: userId,
a: money,
m: remark
}
}
} catch (b) {
returnApp()
}
AlipayJSBridge.call("startApp", {
appId: "20000123",
param: a
}, function (a) {
})
});
document.addEventListener("resume", function (a) {
returnApp()
});
</script>
上面的代码会在页面加载完成后,模拟用户扫码的操作并拉起转账窗口