h5页面华为页面唤醒支付宝客户端端访问图片不显示为什么

Android(2)
支付宝支付在app项目中非常常见,现在把集成步骤提出了,虽然非常简单,但是,希望对第一次集成支付的同学有帮助。
要集成别人的东西,第一步当然是去看他的开发文档,支付宝支付以前是在支付宝开发者平台,现在改成了蚂蚁金服开放平台。
在开发平台上把SDK下载下来,提取里面的jar包,放到自己的项目里面
然后把demo中的几个类拷贝到你的项目里面,不需要做任何修改:
public static final String RSA_PRIVATE = "";
private static final int SDK_PAY_FLAG = 1;"";
首先看这些变量:
PID商户号,和账号是你公司与支付宝签约时获取的,这个找你们负责人要,商户私钥和公钥是是配对的,可以通过SDK中的一个应用来生成,一般是后台开发人员去生成。
在项目中可以看到一个pay方法,这个就是调支付宝支付的方法:我们可以看看方法里的几个参数:
在pay方法中第一步是将订单进行签名,在签名的方法中需要传入的参数:有两个参数是对商品的描述的:subject,body,一个是你后台返回的订单流水号:out_trade_no,一个是商品的价格:price,还有三个就是刚刚说到的支付宝配置相关参数:partner,seller,notify_url,第一个是商户pid,第二个是商户账号,第三个是支付结果回调地址(这个由你的后台返回的,叫后台给)。后面三个配置参数可以直接写死的程序了,但是这种方式可维护行太差,一般当你请求后台接口的时候会把这三个参数同时返回,这样就方便更改。好了,现在把所有的参数都说明白,现在把我跟人的项目按步骤贴上来,注意,我这个代码是经过改装的,所以跟demo有一点点不一样:
第一步、请求我的后台,生成订单号,同时返回相关支付宝的的配置参数:
asyncHttpHelper = AndroidAsyncHttpHelper.getInstance();
Map&String, Object& params = new HashMap&&();
params.put("access_token", sharePreferenceUtil.getToken());
params.put("price", payMoney);
params.put("pay", pay);
APPLogger.i(Constants.TAG, pay);
asyncHttpHelper.get(ChargeActivity.this, Constants.HTTP_URL + "Account/rechargePlatform", params, new JsonHttpResponseHandler() {
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
super.onSuccess(statusCode, headers, response);
APPLogger.i(Constants.TAG, "支付宝支付:" + response.toString());
if (response.optBoolean("success")) {
JSONObject jsonObject = response.optJSONObject("data");
String notify_url = jsonObject.optString("notify_url");
String out_trade_no = jsonObject.optString("out_trade_no");
String seller_id = jsonObject.optString("seller_id");
String partner = jsonObject.optString("partner");
String subject = jsonObject.optString("subject");
String body = jsonObject.optString("body");
String total_fee = jsonObject.optString("total_fee");
pay(subject, body, total_fee, out_trade_no,partner,seller_id,notify_url);
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
super.onFailure(statusCode, headers, responseString, throwable);
这个是我项目中的一个接口请求,只看返回的参数以及注释,这里在你支付过程中的所有参数都有返回,其他可以忽略。
第二步、调用支付宝的pay()方法,把pay方法的所要用的参数全部传进去,pay方法的具体代码如下:
private void pay(String subject, String body, String total_fee, String out_trade_no,String partner,String seller,String notify_url) {
String oderInfo = getOrderInfo(subject, out_trade_no, body, total_fee,partner,seller,notify_url);
* 特别注意,这里的签名逻辑需要放在服务端,切勿将私钥泄露在代码中!
String sign = sign(oderInfo);
* 仅需对sign 做URL编码
sign = URLEncoder.encode(sign, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
* 完整的符合支付宝参数规范的订单信息
final String payInfo = oderInfo + "&sign=\"" + sign + "\"&" + getSignType();
Runnable payRunnable = new Runnable() {
public void run() {
PayTask alipay = new PayTask(ChargeActivity.this);
String result = alipay.pay(payInfo, true);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
mHandler.sendMessage(msg);
Thread payThread = new Thread(payRunnable);
payThread.start();
* sign the order info. 对订单信息进行签名
* content 待签名订单信息
private String sign(String content) {
return SignUtils.sign(content, RSA_PRIVATE);
* get the sign type we use. 获取签名方式
private String getSignType() {
return "sign_type=\"RSA\"";
* create the order info. 创建订单信息
private String getOrderInfo(String subject, String orderId, String body, String price,String partner,String seller,String notify_url) {
String orderInfo = "partner=" + "\"" + partner + "\"";
orderInfo += "&seller_id=" + "\"" + seller + "\"";
orderInfo += "&out_trade_no=" + "\"" + orderId + "\"";
orderInfo += "&subject=" + "\"" + subject + "\"";
orderInfo += "&body=" + "\"" + body + "\"";
orderInfo += "&total_fee=" + "\"" + price + "\"";
orderInfo += "&notify_url=" + "\"" + notify_url + "\"";
orderInfo += "&service=\"mobile.securitypay.pay\"";
orderInfo += "&payment_type=\"1\"";
orderInfo += "&_input_charset=\"utf-8\"";
orderInfo += "&it_b_pay=\"30m\"";
orderInfo += "&return_url=\"\"";
return orderI
可以看到,在pay方法中传入的参数都在getOderInfo方法中,
再看这个方法:
将你demo中的这些参数都替换成你自己的参数,就是你传入的参数:
好,到这一步,所有的参数已经参数已经配置、更改完成,
最后,再回到这个pay方法,里面有一个支付结果异步通知,通过这个通知,我们一个知道支付是否成功
对demo中的handler进行稍作修改,这个贴的是我自己项目中的代码,有些东西你看不懂是什么的完全可以忽略,你只需要看懂demo就行了:
private Handler mHandler = new Handler() {
@SuppressWarnings("unused")
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
PayResult payResult = new PayResult((String) msg.obj);
* 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc./doc2/
* detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
* docType=1) 建议商户依赖异步通知
String resultInfo = payResult.getResult();
String resultStatus = payResult.getResultStatus();
if (TextUtils.equals(resultStatus, "9000")) {
Intent intent = new Intent(ChargeActivity.this, ChargeResultActivity.class);
Bundle bundle = new Bundle();
bundle.putString("resultStatus", "9000");
bundle.putString("activityFlag","0");
startIntent(ChargeResultActivity.class, bundle, true);
if (TextUtils.equals(resultStatus, "8000")) {
Intent intent = new Intent(ChargeActivity.this, ChargeResultActivity.class);
Bundle bundle = new Bundle();
bundle.putString("resultStatus", "8000");
bundle.putString("activityFlag","0");
startIntent(ChargeResultActivity.class, bundle, true);
到这里,如果你不觉得我写的东西完全看不懂,太渣的话,你的支付宝应该能发起支付了。
最后,如果你的手机没有装支付宝怎么办?之前的sdk里提供了一个检测是否安装支付宝的方法。而现在没了,现在如果你没有安装支付宝,支付宝会调用在他SDK中集成的H5页面进行支付,只需要在你的项目中的manifest配置文件中加如如下代码:
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden" &
要注意的是,你不能修改这个配置里的任何东西,必须copy,否则没用。
没写过博客,在学习中,写的不好勿喷,希望指点一二,谢谢!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:918次
排名:千里之外html5 调用支付宝app-中国学网
html5 调用支付宝app
状态:1个回答日期:回答人:可以叫我表哥答:根据我之前做手机支付业务以及对其他支付公司的了解 不仅仅是支付宝,其他一些支付公司在手机端提供: 1、支付插件模式的接入:当在接入方确认支付后,会下载安装安全支付插件/控件/服务,然后启动这个,显示出支付项,输入支付信息,完成支付;...状态:3个回答日期:回答人:特别槛外人问:在使用HTML5开发一个手机应用,不知道如何实现内购答:网站加入支付宝功能需要和支付宝进行签约,具体步骤如下: 1、准备好介入支付宝的网站; 2、准备好签约的支付宝账户; 3、完成支付宝实名认证; 4、挑选合适的支付产品&费率; 5、在线提交签约订单; 6、完成订单付款; 7、等待订单审核; 8、审...状态:3个回答日期:回答人:Jonia917答:调用支付宝是需要接口的,具体怎么获取接口我就不知道了状态:2个回答日期:回答人:骑士小乡答:支付宝或微信支付,官方都有接口的状态:2个回答日期:回答人:育知同创教育问:乐视开通会员付款方式为什么还要app充值,我有支付宝可以用吗?答:当然可以的, 、点击支付宝支付,然后点击确认开通; 、可以使用支付宝APP扫码支付,也可以点击右侧的登录帐号付款; 、付款成功后,刷新一下乐视网站就可以了。状态:1个回答日期:回答人:百度知道客户端答:可以肯定的是绝对不是flash,但是是什么实现的不知道,h5的可能性也不大状态:4个回答日期:回答人:育知同创教育答:,这个只能重新下载了,等系统修复,请勿刷机状态:1个回答日期:回答人:深圳展华科技答:一、首先来说优势: wap或html5最重要的优势就是服务器可以快速调整功能;开发成本低 而APP体验好,能够调用系统底层服务 但是,两种都在弥补自己的劣势, 比如html5已经能够本地缓存一部分内容,调用一些基础系统服务; 而APP也可以功能逻辑在...状态:1个回答日期:回答人:可以叫我表哥答:根据我之前做手机支付业务以及对其他支付公司的了解 不仅仅是支付宝,其他一些支付公司在手机端提供: 1、支付插件模式的接入:当在接入方确认支付后,会下载安装安全支付插件/控件/服务,然后启动这个,显示出支付项,输入支付信息,完成支付;...
与【html5 调用支付宝app】相关信息:&&&&&&&&&&&&&&&&&&
用户还关注
大类导航: |未安装支付宝客户端时不能跳转H5支付页面的问题 - 简书
<div class="fixed-btn note-fixed-download" data-toggle="popover" data-placement="left" data-html="true" data-trigger="hover" data-content=''>
写了1158字,被1人关注,获得了1个喜欢
未安装支付宝客户端时不能跳转H5支付页面的问题
最近在做支付宝支付时发现在未安装支付宝客户端的情况下,并不能像开发文档里说的那样跳转到H5支付页面进行支付,只是状态栏闪烁了一下后,状态栏信息由白色字体变成了黑色字体。咨询支付宝技术人员后,发现原来是因为我在AppDelegate的代理方法中,用代码创建了一个window并设置为了keyWindow,但是却没有将Project -&Targets -&General -&MainInterface的main.storyboard入口置为空,导致APP出现了两个window从而把支付宝的H5页面个覆盖了。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window makeKeyAndVisible];
E3B760E0-4A9A-4095-BA1A-EEB488C9194D.png
有两种方法可以解决这个问题:
我们只需要将Project -&Targets -&General -&MainInterface的main.storyboard入口置为空即可。
EE94-4F80-BB77-BA6.png
就是在调用支付API之前获取第一个window并设置其显示,然后在回调的block里再设置其隐藏(这种方法并不推荐)。代码如下:
// 获取底层的window
UIWindow *firstWindow = [[UIApplication sharedApplication] windows][0];
// 判断是否安装了支付宝客户端
NSURL * alipay_app_url = [NSURL URLWithString:@"alipay:"];
if (![[UIApplication sharedApplication] canOpenURL:alipay_app_url]) {
// 显示最底层window
firstWindow.hidden = NO;
// 调起阿里支付
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic){
/**回调成功后隐藏这个window*/
firstWindow.hidden = YES;
之所以不推荐这个方法,是因为它会导致我们APP主窗口的所有视图消失,变成黑色或者其他设置的颜色。备注还有一种可能就是像简友 一样,项目里面集成了shareSDK,而shareSDK和支付宝的SDK冲突了, 把shareSDK换成最新的就可以了。在此感谢简友所提供的问题和解决办法。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:请登陆后使用
只需一步,快速开始
吧友自助信息发布区,请自行甄别
查看: 4084|回复: 6
华为支付宝已付款,但是商城不显示
华为商城,刚终于可以支付了,付完了网页又打不开了,现在能打开了,但是现实没支付,支付宝现实已付款,有这样的吗?怎么办?
我也是 现在成功了
你可以发邮件 立刻就解决
一样一样的 客服电话不通 网络排队
一样一样'等吧
中午有一单也是这样的,大概一个多小时后显示出来了,有延时吧
重要信息提醒 /1
『1212淘宝亲亲节』大促红包现金红包:1元、2元、5元、1212元;点击领取
Powered by

我要回帖

更多关于 h5页面如何统计访问量 的文章

 

随机推荐