银联云闪付是目前市场上比较火热的一个名词,意思是说用户在进行支付时,通过调用云闪付客户端来进行快速支付的一种支付方式。
手机APP通过插件调起方法可调起导入的银联jar文件或者在手机安装银联云闪付客户端的条件下,调起标准版银联支付或者调起银联云闪付。
现在手机网页调起银联支付时,默认会调起银联快捷支付业务如需调起云闪付APP,需要将商户配置打开wap调起云闪付app的权限;这一权限的开通,需要通过提交服务单来进行处理;
具体步骤如下:登录银联系统平台提交运营服务单,选择日常服务->自助服务->业务管理->线上支付业务(网关控件WAP类)信息调整->申请表中需求描述写清楚商户名称、商户编号打开调云闪付APP。
手机APP客户端调起方式(webview形式):
iOS客户端
1.需添加协议白名单
在Xcode7.0之后的版本中进行开发,需要在工程对应的plist文件中,添加LSApplicationQueriesSchemes Array并加入uppaysdk、uppaywallet、uppayx1、uppayx2、uppayx3五个item,具体设置可参考以下截图:
或者直接添加如下代码到plist文件中:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>uppaysdk</string>
<string>uppaywallet</string>
<string>uppayx1</string>
<string>uppayx2</string>
<string>uppayx3</string>
</array>2.UserAgent需要送手机的值
UserAgent请勿随意修改,如果需要修改:iOS请保证原UserAgent含有的字段仍然会出现,可以多字段但不能少。(UserAgent不对时会跳去PC页面。)
Android客户端
1.需将upwrp添加至scheme白名单
安卓版云闪付APP的scheme是upwrp,若商户APP内的webview只识别http/https开头的url,或者商户webview的scheme白名单未添加upwrp,则调不起云闪付APP。
解决方法:
重写webview的shouldOverrideUrlLoading方法,用一个Intent去调起能处理upwrp开头的url的云闪付APP。代码示例如下:
WebViewClient webViewClient = new WebViewClient() {
@Override
publicbooleanshouldOverrideUrlLoading(WebView wv, String url) {
if(url == null) returnfalse;
try {
if(url.startsWith("upwrp://")
//其他自定义的scheme
) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
returntrue;
}
} catch (Exception e) { //防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)
returnfalse;
}
//处理http和https开头的url
wv.loadUrl(url);
returntrue;
}
};
webview.setWebViewClient(webViewClient);注意: 用intent处理自定义的scheme开头的url时, 代码必须加上try...catch..., 因为如果你的手机上没有安装处理那个scheme的应用 (手机上无应用能处理该scheme), 那么就会crash。
2.(wap产品本身的要求)UserAgent需要送手机的值
UserAgent请勿随意修改,如果需要修改:安卓请保证其中含有“Android”字段,大小写敏感。(UserAgent不对时会跳去PC页面。)
后台:
服务端无须修改