如何使用程序全自动完成支付宝,微信,银联 微信 支付宝等支付

如何使用【微信支付,支付宝付款,NFC支付】移动支付_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
如何使用【微信支付,支付宝付款,NFC支付】移动支付
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢银联支付目测只需两个参数
1.tn 其实就是订单号
2.mode 是测试环境还是线上环境
1.首先客户端浏览商品,点击下单,请求到达商户后台
2.商户后台在提交订单信息到银联后台
3.银联后台返回流水号
4.商户后台将交易流水号返回给客户端
5.客户端再通过流水号启动手机控价支付
6.支付控价手机支付信息并请求银联后台,完成支付后银联后台通知商户后台支付结果
7.银联后台通知支付控件支付结果
8.支付控件通知客户端支付结果
9.最后客户端将支付结果展示给用户
支付宝支付
1.向支付宝申请,与支付宝签约,获得商户ID和账号ID
2.下载相应的公钥私钥文件(加密签名用)
3.下载支付宝SDK
4.生成订单信息 签名加密
5.调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道
6.支付完毕后,支付宝客户端会自动跳回到原来的应用程序
7.在原来的应用程序中显示支付结果给用户看
1.appID、appSecret(在微信公众平台你申请的应用当前页面可以看到)
2.MCH_ID、商户号是你申请成功关于微信支付之后微信官方给你发的邮件里面
3.partnerID、商户密钥 最难搞 他就在微信支付-商户平台里面—》账号设置-——》API安全里面 第一次是需要设置的
4.notify_URL、支付结果回调页面
5.SP_URL()、获取服务器支付数据地址,也就是获取订单编号这些,填上后台接口接行了(商户自己定义的)
1、用户在商户APP中选择商品,提交订单,选择微信支付
2、商户后台收到用户支付单,调用微信支付统一下单接口
3、统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP,参与签名的字段有 appid partnerid nonceStr timestamp package
4、商户APP调起微信支付
5、商户后台接收支付结果
6、商户后台查询支付结果
Ping++开发
参数 appKey :是ping++分配给你的唯一身份标识
:是ping++分配给你应用的唯一标识
:是ping++系统用来想你的应用后台推送异步通知时使用的地址,该地址必须是一个互联网可以访问的地址,你可以在ping++管理平台中对应用进行设置
阅读(...) 评论()微信支付,支付宝支付,银联支付——三大支付
效果图: Markdown 由于用鲁大师去截屏获取gif,鲁大师一针一针绘制图片的时候应该没做好处理,导致跳转到相应的界面出现黑屏现象。在手机上正常跳转,无黑屏现象。大家不用担心这
由于用鲁大师去截屏获取gif,鲁大师一针一针绘制图片的时候应该没做好处理,导致跳转到相应的界面出现黑屏现象。在手机上正常跳转,无黑屏现象。大家不用担心这个
需要以公司名义,在支付宝,微信等平台上开通公司账户并且认证,如:支付过程中需要公司的帐号和商户号。
支付宝支付
如果碰到一些坑的话,请参考我之前写过的意一篇支付宝踩坑的文章:
android 支付宝的植入 《曾经踩过的坑》
首先支付宝申请并集成支付宝SDK 这里不再详细介绍
参考文档:
https://doc./doc2/detail.htm?treeId=54&articleId=104509&docType=1
获取订单信息(根据自己公司的实际情况:可以在服务端完成,也可以在本地完成)
price=12.5&num=12 //价格为12.5,数量为12
客户端拿这些订单信息向服务器后台进行请求,返回支付签名信息signInfo
app携带支付信息,调用支付接口请求支付宝客户端,从而调起支付界面
* 支付宝进行请求
* @param signInfo
private void payToOrderService(final String signInfo) {
new Thread() {
public void run() {
super.run();
PayTask payTask = new PayTask(MyScannerPayActivity.this);
// String result = payTask.pay(signInfo, true);
Map&String, String& result = payTask.payV2(signInfo, true);
Message message = mHandler.obtainMessage();
message.what = SDK_PAY_FLAG;
message.obj =
mHandler.sendMessage(message);
}.start();
用户操作,输入密码支付,支付成功;直接返回取消支付;出现错误,支付失败;进入支付界面,但输入密码支付,支付待确认;
支付宝客户端将支付结果告诉app客户端,商户服务器通知app服务器支付结果;
app客户端处理支付结果;
app服务器处理支付结果。
处理结果通知:
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case SDK_PAY_FLAG:
PayResult payResult =
payResult = new PayResult((Map&String, String&) msg.obj);
} catch (Exception e) {
e.printStackTrace();
对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
String resultInfo = payResult.getResult();// 同步返回需要验证的信息
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, PAY_OK)) {
ActivityUtils.showActivity(MyScannerPayActivity.this, ScannerPaySuccessActivity.class);
} else if (TextUtils.equals(resultStatus, PAY_FAILED)) {//-------------------------&支付失败
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
Toast.makeText(MyScannerPayActivity.this, && + payResult.getMemo(), Toast.LENGTH_LONG).show();
} else if (TextUtils.equals(resultStatus, PAY_CANCLE)) {//--------------------------&交易取消
Toast.makeText(MyScannerPayActivity.this, && + payResult.getMemo(), Toast.LENGTH_LONG).show();
} else if (TextUtils.equals(resultStatus, PAY_NET_ERR)) {//-------------------------&网络出现错误
Toast.makeText(MyScannerPayActivity.this, && + payResult.getMemo(), Toast.LENGTH_LONG).show();
} else if (TextUtils.equals(resultStatus, PAY_WAIT_CONFIRM)) {//---------------------&交替等待
先看一下官方给我们的银联支付流程图:
大家不要被这张图片搞懵逼的了,其实很简单,这里我将其分为5小步。
第一步:根据官方文档选择符合自己的sdk
官方文档:
/ajweb/help/file/techFile?productId=3
第二步:将相对应的.so文件copy到 自己的工程里面去。
特别注意:
.so文件要放在src/main 目录下,和Java文件并行。还有就是把用到的权限复制到自己项目中)
第三步: 和支付宝一样,APP客户端带着这些订单号向服务器后台请求订单号orderNo
第四步:服务器后台接收到购买信息之后,将信息提交给银联后台,银联接收到后台之后给服务器返回tn号
第五步:开启调用银联支付。APP客户端带着这个流水号,也就是第三步中服务器返回的tn号,调用银联SDK所提供的方法
这个订单流水号为21位纯数字号
调用方法: UPPayAssistEx.startPay(this, null, null, tn, mMode);
结果返回:
处理银联手机支付控件返回的支付结果
调用银联支付后,返回app的时候用了,看返回结果传,成功,失败,或者是什么返回。
如图所示:
最后注意在调用:
/*****************************************************************
* mMode参数解释: &00& - 启动银联正式环境 &01& - 连接银联测试环境
*****************************************************************/
private final String mMode = &00&;
tn值就是上面第三后台给的tn,给到服务器那里,
这里我这边是通过后台请求下来的,关于mMode,看第一步骤,自己改一下就行了,00开发环境,01测试环境。但是要注意,这个只是个回调接口方法。
总感觉银联支付的SDK调用起来怪怪的,貌似回到了原始深林。
微信支付:
建议先参考我之前写的 Android 微信支付总结的一篇博文:
微信支付总结:
http://blog.csdn.net/androidstarjack/article/details/
接入流程图:
接入流程:
申请开发者账号
地址:https://open./
进入管理中心,创建移动应用
申请支付能力
代码集成微信支付
代码集成微信支付
1.客户端代码得到用户购买的商品信息,将之传给自己公司app服务器,参数包含但不限于以下:
HashMap&String ,String& params = getHeadMap();
params.put(&appid&, appID);// 微信appid,选择性上传,服务器写死亦可
params.put(&money&, money);// 支付金额,单位:分
params.put(&goodName&, goodsName);// 商品名称
params.put(&productNum&, String.valueOf(12));// 商品的数量
- 2.app服务器调用微信&统一下单&接口,得到prePayId订单号并返回prePayId给手机客户端;
3.手机客户端使用prePayId及商品信息调起微信客户端进行支付;
3.1用户操作:输入密码进行支付;返回键取消支付;网络无连接支付失败等;
4.微信客户端回调支付结果给咱们的APP客户端;
5.微信服务器异步通知咱们公司app服务器支付结果(服务器的工作,与客户端无关)
相关的支付调用代码:
IWXAPI mWxApi = WXAPIFactory.createWXAPI(mContext, WX_APPID, true);
mWxApi.registerApp(WX_APPID);
* 请求app服务器得到的回调结果
public void onGet(JSONObject jsonObject) {
if (mWxApi != null) {
PayReq req = new PayReq();
req.appId = WX_APPID;// 微信开放平台审核通过的应用APPID
req.partnerId = jsonObject.getString(&partnerid&);// 微信支付分配的商户号
req.prepayId = jsonObject.getString(&prepayid&);// 预支付订单号,app服务器调用&统一下单&接口获取
req.nonceStr = jsonObject.getString(&noncestr&);// 随机字符串,不长于32位,服务器小哥会给咱生成
req.timeStamp = jsonObject.getString(&timestamp&);// 时间戳,app服务器小哥给出
req.packageValue = jsonObject.getString(&package&);// 固定值Sign=WXPay,可以直接写死,服务器返回的也是这个固定值
req.sign = jsonObject.getString(&sign&);// 签名,服务器小哥给出,他会根据:https://pay./wiki/doc/api/app/app.php?chapter=4_3指导得到这个
} catch (JSONException e) {
e.printStackTrace();
mWxApi.sendReq(req);
Log.d(&发起微信支付申请&);
注意事项:
1.首先如果要使用微信支付的话
必须先到微信开放平台注册应用,具体地址为https://open./
注册时需要填应用的包名和签名,注意这里的签名是App正式版的签名,可以找一个已上线的包或打一个正式包,使用微信提供的工具(签名工具下载地址为https://open./zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk)来获取,获取后填上即可。
待审核通过后,会得到一个AppID和AppSecret,AppID分享和支付都要用到,AppSecret没什么实际用途,此时微信分享能力是直接拥有的,支付能力还要额外申请,其中涉及到财务信息等
最好让公司财务部门去申请,申请成功后会拿到一个商户id,后面生成sign时会用到。
只有所有审核都通过后,才可调用微信支付功能,这点是前提。
2.微信分享和微信支付SDK是同一个架包,名为libammsdk.jar。
3.官方开发文档中有一处错误,需要注意下,如下图最后一行参数req应该为request,照搬代码的估计IDE也不会放过你,哈哈
4.测试微信支付时,务必对自己的App做正式签名,因为一开始就在微信平台注册过签名信息,微信SDK会做校验,只有这样才能调起微信分享和微信支付,直接debug版的包则绝对调不起来,这点务必注意,很多人是跌在这里了!当初做微信分享曾遇到过,所以会很留心,也因为如此,如果微信分享能调起来,微信支付不行,那就不要怀疑签名问题了。
5.还是签名,网上有人说要注意大小写,这点其实是不必的。在微信开放平台看到审核通过的App的签名是大写的,而用微信签名获取工具获得的则显示小写,这个没关系,不要贸然改动平台注册信息,不然又可能导致漫长的审核等待,上面也说了,微信分享如可以,那就不是签名问题。
6.来说下官方demo,这东西害人不浅啊!很多人参考其写法,如生成sign放在客户端啊,调支付的Activity添加intent-filter啊,最主要的还是签名问题。其实客户端逻辑很简单,直接上手集成即可,demo看看逻辑就行,照抄小心掉坑里。
7.网上有人说需要给调用支付的Activity配置如下intent-filter(见下图),可能也是被demo误导了
8.对于errCode返回-1,有人说清除微信缓存或切换账户就好了,这种解决方案治标不治本啊,根本不能算解决方案。虽然我没遇到能用这方法解决的问题,但目测是签名的问题,建议还得找到真正的问题所在。
9.生成sign时特别需要注意:
首先将key-value键值对拼成字符串,注意key都要小写,如appid,noncestr,package,partnerid,prepayid,timestamp,key,并且名字得按上述名称
我们遇到的错误就是因为partnerid写成了partnerId,prepayid写成了PrepayId,当然我们是在服务端写的,如果在客户端生成sign的话,也需要注意大小写及名称,详细信息请参考官方文档。
还有这里的key并非AppID或AppSectet,而是在商户平台设置的,官方描述为&key设置路径:微信商户平台(pay.)--&账户设置--&API安全--&密钥设置&。对于noncestr,申请prepayid和生成sign时两次需要用到,由于iOS同事看到相关文章说noncestr前后需要一致,因此这个随机字符串我们是设置成一样的了,这样做Android平台也是OK的,不过个人感觉这里可以不一致,由于这个逻辑在服务器端,我并没有验证,方便的同学可以验证下。
10.req.packageValue=&Sign=WXPay&,一般都是这样写死这个参数值。也有人说写成req.packageValue=&prepay_id=& + prepayid,经测试Android两种写法都是可以调起微信支付的,至少最新版本SDK是可以的,以后则不清楚,官方也建议写Sign=WXPay,据说iOS只支持这种写法。
Android集成微信支付的出现-1等错误需要注意的要点
1.微信支付和支付宝支付是现在APP常用的支付方式,但是真正接入过两种支付方式的猿友会很明显的感觉到微信支付真心比支付宝麻烦很多,会出现很多莫名其妙的错误,但是官方的文档却很难给出较好的解决方案.
2.前几天公司的APP需要支付功能然后也需要这个-1问题,简直感觉微信支付丧心病狂,这里总结下自己出现的问题和一些其他网友出现的问题做个总结
reso.errCode = -1 官方的描述: -1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
1.签名错误:
(1).签名的参数集合没有按照参数名ASCII码从小到大排序(字典序)
(2).签名的是时候漏了使用key,(key的由来可以看下面第三条的分析)
(3).签名的KEY错误. 这里用来签名的key是申请支付功能以后,微信给你的一个商户账号里面设置的.具体key设置路径:微信商户平台(pay.)&&账户设置&&API安全&&密钥设置
(4).签名后的key没有进行转化成大写或者其他例如前面的签名参数先排好序最后才加上key(key字段不参与ASCII码的大小排序,而是直接放到最后)
(5),还有一些其他的格式错误请参看官方文档的详细说明 微信官方的签名说明,请认真对比.
(6),签名问题的终极大招&&使用官方的签名认证工具一一对比.注:最好在连接生成的key和最终MD5之后的结果 在log下打印出来,可以方便查看出错的位置 接口调试工具
2.APPID错误
(1)APPID是在open.上创建的应用,可以通过 点击管理中心&&应用详情 来查看APPID
(2)创建APP时候上传的证书与现在使用的不一致.商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【 管理中心 && 修改应用 && 修改开发信息】里面
应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,例如DEMO中的package=&com.nmm.paydemo&。
应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图8.9所示,绿色串即应用签名。签名工具下载地址
对比查看应用签名是否一致,特别注意,一般上传都是使用release版本的key所以在测试的时候就需要使用签名版的apk,普通的debug版本key是不一致的
微信支付相关的demo地址:
/androidstarjack/MyWxPayTest
(责任编辑:卓一哥)
------分隔线----------------------------
前天遇到了一个 NullPointerException,触发的代码类似下面这样:...
效果图如下; mvp.gif MVP mvp1.png Retrofit Retrofit是Square开发的一个...
本博文主要记录我学习 Java 反射(reflect)的一点心得,在了解反...
最近项目需求要求做一个抢红包UI特效。效果如下: 项目效果...
集成SDL2后的音频播放器(SDK),可以用于FM类型的播放器使用哦...
作者: @怪盗kidou Retrofit版本: 2.0.2 本文注目录: Retrofit入门 Re...支付宝Vs微信支付Vs银联,支付的江湖谁能走的更远?支付宝Vs微信支付Vs银联,支付的江湖谁能走的更远?聂某人百家号道琼斯通讯社日前撰文称, 中国移动支付市场规模在全球都处于领先地位,甚至达到美国市场的90倍 ,因此吸引了世界各地的企业争相学习。2017上半年,移动支付业务179.26亿笔,移动支付金额为99.89万亿元。这个让人瞠目结舌的数据,代表了中国移动支付的市场庞大,更展现出中国移动支付对于世界其他国家的优势,根据著名咨询机构益普索的报告,中国移动支付普及率77%全球第一,美国仅48%,日本27%。国际著名智库于11月5日发布经纪业务技术供应商利瑞(Leverate)研究员撰写的研究报告《支付宝vs微信支付vs银联》(以下简称报告),对比中国三大二维码移动支付服务提供商。全文通过较为客观的对比,体现了银联相较于第三方支付的优势,称“银联仍是中国移动市场中重要的一员”。(以下引用部分原文)一、移动支付,三分天下在中国,腾讯的微信支付、阿里巴巴的支付宝是以二维码为基础的移动支付市场的领导者,但稍逊一筹的中国银联(CUP)扮演者不容忽视的角色。尽管这三者提供类似的移动支付服务,但它们之间的显著差异或会对你在中国这片广阔市场的合作伙伴选择产生重大影响。它们的主要区别源于这三家公司的源起,而这种源起上的差异持续体现在其产品特点上。微信支付是微信社交沟通移动应用程序的产物。已登记银行账户信息的用户能够通过持续使用手机,享受支付账单、向商店付费等生活服务。微信支付的标志性服务是“红包”,用户可在社交微信群中向朋友派发红包。相比之下,支付宝则是随着服务的扩展而发展起来的,其旨在促进网上购物网站阿里巴巴的付款服务。然而支付宝已不仅仅是一项托管支付服务,消费者可在确认其收到商品或服务后向卖家付款。同样,支付宝也在将服务扩展至阿里巴巴网站之外其他交易,包括水电费账单之类的线下付款。银联作为中国官方认可的信用卡和借记卡网络公司,于2017年5月推出二维码支付标准。目前支付宝和微信支付在该领域占据主导地位,但银联认为这是一种不可忽视的消费者行为转变,因而大举进军。对银联来说,其优势在于已拥有庞大的持卡人群体,消费者只需从银联的任一合作商业银行下载应用程序即可使用银联二维码支付。面对以上竞争激烈的市场情况,银联已开始将其产品推向庞大的用户群,积极说服消费者转而使用其支付服务。迄今为止,中国银联已发行超过54亿张卡(译者注:目前银联卡发行总数为63亿张),2016年内交易量超过380亿笔(译者注:2016年银行卡交易笔数为1215.8亿笔)。根据尼尔森报告,这一用卡规模使得银联成为世界上使用最频繁的第三大信用卡/借记卡品牌,仅次于VISA和万事达卡。中国银联及其165家合作银行(译者注:中国银联已与境内外2000多家成员机构广泛合作)的竞争优势意味着,其已与消费者建立直接联系,便于其进一步推动支付服务。二、各路兵马加速境外扩张,银联优势更为凸显报告称, 作为非银行金融服务提供商,支付宝曾在很长时间内避免了监管限制,并能将其服务延伸到境外。 然而截至2016年底,支付宝被要求关闭所有的境外金融账户,对其东南亚业务产生相当大的影响。东南亚的科技发展与中国五到十年前的情景类似,相关基础设施还处于建设阶段。东南亚仍然是许多试图扩大业务版图的中国企业的首选目标,该等企业倾向于继续使用原有的互联网和支付提供商。 所以,尽管支付宝的移动支付解决方案一直在努力加速和进一步扩大基础设施建设,但最终可能还是要与竞争对手微信支付分享这一艰苦工作的成果。同时,涉及境外消费时,银联卡几乎支持所有的货币结算,这也是一个优势,而支付宝、微信支持的货币则非常有限。银联重点关注出国的持卡人,尤其是前往美国的持卡人。2015年,美国吸引了超过250万的中国游客,这些游客在当地共消费400多亿美元。通过在美国发展合作关系,银联已能够成功打入美国市场,进而增加海外市场份额。11月5日,银联宣称“ 银联卡在美国受理网络正趋于完善,目前,美国几乎所有ATM都能用银联卡取现,80%以上的商家可刷银联信用卡支付。 在纽约、夏威夷、旧金山、洛杉矶、奥兰多和芝加哥等地的知名购物中心和奥特莱斯商圈,银联卡受理覆盖率普遍超过90% ”今年国庆节后,微信、支付宝、银联分别发布了境外国庆交易报告,除了银联外,其他两家均仅提到了交易的增长率,而未直接透露出具体交易笔数等细节,也可以看出两家在境外也只是雷声大雨点小,交易规模并未按照预期得到增长。三、国内市场如火如荼,行业合作成为主战场中国银联在移动支付上的起步时间,其实并不比支付宝、财付通晚。中国银联在2006年也推出一套基于金融IC卡芯片的移动支付方案。但电信运营商和金融业各自提出一套NFC标准,双方相持不下,直到2012年才确立了金融业系统的标准为国标。此后,中国银联成为NFC的主要推动者,但要推动银行、电信运营商、手机服务商等产业链上下游的主体携手共进,并不容易。尽管二维码支付因为安全问题在2014年3月被央行紧急叫停过一次,但支付宝和财付通借机发力二维码支付。现在中国的很多城市,从出门坐车、菜市场买菜、超市小店购物,甚至街头乞讨,都可以扫码支付。2016年下半年开始,各主要银行陆续推出二维码支付。 2017年5月底,中国银联终于联合国内四十多家银行宣布正式推出银联标准二维码,实现银联二维码支付互联互通, 目前已有超过150个主流APP上线开通银联二维码, 包括工、农、中、建、交等17家全国性银行,以及手机京东、京东金融、美团、美团外卖、大众点评、快钱、飞凡等拥有亿级用户量的APP,近200家主流收单机构完成收单业务改造及开通,10月份也正式上线聚合码支付。卜蜂莲花、全家便利店、7-Eleven、屈臣氏、万宁、喜士多、罗森等品牌商户已开通受理银联二维码。除了普通商户的拓展外,三大支付巨头都围绕公交地铁、出租、医疗等高频生活场景开展肉搏战,以抢占支付入口。 但随着人口、监管等红利的消失,以及网联成立等多因素,支付宝微信在国内的高速增长已经有所回落,移动支付的江湖,谁能走的更远,还将试目以待。注:FinanceFeeds网站提供全球行业内的实时公司信息、新闻和时事,也是一家著名智库,提供行业内重要的信息,帮助机构进行业务决策。内容覆盖技术创新、行业研究、独家新产品和发布的现场报道,与重要行业领导人就重要问题进行的详细行业访谈以及意见等。来源:网络监制: 聂某人编辑:编辑2,编辑3本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。聂某人百家号最近更新:简介:互联网金融、支付行业评论人作者最新文章相关文章}

我要回帖

更多关于 微信支付宝银联图标 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信