现金支付
我们支持积分加现金购物的兑换方式,用户可以支付在线支付购买商品,用户支付的钱会结算到企业的后台余额里,企业可以提现。
目前支持两种支付方式,支付宝支付和微信支付。
对接方式:
Android客户端:
android系统webview默认不支持除http/https以外的协议,所以需要在shouldOverrideUrlLoading方法中拦截支付url实现H5支付。
- 确定添加权限
uses-permission android:name="android.permission.INTERNET"
- 确定设置
WebSettings webSettings = webview.getSettings(); webSettings.setJavaScriptEnabled(true);
- 确定设置
webview.setWebChromeClient(new WebChromeClient());
- 确定调起微信或支付宝时的url为alipays:、alipay、weixin://wap/pay?类型
- 确定在shouldOverrideUrlLoading方法中拦截url;
参考示例代码
该示例仅供参考,具体实现方式请参考支付宝和微信官方文档
String referer = "微信商户申请H5时提交的授权域名";
@Override
public boolean shouldOverrideUrlLoading(final WebView view, String url) {
if(url.startsWith("alipays:") || url.startsWith("alipay")) {
try {
startActivity(new Intent("android.intent.action.VIEW", Uri.parse(url)));
} catch (Exception e) {
new AlertDialog.Builder(MainActivity.this)
.setMessage("未检测到支付宝客户端,请安装后重试。")
.setPositiveButton("立即安装", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Uri alipayUrl = Uri.parse("https://d.alipay.com");
startActivity(new Intent("android.intent.action.VIEW", alipayUrl));
}
}).setNegativeButton("取消", null).show();
}
return true;
}else if (url.startsWith("weixin://wap/pay?")) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
return true;
}else{
Map<String, String> extraHeaders = new HashMap<>();
extraHeaders.put("Referer", referer);
view.loadUrl(url, extraHeaders);
}
return true;
}