1.支付宝开放平台https://open.alipay.com 新增应用并签约手机网站支付/APP支付。

2.服务端使用java, 集成支付宝sdk。

3.为方便以后更多支付方式扩展, 先定义接口, 需要新的支付方式只需实现该接口, 以支付宝为例。

public interface AliPayConfig {

/**

* 获取 App ID

*

* @return App ID

*/

String getAppID();

/**

* 获取 APP_PRIVATE_KEY

*

* @return APP_PRIVATE_KEY

*/

String getAppPrivateKey();

/**

* 获取 ALIPAY_PUBLIC_KEY

*

* @return ALIPAY_PUBLIC_KEY

*/

String getAlipayPublicKey();

/**

* 获取 支付宝网关

*

* @return 支付宝网关

*/

String getAlipayGateway();

/**

* 获取 json

*

* @return json

*/

String getFormat();

/**

* 获取 Charset

*

* @return Charset

*/

String getCharset();

/**

* 获取 SignType

*

* @return SignType

*/

String getSignType();

}

4.现在想对接支付宝的手机支付接口, 先实现配置接口。

public class AliWapConfig implements AliPayConfig {

//沙箱账号

private static final String ALIPAY_APP_ID = "";

private static final String ALIPAY_GATEWAY = "https://openapi.alipaydev.com/gateway.do";

private static final String ALIPAY_APP_PRIVATE_KEY = "";

private static final String ALIPAY_PUBLIC_KEY = "";

@Override

public String getAppID() {

return ALIPAY_APP_ID;

}

@Override

public String getAppPrivateKey() {

return ALIPAY_APP_PRIVATE_KEY;

}

@Override

public String getAlipayPublicKey() {

return ALIPAY_PUBLIC_KEY;

}

@Override

public String getAlipayGateway() {

return ALIPAY_GATEWAY;

}

@Override

public String getFormat() {

return "json";

}

@Override

public String getCharset() {

return "UTF-8";

}

@Override

public String getSignType() {

return "RSA2";

}

}

5.实例化配置对象, 各种支付方式集成。

@Configuration

public class Config {

@Value("${weixin.pay.useSandbox:false}")

private boolean useSandbox;

@Autowired

private OkHttpClient okHttpClient;

@Bean

public WxConfig wxConfig() {

return new WxConfig();

}

@Bean

public WxMiniConfig wxMiniConfig() {

return new WxMiniConfig();

}

@Bean

public WxFasterConfig wxFasterConfig() {

return new WxFasterConfig();

}

@Bean

public AliWapConfig aliWapConfig() {

return new AliWapConfig();

}

@Bean("wxAPay") //微信app_A支付

public WXPay wxAPay() {

return new WXPay(wxConfig(), WXPayConstants.SignType.MD5, useSandbox, okHttpClient);

}

@Bean("wxMiniPay") //微信小程序支付

public WXPay wxMiniPay() {

return new WXPay(wxMiniConfig(), WXPayConstants.SignType.MD5, useSandbox, okHttpClient);

}

@Bean("wxBPay") //微信app_B支付

public WXPay wxBPay() {

return new WXPay(wxFasterConfig(), WXPayConstants.SignType.MD5, useSandbox, okHttpClient);

}

@Bean("aliWapPay") //支付宝H5支付

public AlipayClient aliFasterWapClient() {

AliWapConfig config = aliWapConfig();

return new DefaultAlipayClient(config.getAlipayGateway(),

config.getAppID(), config.getAppPrivateKey(), config.getFormat(), config.getCharset(),

config.getAlipayPublicKey(), config.getSignType());

}

}

6.配置类写好之后就可以下单了

public Order order4F(@RequestBody Order order) {

//生成订单操作

//先保存订单信息,供失败后可以查询

saveOrder(order);

switch (order.getPayType()) {

case Order.PAY_TYPE_WXPAY://微信支付

wxOrder(order);

break;

case Order.PAY_TYPE_ALIPAY://支付宝支付

aliOrder4Wap(order);

break;

default:

break;

}

//微信支付更新订单prepayId

if (Order.PAY_TYPE_WXPAY.equals(order.getPayType())) {

saveOrder(order);

}

return order;

}

private void aliOrder4Wap(Order order) {

if (!Order.PAY_TYPE_ALIPAY.equalsIgnoreCase(order.getPayType())) {

return;

}

AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();

alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp");

alipayRequest.setNotifyUrl(alipayNotifyUrl);

alipayRequest.setBizContent("{" +

" \"out_trade_no\":\"" + order.getBizId() + "\"," +

" \"total_amount\":\"" + order.getAmount() + "\"," +

" \"subject\":\"***\"," +

" \"product_code\":\"QUICK_MSECURITY_PAY\"" +

" }");//填充业务参数

//支付宝返回的form表单

String form="";

try {

form = alipayClient.pageExecute(alipayRequest).getBody();

logger.warn("支付宝订单生成结果:" + form);

} catch (AlipayApiException e) {

logger.error(e.getErrMsg(), e);

ServiceException.builder().setErrorMsg(e.getErrMsg()).throwEx();

}

order.setForm(form);

}

