网站首页 > java教程 正文
一、开发前提
适用于商家在App应用中集成支付宝支付功能。商家APP调用支付宝提供的SDK调用支付宝客户端内的支付模块,商家APP会跳转到支付宝中完成支付,支付完后跳回到商家APP内,最后展示支付结果。
本文档旨在指导开发者快速集成支付宝APP支付,包括开签约APP支付、服务器配置以及安卓端配置。
1、签约APP支付
APP要想接入支付宝支付功能需要签约支付宝的APP支付,签约要符合申请的条件,根据操作提示完成申请,等待审核通过即可
签约链接:
https://b.alipay.com/signing/productScene.htm?sceneId=wysk&navKey=wysk
如图:
2、创建应用并获取APPID
然后创建应用,创建成功后即可获取到APPID创建应用地址:
https://openhome.alipay.com/platform/appCreate.htm
如图:
3、添加功能
创建应用之后,还有给应用添加APP支付功能
如图:
勾选APP支付,确定即可
4、上线应用
根据提示提交审核,等待审核通过即可,注意:测试APP支付必须上线应用,因为沙箱测试不能测试APP支付,可能出现ALI40247错误,见链接:
https://openclub.alipay.com/read.php?tid=250&fid=
2https://support.open.alipay.com/support/hotProblemDetail.htm?spm=a219a.7386797.0.0.BZfVkv&id=259972
点击上线,按照提示完成操作即可,如图:
5、配置密钥
参考链接:
https://doc.open.alipay.com/doc2/detail.htm?treeId=200&articleId=105310&docType=1
点击这里下载一键生成RSA密钥工具
生成之后,Java开发找到pkcs8格式的私钥签名,去除头尾、换行和空格,作为开发者私钥
将公钥去除头尾、换行和空格,填入如图所示的地方
填写之后,可以验证公钥的正确性, 根据图示操作即可:
6、了解业务流程
二、服务器配置
参考文档:
https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1
1、下载SDK
服务器SDK有不同的开发语言版本,下载相应的版本,如图:
2、引入jar包
下面以java为例
集成支付宝接口需要引入的文件是:alipay-sdk-java*
.jarcommons-logging-1.1.1.jar
若进一步了解代码实现请引入文件:alipay-sdk-java*
-source.jarcommons-logging-1.1.1-sources.jar
3、调用示例
传入服务器创建订单所需参数参考文档:
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Q48Wtz&treeId=193&articleId=105465&docType=1
参考事例代码:
//实例化客户端
AlipayClient client = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",APP_ID,APP_PRIVATE_KEY,"json","GBK",ALIPAY_PUBLIC_KEY);
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
//此次只是参数展示,未进行字符串转义,实际情况下请转义
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端配置
参考文档:
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.rSXklx&treeId=193&articleId=105296&docType=1
1、下载SDK并导入
下载地址:
https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1下载后导入工程中
2、注册Activity并添加权限
3、添加混淆规则
-libraryjars libs/alipaySDK-20150602.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、调用支付接口
需要在新线程中调用支付接口(可参考alipay_demo实现)获取PayTask支付对象调用支付(支付行为需要在独立的非ui线程中执行),代码示例:
final String orderInfo = info; // 订单信息
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(DemoActivity.this);
String result = alipay.payV2(orderInfo,true);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
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传输数据。
猜你喜欢
- 2025-03-19 深入理解单例模式:静态内部类单例原理
- 2025-03-19 Java设计模式-外观模式(java设计模式装饰)
- 2025-03-19 吊打面试官(七)--Java语言static关键字一文全掌握
- 2025-03-19 java静态语句块,语句块,构造函数的执行顺序_v1
- 2025-03-19 Java静态三剑客(静态内部类/静态方法/静态类)的正确打开方式
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)