重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在技术集成之前,商户需要进行注册,并签约安全支付服务。签约成功后可获取支付宝分配的合作商户ID(PartnerID),账户ID(SellerID),调用接口时使用。
站在用户的角度思考问题,与客户深入沟通,找到城区网站设计与城区网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站制作、成都外贸网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、网络空间、企业邮箱。业务覆盖城区地区。
支付细节的实现,主要通过支付宝提供的一个支付安全服务安装包alipay_plugin_20120428msp.apk,首次使用,首先检查是否安装此插件,没有会提示安装。具体的支付细节,在这个插件内完成。大部分的支付平台也都是采用的这种方式。
调用支付宝的接口进行支付,主要有以下几个步骤
1. 将商户ID,收款帐号,外部订单号,商品名称,商品介绍,价格,通知地址封装成订单信息
2. 对订单信息进行签名
3. 将订单信息,签名,签名方式封装成请求参数
4. 调用pay方法。
主要流程图如下:
支付接口pay方法的调用如下:
。。。
// start pay for this order.
// 根据订单信息开始进行支付
try {
// prepare the order info.
// 准备订单信息
String orderInfo = getOrderInfo(position);
// 这里根据签名方式对订单信息进行签名
String signType = getSignType();
String strsign = sign(signType, orderInfo);
Log.v("sign:", strsign);
// 对签名进行编码
strsign = URLEncoder.encode(strsign);
// 组装好参数
String info = orderInfo + "sign=" + "\"" + strsign + "\"" + ""
+ getSignType();
Log.v("orderInfo:", info);
// start the pay.
// 调用pay方法进行支付
MobileSecurePayer msp = new MobileSecurePayer();
boolean bRet = msp.pay(info, mHandler, AlixId.RQF_PAY,this);
if (bRet) {
// show the progress bar to indicate that we have started
// paying.
// 显示“正在支付”进度条
closeProgress();
mProgress = BaseHelper.showProgress(this,null, "正在支付",false,
true);
} else
;
} catch (Exception ex) {
Toast.makeText(AlixDemo.this, R.string.remote_call_failed,
Toast.LENGTH_SHORT).show();
}
。。。
/**
* 向支付宝发送支付请求
*
* @param strOrderInfo
* 订单信息
* @param callback
* 回调handler
* @param myWhat
* 回调信息
* @param activity
* 目标activity
* @return
*/
public boolean pay(final String strOrderInfo,final Handler callback,
final int myWhat, final Activity activity) {
if (mbPaying)
return false;
mbPaying = true;
//
mActivity = activity;
// bind the service.
// 绑定服务
if (mAlixPay ==null) {
// 绑定安全支付服务需要获取上下文环境,
// 如果绑定不成功使用mActivity.getApplicationContext().bindService
// 解绑时同理
mActivity.getApplicationContext().bindService(
new Intent(IAlixPay.class.getName()),mAlixPayConnection,
Context.BIND_AUTO_CREATE);
}
// else ok.
// 实例一个线程来进行支付
new Thread(new Runnable() {
public void run() {
try {
// wait for the service bind operation to completely
// finished.
// Note: this is important,otherwise the next mAlixPay.Pay()
// will fail.
// 等待安全支付服务绑定操作结束
// 注意:这里很重要,否则mAlixPay.Pay()方法会失败
synchronized (lock) {
if (mAlixPay ==null)
lock.wait();
}
// register a Callback for the service.
// 为安全支付服务注册一个回调
mAlixPay.registerCallback(mCallback);
// call the MobileSecurePay service.
// 调用安全支付服务的pay方法
String strRet =mAlixPay.Pay(strOrderInfo);
BaseHelper.log(TAG,"After Pay: " + strRet);
// set the flag to indicate that we have finished.
// unregister the Callback, and unbind the service.
// 将mbPaying置为false,表示支付结束
// 移除回调的注册,解绑安全支付服务
mbPaying = false;
mAlixPay.unregisterCallback(mCallback);
mActivity.getApplicationContext().unbindService(
mAlixPayConnection);
// send the result back to caller.
// 发送交易结果
Message msg = new Message();
msg.what = myWhat;
msg.obj = strRet;
callback.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
// send the result back to caller.
// 发送交易结果
Message msg = new Message();
msg.what = myWhat;
msg.obj = e.toString();
callback.sendMessage(msg);
}
}
}).start();
return true;
}
调用了支付服务之后,有两种方式返回交易结果:
1. 支付结果作为接口返回的字符串返回。返回的参数包含在result字符串中,具体再进行解析。
2. 支付宝服务器通知。商户需要提供一个http协议的接口,包含在参数里传递给安全支付,即notify_url。支付宝服务器在支付完成后,会用POST方法调用notufy_url,以xml为数据格式传输支付结果。需要注意的是,商户服务器收到支付宝发的通知之后,需要返回一个纯字符串“success”,不然支付宝的服务器会持续调用七次回调url提供的接口。
一、 支付宝平台的集成
在技术集成之前,商户需要在进行注册,并签约安全支付服务。签约成功后可获取支付宝分配的合作商户ID(PartnerID),账户ID(SellerID),调用接口时使用。
支付细节的实现,主要通过支付宝提供的一个支付安全服务安装包alipay_plugin_20120428msp.apk,首次使用,首先检查是否安装此插件,没有会提示安装。具体的支付细节,在这个插件内完成。大部分的支付平台也都是采用的这种方式。
调用支付宝的接口进行支付,主要有以下几个步骤
1. 将商户ID,收款帐号,外部订单号,商品名称,商品介绍,价格,通知地址封装成订单信息
2. 对订单信息进行签名
3. 将订单信息,签名,签名方式封装成请求参数
4. 调用pay方法。
主要流程图如下:
支付接口pay方法的调用如下:
。。。
// start pay for this order.
// 根据订单信息开始进行支付
try {
// prepare the order info.
// 准备订单信息
String orderInfo = getOrderInfo(position);
// 这里根据签名方式对订单信息进行签名
String signType = getSignType();
String strsign = sign(signType, orderInfo);
Log.v("sign:", strsign);
// 对签名进行编码
strsign = URLEncoder.encode(strsign);
// 组装好参数
String info = orderInfo + "sign=" + "\"" + strsign + "\"" + ""
+ getSignType();
Log.v("orderInfo:", info);
// start the pay.
// 调用pay方法进行支付
MobileSecurePayer msp = new MobileSecurePayer();
boolean bRet = msp.pay(info, mHandler, AlixId.RQF_PAY,this);
if (bRet) {
// show the progress bar to indicate that we have started
// paying.
// 显示“正在支付”进度条
closeProgress();
mProgress = BaseHelper.showProgress(this,null, "正在支付",false,
true);
} else
;
} catch (Exception ex) {
Toast.makeText(AlixDemo.this, R.string.remote_call_failed,
Toast.LENGTH_SHORT).show();
}
。。。
/**
* 向支付宝发送支付请求
*
* @param strOrderInfo
* 订单信息
* @param callback
* 回调handler
* @param myWhat
* 回调信息
* @param activity
* 目标activity
* @return
*/
public boolean pay(final String strOrderInfo,final Handler callback,
final int myWhat, final Activity activity) {
if (mbPaying)
return false;
mbPaying = true;
//
mActivity = activity;
// bind the service.
// 绑定服务
if (mAlixPay ==null) {
// 绑定安全支付服务需要获取上下文环境,
// 如果绑定不成功使用mActivity.getApplicationContext().bindService
// 解绑时同理
mActivity.getApplicationContext().bindService(
new Intent(IAlixPay.class.getName()),mAlixPayConnection,
Context.BIND_AUTO_CREATE);
}
// else ok.
// 实例一个线程来进行支付
new Thread(new Runnable() {
public void run() {
try {
// wait for the service bind operation to completely
// finished.
// Note: this is important,otherwise the next mAlixPay.Pay()
// will fail.
// 等待安全支付服务绑定操作结束
// 注意:这里很重要,否则mAlixPay.Pay()方法会失败
synchronized (lock) {
if (mAlixPay ==null)
lock.wait();
}
// register a Callback for the service.
// 为安全支付服务注册一个回调
mAlixPay.registerCallback(mCallback);
// call the MobileSecurePay service.
// 调用安全支付服务的pay方法
String strRet =mAlixPay.Pay(strOrderInfo);
BaseHelper.log(TAG,"After Pay: " + strRet);
// set the flag to indicate that we have finished.
// unregister the Callback, and unbind the service.
// 将mbPaying置为false,表示支付结束
// 移除回调的注册,解绑安全支付服务
mbPaying = false;
mAlixPay.unregisterCallback(mCallback);
mActivity.getApplicationContext().unbindService(
mAlixPayConnection);
// send the result back to caller.
// 发送交易结果
Message msg = new Message();
msg.what = myWhat;
msg.obj = strRet;
callback.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
// send the result back to caller.
// 发送交易结果
Message msg = new Message();
msg.what = myWhat;
msg.obj = e.toString();
callback.sendMessage(msg);
}
}
}).start();
return true;
}
调用了支付服务之后,有两种方式返回交易结果:
1. 支付结果作为接口返回的字符串返回。返回的参数包含在result字符串中,具体再进行解析。
2. 支付宝服务器通知。商户需要提供一个http协议的接口,包含在参数里传递给安全支付,即notify_url。支付宝服务器在支付完成后,会用POST方法调用notufy_url,以xml为数据格式传输支付结果。需要注意的是,商户服务器收到支付宝发的通知之后,需要返回一个纯字符串“success”,不然支付宝的服务器会持续调用七次回调url提供的接口。
集成需要的交易费用方面0-1万元内是2.5%的费率,1-10万是2.4%,10-100万是2.2%,100万以上2.0%。
PS :亲测
AliPayInfo aliPayInfo=new AliPayInfo();
AliPay aliPay=new AliPay((Activity)OtherPayDlg.this.mContext, mHandler);
aliPay.pay(aliPayInfo.toString());
OtherPayDlg.this.dismiss();
出现问题一:按照说明文档导入alipay.jar 出现AliPay 找不到,然后项目根目录下新建一个 libs文件夹,把要加的包放到这个目录下,右键 Build Path - Use as source folder
成功可以引用,但是没有弹出界面
二、 财付通平台的集成
财付通的集成和支付宝的非常相似(腾讯的传统?→_→)。财付通也是提供了一个财付通安全支付服务应用TenpayService.apk用于处理交易的细节。对于此支付应用,财付通和支付宝的使用方式是一样的。一种是捆绑预置,即打包在assets目录下,另一种是放到自己的服务器中,通过检查更新的方式动态加载。实际集成中可采用二者结合方式,初次使用使用预置apk,之后检查更新动态下载。
但是调用支付接口之前,增加了一个获取tokenid的过程,tokenid用于同财付通service进行交互。过程如下:
1. 用户在商户APP 选择商品,使用财付通支付
2. 商户APP向商户server 请求使用财付通支付
3. 商户server按照“支付初始化接口”的要求组织数据请求财付通“支付初始化接口”,接收初始化成功后返回的tokenid
4. 商户server将生成的tokenid 返回给商户APP
5. 商户APP使用tokenid 调用财付通支付service
6. 财付通支付service 在验证tokenid 后向用户展示支付中心,显示订单信息及相关用户信息
7. 用户在支付中心输入支付密码执行支付
8. 财付通支付service 向财付通后台server 请求执行支付,并实时接收支付结果
9. 支付成功后财付通支付service 向用户展示支付成功UI,在用户点击“返回商户网站”后回调商户App
10. 财付通后台server 在支付成功后会通过“支付成功通知接口”在后台通知商户server 支付状态。
接收支付接口返回结果方面,财付通对于方法返回值,不是直接返回的,而是通过handler回调,handler和msgId作为一个参数传入接口,支付接口pay()方法的返回值只是个true false,用于区分调用成功或者失败。其实跟淘宝的方式大同小异。对于notify_url,是财付通是通过get方式调用回调url,只返回支付成功的订单。同样的,商户服务器在接收到财付通的调用之后,需要返回纯字符串“success”“fail”表示处理成功或失败。
调用支付接口的代码如下:
//构造支付参数
HashMapString, String payInfo = new HashMapString, String();
payInfo.put("token_id",mTokenId); //财付通订单号token_id
payInfo.put("bargainor_id","1234567890"); //财付通合作商户ID,此为演示示例
// payInfo.put("order_type", "1");
payInfo.put("caller","com.tenpay.android.appDemo");
//去支付
tenpayHelper.pay(payInfo,mHandler, MSG_PAY_RESULT);
财付通的服务费率是1%,另外有相关的套餐可以优惠。
三、 易宝支付平台集成
与支付宝和财付通不同的是,易宝集成时,并没有提供一个支付应用apk,只有一个jar包。是一个library project。因为在集成时,需要在manifest文件里面声明支付页面的activity。同时在调用支付页面时,需要用startActivityForResult方式进入,支付结果会通过onActivityResult方法返回。易宝同样支持服务端回调,但比较纠结的是,易宝的服务端回调url,不能在代码中传入,需要在易宝的网站进行配置。只有支付成功时才会触发此回调,以get方式调用。
调用支付接口的代码如下:其中customerNumber参数是签约之后才能获取到的。requestId为调用方自定义的订单流水号。
private void startPay(String customerNumber, String chennal) {
String amount = etAmount.getText().toString();
String productName = etProductName.getText().toString();
String productDesc = etProductDesc.getText().toString();
if(TextUtils.isEmpty(productName) || TextUtils.isEmpty(amount)) {
Toast.makeText(YeepayExampleActivity.this,"", Toast.LENGTH_SHORT);
}
Intent intent = new Intent(getBaseContext(), YeepayPlugin.class);
intent.putExtra("customerNumber", customerNumber);
Random random = new Random();
String time = "" + System.currentTimeMillis();
String requestId = time + random.nextInt() % 10000;
intent.putExtra("requestId", requestId);
intent.putExtra("amount", amount);
intent.putExtra("productName", productName);
intent.putExtra("time", time);
intent.putExtra("productDesc", (productDesc ==null) ? "" : productDesc);
intent.putExtra("support", chennal);
intent.putExtra("environment","ENV_TEST" );
StringBuilder builder = new StringBuilder();
builder.append(CUSTOMER_NUMBER).append("$");
builder.append(requestId).append("$");
builder.append(amount).append("$");
builder.append(productName).append("$");
builder.append(time);
String hmac = YeepayUtils.hmacSign(builder.toString(),KEY);
Log.e("YeepayExampleActivity","hmac" + hmac);
intent.putExtra("hmac", hmac);
startActivityForResult(intent, 200);
}
易宝集成后的费率需要和易宝的客户经理面谈决定
四、 银联在线支付集成
银联的支付应用同支付宝和财付通相同,采用的是独立apk的方式提供服务。调用支付接口采用的startActivity的方式,相关参数通过bundle传递,调用示例如下:
bundle.putBoolean(USE_TEST_MODE,true);
bundle.putString(SP_ID,"0009");
bundle.putString(SECURITY_CHIP_TYPE,null);
bundle.putString(SYS_PROVIDE,"00000001");
bundle.putString(PAY_DATA, payData);
…
Intent startIntent = new Intent();
// startIntent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startIntent.putExtras(bundle);
startIntent.setClassName(UPPayUtils.PACKAGE_NAME,
UPPayUtils.ACTIVITY_NAME);
// activity.startActivityForResult(startIntent, UPPayUtils.STARTE_UPPAY);
activity.startActivity(startIntent);
与以上三种支付平台不同的是,银联支付接口的返回值是通过广播的形式发送的。不支持商户服务端的回调url。
安卓手机使用支付宝是安全的。 支付宝是第三方支付平台,是安全,快捷的支付方式。手机支付宝APP是安全的应用程序,可应用于各种智能手机系统(包括安卓)。 使用手机支付宝APP时需注意: 1、仅从安全市场下载和更新支付宝应用程序; 2、手机要安装最新的杀毒软件并经常杀毒。
速途网讯 目前手机支付已经成为了一种全新的消费方式,只要一部手机,就能随时随地完成选购、支付全过程的购物体验,节省了大量的时间。但是当前银行类手机网上银行的支付流程比较繁琐,导致支付成功率低,用户使用非常不方便。造成这种现状的主要问题包括:需要开通手机银行;如果使用工行手机银行充值,有网络接入限制,手机网络接入点必须选择cmwap、uniwap或3gwap;充值流程长,以UC优视的U点为例,用户首先要在商户(如U点)下单—跳转到工行手机银行首页—判断用户的联网信息—用户绑定手机号码确认—银行支付订单确认—输入支付密码—充值成功—跳转到支付宝收银台—跳转回商户,需要9步才能实现,如何在保证安全的前提下简化支付流程,成了手机支付迫切需要解决的问题。4月24日,银联和UC优视合作推出的全民移动支付解决方案,让手机用户不需要第三方支付账户,甚至不需要开通网银和手机银行,无论信用卡还是借记卡,只要是银联卡,输入卡号密码,就可以进行操作支付,大大简化了支付流程。在解决方案发布仪式上,中国银联执行副总裁柴洪峰表示,此次中国银联与UC优视移动支付产品的发布既是对双方现有合作关系的进一步深化,双方要通过建立技术协作和运营协同机制,确保UC浏览和银联手机安全支付控件的长期兼容,做好控件的管理和监控,为手机支付和手机网站提供安全便捷的服务。对于用户来讲,过去的支付过程需要在多个手机应用之间切换,并且还要先到柜台开通网上银行,而现在,支付过程无需跳出UC浏览器,有银行卡就可以直接支付,支付环节将屏幕、键盘控制权交给银联插件,支付结束后控制权又返还给UC浏览器。对于商户来讲,网页语法不用改变,只需增加一句安全支付代码,并且只有支持安全支付的UC浏览器才能识别,同时还不影响其他浏览器访问。商户的收款也很便捷,能够快速结算,费率低且无坏账。对于此次联合的战略意义,UC优视董事长兼CEO俞永福认为,通过支付流程安全等方面的技术创新和服务的运营,打造一个便捷和安全的解决方案,这样一个产品对于用户来讲最重要的意义是降低用户门槛、推动整个全民移动支付的来源。另外一个重要的意义就是对于中国移动互联网产业形成强大的造血功能。对于大家广泛关注的安全问题,UC优视技术总裁梁捷介绍说:“在银联和UC优视的合作方案中,用户如果访问了危险的钓鱼网站或仿冒网站,UC浏览器会对用户提出提醒,而在PC上除360安全浏览器之外基本上没有这种功能;手机相比电脑是更私有化的工具,PC可以共用,但是手机是一人一部,这就大大减少了信息被盗的可能性;在网络病毒大肆传播的现在,手机相比PC更安全,病毒、木马等相对要少得多。并且手机支付继承了PC互联网的安全理念,所以在PC上遇到的各类安全问题和一些很好的解决方案,在移动互联网上都有继承,并且“青出于蓝而胜于蓝”。UC的全方位多重安全技术也是值得信赖的,UC在各个方面采取了多种安全防护措施:网站安全方面,有UC云安全服务和恶意网站/软件识别功能;终端安全方面,有安全插件密钥二次加密和防木马截取;敏感数据自定义软键盘方式输入以及输入后立即采用私有算法加密保障了输入安全;传输过程中,采用银行级别的HTTPS加密通道保障了传输安全;在服务器安全方面,银联支付插件与银行服务器直接对接,采用3DES和1024位的RSA算法验证和加密技术;此款移动支付方案还通过国家银行卡检测中心十一项严格检验。UC优视与银联在技术上的强强联合,让移动互联网支付的更安全、更便捷。俞永福表示,“今天合作的产品是把浏览和支付分开,两种业务浏览解决的。它的安全性甚至要超越在PC上的在线支付的安全性,所以这个依托于中国银联在线支付的多年经营,在安全保证方面的经验,所以我们的创新产品相信会比之前会有进步。“此次全球最大的手机浏览器与全球最大的银行卡品牌的结合,让我们离全民移动支付时代更近了!。望采纳,谢谢。