7.拿到上面接口返回的form表单, 在前台工程通过response直接返回即可, 剩下的交给前端, 走完支付流程即可,到此结束。

支付宝html5接入,app和h5怎样对接支付宝支付接口?相关推荐

  1. java支付接口开发原理_java对接微信支付接口开发的过程是什么?

    java对接微信支付接口开发的过程是什么?以下是小编整理的java对接微信支付接口实现的方法和过程,有需要的朋友可以学习以下的java对接微信支付接口内容. java对接微信支付接口开发的过程是什么? ...

  2. JPA框架微信支付对接-V3支付接口,V2退款接口对接,复制即用

    框架:springDateJPA 对接微信支付首先需要需要在微信商户平台注册微信商户号 微信商户平台入口 微信公众平台入口 这里主要是微信支付的方式,一共有七种,我这里主要对接了3种,App支付,JS ...

  3. 对接第三方支付接口-类似文件锁的编程小技巧

    在这次对接支付接口的时候,有如下场景:用户还款的时候,APP端只要请求了支付接口后,正常情况下,支付接口会同步返回结果状态,并且异步通知是否成功,支付状态以异步通知为准.这样的场景会出现一个问题,如果 ...

  4. 对接第三方支付接口-记录

    对接支付接口,得知这种第三方的支付接口的对接方式一般为:组装接口需要的参数,以json数据格式或者其他格式(大多数为json),请求第三方支付接口的url,并且将回调的通知地址放在参数中,等支付完成后 ...

  5. 对接银联支付接口详解java版mac开发

    首先,这是一篇工具类的文章了,也是为了备忘,需求就是微信公众号的开发后台对接支付,有银联,支付宝,微信等,我负责写银联的接口.明天大年三十,今天在公司码完字也要灰走了,祝大家新年快乐,发大财. 先说一 ...

  6. php h5微信公众号支付接口,微信公众号H5支付接口调用方法

    本文实例为大家分享了 微信内h5调用支付接口的具体代码,供大家参考,具体内容如下 官方文档 微信公众号h5接口调用 // 判断微信版本是否在5.0以上 // window.navigator.user ...

  7. 国外html5转app store,H5唤醒移动端APP,或跳转到App Store和应用宝

    //实际上就是新建一个iframe的生成器 var createIframe=(function(){ var iframe; return function(){ if(iframe){ retur ...

  8. ios 嵌入html5 传值,app中H5与ios交互中的搭桥 传递参数

    // ios桥 分类列表 function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { ...

  9. 闲鱼跳转APP源码 已对接第三方支付

    教程:修改数据库账号密码直接使用. 源码带有教程! 下载程序:https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd=6zw3

最新文章

  1. mysql sql with_mysql5.7 查询sql 出错: with sql_mode=only_full_group_by
  2. python索引右往左_[Python笔记]序列(一)索引、分片
  3. jquery 验证控件
  4. VMware Resource Pool Recommendations
  5. Ubuntu apt 卸载详解
  6. 一图弄清滴答定时器寄存器 SysTick Registers
  7. dell屏幕亮度调节不了_?戴尔XPS13 7390笔电测评:10代酷睿加持,屏幕/散热/续航升级...
  8. ORA-00054 resource busy and acquire with NOWAIT specified Cause 错误解决方法
  9. java基础 第四章 下(数组)
  10. python网络爬虫实战解析
  11. 5分钟了解Pandas的透视表
  12. 搭建简易客户端从tftp服务器中下载文件
  13. 大学python课本_Python大学实用教程(大学计算机规划教材)/数据工程师系列
  14. delete与垃圾回收机制
  15. echarts南丁格尔玫瑰图每块单独设置颜色
  16. forcast iframe 及 四款播放器
  17. Amazon SageMaker简直就是机器学习平台的天花板
  18. 怎样将png格式的图片缩小?如何快速压缩图片的大小?
  19. linux系统漏洞升级方法,OpenSSL “Heartbleed”心脏流血漏洞升级方法
  20. HTTP 404 错误 的具体意思

热门文章

  1. 计算机课的底纹在哪,2017计算机二级MSOffice考试边框与底纹的设置
  2. 麒麟659鸿蒙系统,华为官宣自研系统,麒麟659以上的华为手机可以直接切换新系统...
  3. nginx安装crt证书
  4. springboot毕设项目流动人口信息管理系统9i8kh(java+VUE+Mybatis+Maven+Mysql)
  5. 顺丰 android 面试题,经典的顺丰面试问题
  6. c语言程序设计策划书,C语言程序设计大赛策划书(陈雷)
  7. 华为p20所有权限都打开了,QQ消息依然不弹窗提醒?
  8. java+static知乎_用Java抓取知乎日报信息
  9. 科技新品 | 索尼可换镜头Vlog相机;LG电子全球首款卷曲屏电视;卡西欧《吃豆人》合作款数码手表...
  10. 卡巴斯基:2019Q3拒绝服务攻击趋势报告