支付宝上的服务器怎么用
Ⅰ 激活支付宝服务窗开发模式运行php的服务器怎么配置
你只需要下载wamp或xampp然后运行安装即可拥有一个PHP的运行环境了.
Ⅱ 银联在线和支付宝,android应用怎么调用
一、 支付宝平台的集成
在技术集成之前,商户需要在https://ms.alipay.com进行注册,并签约安全支付服务。签约成功后可获取支付宝分配的合作商户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”表示处理成功或失败。
调用支付接口的代码如下:
//构造支付参数
HashMap<String, String> payInfo = new HashMap<String, 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 proctName = etProctName.getText().toString();
String proctDesc = etProctDesc.getText().toString();if(TextUtils.isEmpty(proctName) || 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("proctName", proctName);
intent.putExtra("time", time);
intent.putExtra("proctDesc", (proctDesc ==null) ? "" : proctDesc);
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(proctName).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。
Ⅲ 支付宝在离线的时候也能用付款码付款,是什么原理能被破解吗
身边的高 科技 如果你习以为常了,你就会觉得理所应当,但是如果有人深究起来,问你这高 科技 里面到底是什么原理,大部分人还真答不上来,就像支付宝离线付款技术。
最近和同事闲聊,聊到了支付宝离线付款的问题,同事显然对这项技术显得有点不可理解,他的疑问我总结起来主要是这个:
笔者不是支付宝的工作人员,更不是数学或者计算机领域的专家,讲不出那么多高深莫测的专业知识,对这方面知识只是“略懂...略懂...”。但这也正是笔者的优势所在啊,正因为“略懂”,才使得笔者只能用一种平易近人通俗易懂的语言给大家解释这种 科技 。
笔者试图截一个支付宝的付款码的图,发现支付宝提示“无法抓取截图”,可能是为了安全考虑特意禁止。笔者就只好截了一个微信付款码的图(和支付宝付款码的原理是一样的),大家用扫码工具扫一下就会发现, 它其实就是一串很长的数字 ,大概1分钟就变化一次。
我们把离线付款的过程仔细的回想一下:商家在收款系统里设置好金额——我们打开支付宝——出示付款码——商家扫码——过了几秒钟商家收到信息“付款成功”。这整个过程用户都没有输入过付款金额。既然没有付款信息, 那付款码里应该就只有用户的账号信息了 。
付款码里只有用户的账号信息,但是 用户的账号信息应该固定的,然而二维码里隐藏的数字却是随时间变化的 。那该如何做到这一点呢?
这一点也很简单啊,用我们固定的账号信息去和一个随时间变化的数字序列做运算就行了。笔者这里做了一个简单的用户信息加密方案:
1、我们的账户信息就是“123”,支付宝服务器需要的就是这个信息。
2、用户在当初刚在手机上装支付宝APP的时候就和支付宝的服务器约定了 数字序列 规则:2018.12.28.12.01分的时候数字序列的值为1,每过1秒数字序列的值加2.........
3、那我们的账户信息“123”来 乘以当前时间数字序列的值 ,得到一个随时间变化的包含账户信息的数字串,用这个数字串做个二维码,就成了“付款码”。
4、支付宝服务器通过商家的网络得到了用户的二维码信息,那它只用那二维码里的数字串和当前时间数字序列的值作个反向运算就得到用户的账户信息啦。
这个付款码隐藏用户信息的方法似乎太过低劣了,规律太容易找,随便就能被人破解。但是这就是支付宝付款码的秘密,就是这么简单。
下面的问题就是找一个更好的数字序列来和用户的账号信息作运算,这个数字序列应该有一个公式可循,数字序列里数字又似乎是随机的、找不到任何规律,这样才能真正的隐藏用户的账号信息。
数学上还真存在这样一个数字序列,它就有三个优点,恰好是离线支付所需要的三个条件:
1、这个数字序列有一个公式,约定一个初始值和一个开始时间,通过公示就得得到任意时间点的值。
2、这个数字序列里的那些数字根本没规律可循,看起来就像是随机的。
3、在相同的公式下,用不同的初始值,得到的数字序列根本不存在平移关系。
第三点怎么理解呢,假设公式很简单,初始值是1每次加2,得到的数字序列就是 1、3、5、7;如果初始值为2每次加2,得到的序列就是2、4、6、8。两个序列之间就是有平移关系的。
笔者在读书的研究过一个叫做“混沌映射”的数字序列,它就是一个这样的牛❌的数字序列。你不用懂这些复杂的数字序列是怎么来的,只需要知道有这么个数字序列并且有三个优点就行了。
笔者很直接的告诉你,几乎不能破解。付款码的保密性就是依赖于这个牛❌的数字序列,只要在安装支付宝APP时和支付宝服务器约定的初始值不泄露,那就根本不可能破解这个数字序列。
如果是用1、3、5、7这样的数字序列来隐藏账户信息,那接下来的值很容易就破解了,那就是9。
但是本文中介绍的那种牛❌数字序列是不可能破解的, 即使知道公式和后面某几个时间上的值,你也得不到后面将会出现的数值。
Ⅳ 支付宝怎么连接不上服务器了。。
支付宝方回应,5.27日这天,由于杭州市萧山区某地光纤被挖断,造成目前少部分用户无法使用支付宝,运营商蜀黍正在抢修,支付宝攻城狮正在紧急将用户请求切换至其他机房,受影响的用户正在逐步恢复。您的资金安全并不会因此受到任何影响。如果出现交易信息不同步的情况,在修复后会恢复同步。请大家放心。
现在已经正常了。
Ⅳ 支付宝的支付流程是什么
首先,简单来说,支付宝的支付有两种方式,一种是“你扫我”,即打开自己的付款码让商家扫。另一种是“我扫你”,即开打支付宝扫一扫,扫商家的收款码,然后输入支付的金额,然后确认按密码或是指纹或是刷脸。另外,还是一种是网上支付,即在网上购物时,选择用支付宝支付,页面跳转,确认信息无误后输密码,或者是指纹确认付款。
拓展资料:
支付宝(中国)网络技术有限公司成立于2004年,是国内的第三方支付平台,致力于为企业和个人提供“简单、安全、快速、便捷”的支付解决方案。支付宝公司从2004年建立开始,始终以“信任”作为产品和服务的核心。旗下有“支付宝”与“支付宝钱包”两个独立品牌。自2014年第二季度开始成为当前全球最大的移动支付厂商。
支付宝与国内外180多家银行以及VISA、MasterCard国际组织等机构建立战略合作关系,成为金融机构在电子支付领域最为信任的合作伙伴。
参考资料:支付宝-网络
Ⅵ 支付宝检测服务器设置怎么处理啊
没有搞懂你的意思??? 你能说清楚点吗?
Ⅶ 支付宝上面买的服务器怎么打开
1.手机解锁后,在主题界面点击打开支付宝APP。
2.进入支付宝界面后,点击右下角的我的选项。
3.进入支付宝我的界面后,点击最底部的去商家版选项。
4.切换到商家版后,点击商家服务选项。
Ⅷ ios支付宝支付怎么获取服务器
如果忘记了支付宝的支付密码,可以登录您的“支付宝账户—我的支付宝 —我的账户—安全信息”,点击“找回支付密码”的按钮,确认支付宝账户,有以下三种方法找回密码: 一、密码保护问题找回密码:适用于未加入手机动态口令,且有设置过密码保护问题的账户。 二、证件号找回密码:适用于未加入手机动态口令,且账户可用余额小于等于200元的账户,在密码保护问题输入错误后或绑定手机但未设置过密码保护问题的情形。 三、手机找回密码:适用于手机绑定的账户。 注意:点击找回登录密码或者支付密码,密码保护问题请仔细输入,最多只能输入5次。查看具体流程(添加链接:help/support/help_detail.htm?help_id=3202)
Ⅸ 怎么用支付宝转账
支付宝的支付流程:
1:商户客户端请求后台服务器获取签名后的订单信息
2:后台服务器返回给客户端签名后的信息
3:客户端调用支付宝客户端的支付接口
4:支付宝客户端向支付宝服务端发送支付请求
5:支付宝服务端完成支付
6:向支付宝客户端返回支付结果
7:支付宝客户端将支付结果显示给客户端
8:客户端将支付结果返回给服务器进行验签,解析
9:服务器将最终支付结果返回给客户端
10:客户端将支付结果显示给用户
11:支付宝服务端异步发送支付通知给服务器
12:服务器响应支付宝服务端的通知
简易流程:
1:服务器生成前面后的订单信息返回给客户端
2:客户端调用支付接口,并获取接口的支付结果
3:同步支付结果给服务器进行验签,解析
4:服务器将支付结果返回给客户端,并展示给用户
5:支付宝异步向服务器发送支付通知
6:服务器(修改订单状态并)响应支付宝的通知。
Ⅹ php 5.3.13怎么使用支付宝RSA2
配置开发者信息“私钥”And“App_id”
/*配置信息*/
//支付宝分配给开发者的应用ID
$app_id='';
//开发者私钥,为这里填入方便,去头、去尾、去换行字符串私钥,私钥处理放在签名方法内。
$private_key='';
//商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
$sign_type='RSA2';
/*配置信息*/
2.组装部分请求参数:根据接口文档组装参数app_id、method、format、timestamp、charset、version、notify_url、sign_type
/*组装请求参数部分start*/
//支付宝分配给开发者的应用ID
$params['app_id']=$app_id;
//接口名称
$params['method']='alipay.trade.app.pay';
//仅支持JSON
$params['format']='json';
//发送请求的时间,格式"yyyy-MM-ddHH:mm:ss"
$params['timestamp']=date("Y-m-dH:i:s");
//请求使用的编码格式,如utf-8,gbk,gb2312等
$params['charset']='UTF-8';
//调用的接口版本,固定为:1.0
$params['version']='1.0';
//支付宝服务器主动通知商户服务器里指定的页面http/https路径。建议商户使用https
$params['notify_url']='';
//商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
$params['sign_type']=$sign_type;
/*组装请求参数部分end*/
3.组装业务参数json格式,并填充在$params数组中
/*组装业务参数json*/
//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
$bizcontent['body']='非sdk原生php服务端生成请求订单';
//商品的标题/交易标题/订单标题/订单关键字等。
$bizcontent['subject']='php代码示例';
/*生成随机数作为外部订单号start*/
$date=date("YmdHis");
$arr=range(1000,9999);
shuffle($arr);
$out_trade_no=$date.$arr[0];
/*生成随机数作为外部订单号end*/
//商户网站唯一订单号
$bizcontent['out_trade_no']=$out_trade_no;
//设置未付款支付宝交易的超时时间,一旦超时,该笔交易就会自动被关闭。当用户进入支付宝收银台页面(不包括登录页面),会触发即刻创建支付宝交易,此时开始计时。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。该参数数值不接受小数点,如1.5h,可转换为90m。
$bizcontent['timeout_express']='10m';
//订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
$bizcontent['total_amount']='0.01';
//销售产品码,商家和支付宝签约的产品码
$bizcontent['proct_code']='QUICK_MSECURITY_PAY';
//商品主类型:0—虚拟类商品,1—实物类商品注:虚拟类商品不支持使用花呗渠道
$bizcontent['goods_type']='0';
//公用回传参数,如果请求时传递了该参数,则返回给商户时会回传该参数。支付宝会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝
$bizcontent['passback_params']='spicy%3d%e8%87%aa%e5%ae%9a%e4%b9%89%e5%8f%82%e6%95%b01%26custom%3d%e8%87%aa%e5%ae%9a%e4%b9%89%e5%8f%82%e6%95%b02';
$biz_content=json_encode($bizcontent,JSON_UNESCAPED_UNICODE);
/*组装业务参数json*/
//将业务参数填充在请求参数内
$params['biz_content']=$biz_content;
4.排序签名得到sign,并填充在$params数组中“签名方法请往下翻”
//排序
ksort($params);
//调用签名方法得到sign填入请求参数
$params['sign']=sign($params,$params['sign_type'],$private_key);
5.将参数urlencode输出查看,打印出来的参数可以直接放在客户端使用
//htmlspecialchars是为防止浏览器将参数中的“×”和“¬”转义
echohtmlspecialchars(http_build_query($params));
工具方法:签名方法和检查是否为空方法
/**
*签名函数
*
*@paramarray$params请求参数数组
*@paramstring$signType签名方式
*@paramstring$private_key为了方便只要填一行字符串
*@returnstring返回类型
*/
functionsign($params,$signType,$private_key){
$stringToBeSigned="";
$i=0;
//将数组使用&符号拼接
foreach($paramsas$k=>$v){
if(false===checkEmpty($v)&&"@"!=substr($v,0,1)){
if($i==0){
$stringToBeSigned.="$k"."="."$v";
}else{
$stringToBeSigned.="&"."$k"."="."$v";
}
$i++;
}
}
unset($k,$v);
//私钥处理
$res="-----BEGINRSAPRIVATEKEY-----".PHP_EOL.wordwrap($private_key,64,PHP_EOL,true).PHP_EOL."-----ENDRSAPRIVATEKEY-----";
($res)ordie('您使用的私钥格式错误,请检查RSA私钥配置');
//
if("RSA2"==$signType){
openssl_sign($stringToBeSigned,$sign,$res,OPENSSL_ALGO_SHA256);
}else{
openssl_sign($stringToBeSigned,$sign,$res);
}
returnbase64_encode($sign);
}
/**
*检查是否为空
*
*@paramstring$value请求参数数组
*@returnbool返回类型
*/
functioncheckEmpty($value){
if(!isset($value))
returntrue;
if($value===null)
returntrue;
if(trim($value)==="")
returntrue;
returnfalse;
}