证明被误解:落实实名制电信实名制遇上“身份不明”怎么办

安卓APP集成支付宝,调用支付接口,直接退出程序了解决办法 - Android当前位置:& &&&安卓APP集成支付宝,调用支付接口,直接退出程序了安卓APP集成支付宝,调用支付接口,直接退出程序了解决办法&&网友分享于:&&浏览:0次安卓APP集成支付宝,调用支付接口,直接退出程序了本帖最后由 jasmine_fdh 于
23:38:48 编辑
首先介绍下我的使用场景。在我自己的app里
new&Thread()&{
public&void&run()&{
AliPay&alipay&=&new&AliPay(ExternalPartner.this,&mHandler);
//设置为沙箱模式,不设置默认为线上环境
//alipay.setSandBox(true);
String&result&=&alipay.pay(orderInfo);
Log.i(TAG,&"result&=&"&+&result);
Message&msg&=&new&Message();
msg.what&=&RQF_PAY;
msg.obj&=&
mHandler.sendMessage(msg);
}.start();
当走到alipay.pay(orderInfo);时,手机界面显示加载,之后直接退出了程序.。
尝试无果后,我使用支付宝提供的demo这样进行还是这样的问题.
程序里,我填写的私钥是并非pkcs8的,应该没有错。公钥已经上传到支付宝,也应该没有问题
这里是我请求的字串
info&=&partner="22"&out_trade_no="-1623"&subject="魅力香水&新年特惠&adidas+阿迪达斯走珠&香体止+汗走珠&多种香型可选"&body="新年特惠&adidas&阿迪达斯走珠&香体+止汗走珠&多种香型可选"&total_fee="0.01"&notify_url=""&service="mobile.securitypay.pay"&_input_charset="UTF-8"&return_url=""&payment_type="1"&seller_id=""&it_b_pay="1m"&sign="xfPCtE2jZrPvneqvHMFbnWQX7%2FN1NTw38IKsxKQOJoHzCdhUnx2PdInjVWQVmdMRa3NDmPBfKBJtCgOHIGr92oedBAo1t20yuwfmDh4vBj02H2MtnDAAYKUUMIBle3e2T8yIKO%2FMgP2qSXaV35rE7ht13HHYNViaeStffbIDou8%3D"&sign_type="RSA"
之前签约成功后,上传公钥无误;核对本地私钥无误,签名无误。调用alipay.pay(orderInfo);程序直接崩退.
有碰到过类似的情况的么,Android版本从2.3。3试到到4.3------解决方案--------------------贴下logcat看下报什么错误------解决方案--------------------log&log
看看------解决方案--------------------不会吧。好了,,不知道以后会不会出现。
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有第三方集成(3)
一、开发前提
适用于商家在App应用中集成支付宝支付功能。商家APP调用支付宝提供的SDK调用支付宝客户端内的支付模块,商家APP会跳转到支付宝中完成支付,支付完后跳回到商家APP内,最后展示支付结果。
本文档旨在指导开发者快速集成支付宝APP支付,包括开签约APP支付、服务器配置以及安卓端配置。
1、签约APP支付
APP要想接入支付宝支付功能需要签约支付宝的APP支付,签约要符合申请的条件,根据操作提示完成申请,等待审核通过即可
签约链接:
2、创建应用并获取APPID
然后创建应用,创建成功后即可获取到APPID
创建应用地址:
3、添加功能
创建应用之后,还有给应用添加APP支付功能
勾选APP支付,确定即可
4、上线应用
根据提示提交审核,等待审核通过即可,注意:测试APP支付必须上线应用,因为沙箱测试不能测试APP支付,可能出现ALI40247错误,见链接:
点击上线,按照提示完成操作即可,如图:
5、配置密钥
参考链接:
生成之后,Java开发找到pkcs8格式的私钥签名,去除头尾、换行和空格,作为开发者私钥
将公钥去除头尾、换行和空格,填入如图所示的地方
填写之后,可以验证公钥的正确性, 根据图示操作即可:
6、了解业务流程
二、服务器配置
参考文档:
1、下载SDK
服务器SDK有不同的开发语言版本,下载相应的版本,如图:
2、引入jar包
下面以java为例
集成支付宝接口需要引入的文件是:
alipay-sdk-java*.jar
commons-logging-1.1.1.jar
若进一步了解代码实现请引入文件:
alipay-sdk-java*-source.jar
commons-logging-1.1.1-sources.jar
3、调用示例
传入服务器创建订单所需参数参考文档:
参考事例代码:
AlipayClient client = new DefaultAlipayClient("/gateway.do",APP_ID,APP_PRIVATE_KEY,"json","GBK",ALIPAY_PUBLIC_KEY);
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
request.setBizContent("
"primary_industry_name":"IT科技/IT软件与服务",
"primary_industry_code":"10001/20102",
"secondary_industry_code":"10001/20102",
"secondary_industry_name":"IT科技/IT软件与服务"
AlipayTradeAppPayResponse response = client.execute(request);
if(response.isSuccess()){
三、Android端配置
参考文档:
1、下载SDK并导入
下载地址:
下载后导入工程中
2、注册Activity并添加权限
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"&
android:name="com.alipay.sdk.auth.AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"&
android:name="android.permission.INTERNET"/&
android:name="android.permission.ACCESS_NETWORK_STATE"/&
android:name="android.permission.ACCESS_WIFI_STATE"/&
android:name="android.permission.READ_PHONE_STATE"/&
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&
3、添加混淆规则
-libraryjars libs/alipaySDK-.jar
-keep class com.alipay.android.app.IAlixPay{*
-keep class com.alipay.android.app.IAlixPay$Stub{*
-keep class com.alipay.android.app.IRemoteServiceCallback{*
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*
-keep class com.alipay.sdk.app.PayTask{ public *
-keep class com.alipay.sdk.app.AuthTask{ public *
4、调用支付接口
需要在新线程中调用支付接口(可参考实现)
获取PayTask支付对象调用支付(支付行为需要在独立的非ui线程中执行),代码示例:
final String orderInfo =
Runnable payRunnable = new Runnable() {
public void run() {
PayTask alipay = new PayTask(DemoActivity.this);
String result = alipay.payV2(orderInfo,true);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
mHandler.sendMessage(msg);
Thread payThread = new Thread(payRunnable);
payThread.start();
5、支付结果获取和处理
(1)、同步返回
商户应用客户端通过当前调用支付的Activity的Handler对象,通过它的回调函数获取支付结果。(可参考alipay_demo实现)
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
Result result = new Result((String) msg.obj);
Toast.makeText(DemoActivity.this, result.getResult(), Toast.LENGTH_LONG).show();
(2)、异步通知
商户需要提供一个http协议的接口,包含在请求支付的入参中,其key对应notify_url。
支付宝服务器在支付完成后,会以POST方式调用notify_url传输数据。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:941次
排名:千里之外
记录生活,分享技术~
(1)(1)(1)(3)(2)支付宝接口开发集成支付环境小结
投稿:hebedich
字体:[ ] 类型:转载 时间:
本文主要给大家分享的是在做支付宝接口开发集成支付环境的全过程,非常的详细,搭配示例代码,是篇非常不错的文章,这里推荐给大家,有需要的小伙伴参考下。
关于支付宝的接口集成气死是很简单,目前大概有3种类型,即时到帐、双功能、担保交易,只需要集成一次担保交易,其他的比如即时到帐集成很容易,担保交易的状态有几种,比如:是否支付成功,卖家是否发货,买家确认收获等。而即时到帐只有一种,就是是否已付款!最多还有个退款的功能。一般都没用到。
&&& 通过之前做项目:配资平台,有个预付费的功能,用到了支付宝的双功能收款,其实就是提供两种付款方式,即时到帐和担保交易。一般买家谨慎会选择担保。
&&& 下面说下具体的集成过程,第一:下载对应的集成接口包,比如即时到帐就下载即时到帐,担保下载担保,非常不建议将即时到帐修改成担保或者反之。案例中我下载的 双功能接口文件,utf8-php接口。
&&& 下载来的文件都大同小异,即时到帐和担保的文件也相差不大,反正可以肯定的说,只要配置一次担保支付宝接口,就能配置即时到帐。
&&& 我们需要修改的文件有如下:alipay.config.php[配置文件,只是用于修改配置接口开发者id和key]
&&& alipayapi.php[主调文件,将需要发送的post数据交给该文件,然后负责跳转到支付页面]
&&& index.php[demo演示页面,可以不做修改,但是其中传递的参数名陈需要看懂]
&&& notify_url.php 返回数据页面,在其中将返回交易的状态,更具状态我们可以更改数据库订单信息,该文件是通过post方式接受。
&&& return_url.php 返回数据页面,在其中将返回交易的状态,更具状态我们可以更改数据库订单信息,该文件是通过GET方式。
&&& 具体过程:
&&& 第一步,修改配置信息:
&& $alipay_config['partner']&&&&&& = 'xxx8511073xxxxxxxx';
&& //安全检验码,以数字和字母组成的32位字符
&& $alipay_config['key']&&&&&&&&&& ='xxxxxxxxnow07oajbflskxxxxxxxxxx';
&&&& 第二:拼post数据,一般只需要修改请求参数
&/**************************请求参数**************************/
&&&&&&&& //支付类型
&&&&&&&& $payment_type = "1";
&&&&&&&& //必填,不能修改
&&&&&&&& //服务器异步通知页面路径
&&&&&&&& $notify_url = "http://你的域名/alipay/notify_url.php";
&&&&&&&& //需http://格式的完整路径,不能加?id=123这类自定义参数
&&&&&&&& //页面跳转同步通知页面路径
&&&&&&&& $return_url = "http://你的域名/alipay/return_url.php";
&&&&&&&& //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成
&&&&&&&& //卖家支付宝帐户
&&&&&&&& $seller_email = $_POST['WIDseller_email'];//demo[index.php]传过来的
&&&&&&&& //必填
&&&&&&&& //商户订单号
&&&&&&&& $out_trade_no = $_POST['WIDout_trade_no'];//传过来的
&&&&&&&& //商户网站订单系统中唯一订单号,必填
&&&&&&&& //订单名称
&&&&&&&& $subject = $_POST['WIDsubject'];//同上
&&&&&&&& //必填
&&&&&&&& //付款金额
&&&&&&&& $price = $_POST['WIDprice'];//传过来的,是你的表单中填写的值
&&&&&&&& //必填
&&&&&&&& //商品数量
&&&&&&&& $quantity = "1";
&&&&&&&& //必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品
&&&&&&&& //物流费用
&&&&&&&& $logistics_fee = "0.00";
&&&&&&&& //必填,即运费
&&&&&&&& //物流类型
&&&&&&&& $logistics_type = "EXPRESS";
&&&&&&&& //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
&&&&&&&& //物流支付方式
&&&&&&&& $logistics_payment = "SELLER_PAY";
&&&&&&&& //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
&&&&&&&& //订单描述
&&&&&&&& $body = $_POST['WIDbody'];
&&&&&&&& //商品展示地址
&&&&&&&& $show_url = $_POST['WIDshow_url'];
&&&&&&&& //需以http://开头的完整路径,如:
&&&&&&&& //收货人姓名
&&&&&&&& $receive_name = '萤火';
&&&&&&&& //如:张三
&&&&&&&& //收货人地址
&&&&&&&& $receive_address = $_POST['WIDreceive_address'];
&&&&&&&& //如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号
&&&&&&&& //收货人邮编
&&&&&&&& $receive_zip = $_POST['WIDreceive_zip'];
&&&&&&&& //如:123456
&&&&&&&& //收货人电话号码
&&&&&&&& $receive_phone = $_POST['WIDreceive_phone'];
&&&&&&&& //如:0
&&&&&&&& //收货人手机号码
&&&&&&&& $receive_mobile = $_POST['WIDreceive_mobile'];
&&&&&&&& //如:
&&&& 第三:数据构造完成后就可以在页面上付款,测试能不能正确的打开支付页面。如果能打开,这时候就可以进行付款了,但是买家付款的状态我们还无法获知,比如有没有成功付款,卖家是否已经发货等。那么接下来开始做返回状态的业务逻辑处理。
打开return_url.php文件,根据提示修改,做对因的处理。
&//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
&&&& //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
&&&& //商户订单号 $out_trade_no = $_GET['out_trade_no'];
&&&& //支付宝交易号&&& $trade_no = $_GET['trade_no'];
&&&& //交易状态
&&&& $trade_status = $_GET['trade_status'];
&&&& if($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {//状态为成功
&&&& //处理自己网站的业务逻辑
&&&&&&&& if(!$order['status']){//判断本地数据库中的订单是否已经处理
&&&&&&&&&&&& db_update("stx_recharge",array("status"=&1),array("oid"=&$_GET
&['out_trade_no']));//如果没处理就将状态改成已经处理。
&&&&&&&&&&&& //金钱的增加
&&&&&&&&&&&& $zd = db_line("stx_terminal",array("id"=&$order['ztid']));
&&&&&&&&&&&& db_update("stx_terminal",array("money"=&$zd['money']+$order
&['money']),array("id"=&$order['ztid']));//增加余额到该用户的账户上。
&&&&&&&& }
&&&& else if($_GET['trade_status'] == 'TRADE_FINISHED') {
&&&&&&&& //判断该笔订单是否在商户网站中已经做过处理
&&&&&&&&&&&& //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统
&中查到该笔订单的详细,并执行商户的业务程序
&&&&&&&&&&&& //如果有做过处理,不执行商户的业务程序
&&&& else {
&&&&&& echo "trade_status=".$_GET['trade_status'];
&&&& echo "验证成功&br /&";
&&&& echo "trade_no=".$trade_
&&&& notify_url.php也是一样,根据状态来编写对应的代码!notify_url.php文件中的状态要多一些。
&//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
&&&& //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
&&&& //商户订单号
&&&& $out_trade_no = $_POST['out_trade_no'];
&&&& //支付宝交易号
&&&& $trade_no = $_POST['trade_no'];
&&&& //交易状态
&&&& $trade_status = $_POST['trade_status'];
&&&& if($_POST['trade_status'] == 'WAIT_BUYER_PAY') {
&&&& //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款
&&&&&&&& //判断该笔订单是否在商户网站中已经做过处理
&&&&&&&&&&&& //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
&&&&&&&&&&&& //如果有做过处理,不执行商户的业务程序
&&&&&&&& echo "success";&&& //请不要修改或删除
&&&&&&&& //调试用,写文本函数记录程序运行情况是否正常
&&&&&&&& //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
&&&& else if($_POST['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {
&&&& //该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货
&&&&&&&& if(!$order['status']){
&&&&&&&&&&&& db_update("stx_recharge",array("status"=&1),array("oid"=&$_POST['out_trade_no']));
&&&&&&&&&&&& //金钱的增加
&&&&&&&&&&&& $zd = db_line("stx_terminal",array("id"=&$order['ztid']));
&&&&&&&&&&&& db_update("stx_terminal",array("money"=&$zd['money']+$order['money']),array("id"=&$order['ztid']));
&&&&&&&& }
&&&&&&&& echo "success";&&& //请不要修改或删除
&&&&&&&& //调试用,写文本函数记录程序运行情况是否正常
&&&&&&&& //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
&&&& else if($_POST['trade_status'] =='WAIT_BUYER_CONFIRM_GOODS') {
&&&& //该判断表示卖家已经发了货,但买家还没有做确认收货的操作
&&&&&&&& if(!$order['status']){
&&&&&&&&&&&& db_update("stx_recharge",array("status"=&1),array("oid"=&$_POST['out_trade_no']));
&&&&&&&&&&&& //金钱的增加
&&&&&&&&&&&& $zd = db_line("stx_terminal",array("id"=&$order['ztid']));
&&&&&&&&&&&& db_update("stx_terminal",array("money"=&$zd['money']+$order['money']),array("id"=&$order['ztid']));
&&&&&&&& }
&&&&&&&& echo "success";&&& //请不要修改或删除
&&&&&&&& //调试用,写文本函数记录程序运行情况是否正常
&&&&&&&& //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
&&&& else if($_POST['trade_status'] == 'TRADE_FINISHED') {
&&&& //该判断表示买家已经确认收货,这笔交易完成
&&&&&&&& //判断该笔订单是否在商户网站中已经做过处理
&&&&&&&&&&&& //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
&&&&&&&&&&&& //如果有做过处理,不执行商户的业务程序
&&&&&&&& echo "success";&&& //请不要修改或删除
&&&&&&&& //调试用,写文本函数记录程序运行情况是否正常
&&&&&&&& //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
由于我基本上没有用到后续的发货处理,所以在该状态下未做处理,如果您的网站是购物网站秒就需要做对应的处理,比如更新状态值为已发货,或者未付款、已确认等。方便看到交易流程。同时在已付款的订单中会产生支付宝的订单id,可以同时记录在自己的订单中。
以上所述就是本文关于支付宝接口的全部内容了,希望能对大家熟练掌握支付宝接口支付的二次开发能够有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 未实名制身份核验 的文章

 

随机推荐