JAVA对接支付宝(H5、APP、小程序)

一.准备工作

配置申请地址 https://open.alipay.com/platform/home.html(开发对接中需要以下参数,参数请务必妥善保管,不可泄露)
详细接口或参数说明,以支付宝官方文档为准, 支付宝API网址(https://opendocs.alipay.com/apis)

//支付宝网关地址:https://openapi.alipay.com/gateway.do 
//支付宝申请的APPID 
//商户应用私钥(与支付宝数据交互时,保证数据安全,防止数据被篡改) 
//支付宝公钥(与支付宝数据交互时,保证数据安全,防止数据被篡改) 
//签名算法类型(RSA2或者RSA,支付宝推荐使用RSA2) 
//编码格式(utf-8,gb2312,gbk) 

二.导入支付宝依赖(https://mvnrepository.com)

<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.9.124.ALL</version>
</dependency>

三.代码实现

1.1 H5支付

//网关地址,APPID,商户应用私钥,数据格式,编码格式,支付宝公钥,签名算法类型
AlipayClient alipayClient = new DefaultAlipayClient(aliPayGateway,appID,rsa_private_key,format,charset,alipayPublicKey,signType);//不同支付类型需使用不同的请求对象
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
//请求参数集合对象,除了公共参数之外,所有参数都可通过此对象传递(不同支付类型需使用不同的请求参数对象)
AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
//订单描述
model.setBody("订单描述");
//订单标题
model.setSubject("显示效果见于下图的标题");
//商户订单号
model.setOutTradeNo(orderNo);
//订单的过期时长(取值为5m - 15d,即五分钟到十五天)
model.setTimeoutExpress("30m");
//订单总金额
model.setTotalAmount(String.valueOf(cashNum));
//产品码  QUICK_WAP_WAY:无线快捷支付产品
model.setProductCode("QUICK_MSECURITY_PAY");
//用户付款中途退出返回商户网站的地址
model.setQuitUrl("https://wwww.baidu.com");
request.setBizModel(model);
//支付成功后的跳转地址
request.setReturnUrl("支付成功之后的跳转地址");
//支付成功后的回调地址(此地址必须为公网地址,用于支付宝收到用户付款之后,通知我们的服务端,我们可以在此接口中更改订单状态为已付款或后续操作)
request.setNotifyUrl(aliPayNotifyUrl);
String orderStr = "";
AlipayTradeWapPayResponse responseH5 = null;
try {
	//获取支付宝返回格式,当前是以表单的方式进行返回,可以设置为 url 的方式返回 支付连接
    responseH5 = alipayClient.pageExecute(request);
    //以url的方式进行返回
   // aliPayUrl  = alipayClient.pageExecute(request,"GET").getBody();
} catch (AlipayApiException e) {
    return ReturnUtils.returnVal(CommonConstants.appCode.UNKNOWNERROR.get(),null);
}
orderStr = responseH5.getBody();
Map<String, String> result = new HashMap<String, String>();
result.put("orderStr", orderStr);
result.put("outTradeNo", orderNo);
return ReturnUtils.returnVal(CommonConstants.appCode.SUCCESS.get(), result);

1.2.响应参数(前端解析表单或者跳转URl,取决于Java的返回)

{
    "code": 49000,
    "msg": "操作成功",
    "result": {
        "orderStr": "<form name=\"punchout_form\" method=\"post\" action=\"https://openapi.alipay.com/gateway.do?charset=utf-8&method=alipay.trade.wap.pay&sign=
     jZpBgo2oaAvd%2FAyXEnWlvd8PRRdJAaaI%2B35bTg4QDvhCaPY3X2lSi0Gb7AXDqKfPe%2BwDHMjwWkFCsl9Pu%2F%2BYZBDqof7w0NxJL5V2eqfuKzRIzRpEbmTgDbWovGPvbYD8lYK%2BJ41QpcJUFZzi%2BPQ4GCmWIbTj
     %2FMypJVvqWptpzo57kdXqcaydaP2CK0WhkDhMtqQOFFc%2BiEw9%2Bj6TyZ1BtZM9zcGsBQlBaw%2FhMxIlogOHP5C3vadZPWluvI%2FR18ywoduxdbueJ2Dkblpph3mRe8m6buXelMOqjeT5r9jwnrYu4pxa%2Bj0CMyqSFGJ
     tB0z%2BwaOC1T5MGDAUDQdq6U957A%3D%3D&return_url=http%3A%2F%2F192.168.16.108%3A8041%2Fmall%2Fcommodity%2FpaymentByPay%3Fid%3D1100%26uid%3D2%26hash%3D39364710049877767526540774
      15810075258431176020006439440944207350&notify_url=http%3A%2F%2Ftest.hqjplatform.com%2Fmall%2Fapp%2FmodifyOrderCurstate&version=1.0&app_id=2021001181677544&sign_type=RSA2&time
     stamp=2021-09-03+09%3A07%3A39&alipay_sdk=alipay-sdk-java-dynamicVersionNo&format=json\">\n<input type=\"hidden\" name=\"biz_content\" value=\"{&quot;body&quot;:&quot;优选商城订单
      &quot;,&quot;out_trade_no&quot;:&quot;243545656435254654654&quot;,&quot;product_code&quot;:&quot;QUICK_MSECURITY_PAY&quot;,&quot;quit_url&quot;:&quot;http:\/\/192.168.16.108:8041\
      /mall\/commodity\/getPayMent\/1100?uid=2&hash=3936471004987776752654077415810075258431176020006439440944207350&quot;,&quot;subject&quot;:&quot;优选商城&quot;,&quot;timeout_express&quot;:
     &quot;30m&quot;,&quot;total_amount&quot;:&quot;0.1&quot;}\">\n<input type=\"submit\" value=\"立即支付\" style=\"display:none\" >\n</form>\n<script>document.forms[0].submit();</script>",
        "outTradeNo": "243545656435254654654"
    }
}

1.3.进行支付

在这里插入图片描述

1.4. H5支付的补充

//服务端返回支付的支付表单操作可能很很麻烦,可以转换为Https的支付链接地址
String payLink = alipayClient.pageExecute(request,"GET").getBody();
{
    "code": 49000,
    "msg": "操作成功",
    "result": {
        "orderStr": "https://openapi.alipay.com/gateway.do?alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2021001181677544&biz_content=%7B%22body%22%3A%22%E4%BC%98%E9%80%89%E5%95%86%E5%9F%8E%E8%AE%A2%E5%8D%95%22%2C%22out_trade_no%22%3A%22lmc_1bff0c78856a4c2aa5c84caaf491a101%22%2C%22product_code%22%3A%22QUICK_WAP_PAY%22%2C%22quit_url%22%3A%22http%3A%5C%2F%5C%2Fwww.baidu.com%22%2C%22subject%22%3A%22%E4%BC%98%E9%80%89%E5%95%86%E5%9F%8E%22%2C%22timeout_express%22%3A%2230m%22%2C%22total_amount%22%3A%227779.97%22%7D&charset=utf-8&format=json&method=alipay.trade.wap.pay&notify_url=http%3A%2F%2Ftest.hqjplatform.com%2FoptimizingMall%2FpayService%2FaliPayNotify&return_url=http%3A%2F%2Fwww.baidu.com&sign=EZ4MSYUyaC2tLtO%2FZfO1%2B7jPxzsj%2FGHil9OwZ4%2B5tKNannkGqSa7rXbLaN3ELh0yibuwRqb6llYfrnASzvmFbJRFE7S0C%2BO9cGzrEQjCmumkyMLuXkPdvHRTNbxSZYwzx3VI8bqinAUMFl3LJ6z%2FWJDokYfTHnS2MWJwi3CL2ya9ZwrwyuFOhp3xZV0SGaZxreoyUCrTCLbjEa%2FKdV5mrEppBg7kliOR4rHLS48l0Ih80ODDgyFKFO1yvP%2FMIiFSiaZ6Z22%2FA5J7ARWb5vns%2FXN7tliZbp1nxC03qXhZ%2FUUh%2FmvzbQUzkUeclAIvjLLOjaaKnLtw7F58yuKgz8saMw%3D%3D&sign_type=RSA2&timestamp=2022-09-02+08%3A52%3A38&version=1.0",
        "outTradeNo": "243545656435254654654"
    }
}

2.APP支付

2.1关键代码

   //网关地址,APPID,商户应用私钥,数据格式,编码格式,支付宝公钥,签名算法类型     
   AlipayClient alipayClient = new DefaultAlipayClient(aliPayGateway,appID,rsa_private_key,format,charset,alipayPublicKey,signType);     
   //不同支付方式需使用不同的请求对象
   AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();     
   //请求参数集合对象,除了公共参数之外,所有参数都可通过此对象传递(不同支付类型需使用不同的请求参数对象)
   AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
   model.setBody("订单描述");
   model.setSubject("订单标题");     
   //订单编号,此订单号不可重复
   model.setOutTradeNo(getTradeNo());
   //设置过期时间
   model.setTimeoutExpress("30m");
   model.setProductCode("QUICK_WAP_WAY");
   model.setTotalAmount(String.valueOf(cashNum));
   request.setBizModel(model);
   //设置回调地址
   request.setNotifyUrl("支付成功后,支付宝来回调的地址,此地址必须为公网地址,否则出现调不通");
   String orderStr = "";
   AlipayTradeAppPayResponse response1 = null;
   try {
       response1 = alipayClient.sdkExecute(request);
   } catch (AlipayApiException e) {
       return ReturnUtils.returnVal(CommonConstants.appCode.UNKNOWNERROR.get(), null);
   }
   orderStr = response1.getBody();
   Map<String, String> result = new HashMap<String, String>();
   result.put("orderStr", orderStr);
   result.put("outTradeNo", getTradeNo());
   return ReturnUtils.returnVal(CommonConstants.appCode.SUCCESS.get(), result);

2.2 返回

	//此响应信息为自己包装过的数据,result数据返回至APP即可{
    "code": 49000,
    "msg": "操作成功",
    "result": {
        "orderStr": "alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2021001181677544&biz_content=%7B%22body%22%3A%2223212%22%2C%22out_trade_no%22%3A%22d89006ef-630b-41e5-a78e-3fee47e72506%22%2C%22product<br>     _code%22%3A%22QUICK_WAP_WAY%22%2C%22subject%22%3A%22%E6%94%AF%E4%BB%98%E5%AE%9D%E6%94%AF%E4%BB%98%22%2C%22timeout_express%22%3A%2230m%22%2C%22total_amount%22%3A%22null%22%7D&charset=utf-8<br>     &format=json&method=alipay.trade.app.pay&notify_url=http%3A%2F%2Ftest.hqjplatform.com%2Fmall%2Fapp%2FmodifyOrderCurstate&sign=ffaE9yTKYUXpKm%2FeVr2Uc1kt4DVPCutvfOg5h%2BvnaMuZgSqWuSwYCFkIheF6dw<br>     4PwjSX2gLDMROVdVzDzdpwRuSJpVZ2iNsSHR3Fs%2FLAKaHBJSzXO5ZM2emId1nVRIvdcZekpW3Y7FaiqGwBxm9xRir6%2FqV9ahmMZOyefmCzIhfl6WEIWyJgEDzVAKKlqwDZ%2FKmpJNscODi4fxUgVvaZpOre27QrSd%2Fi3ykoMbp6YtTs5aQg3HfcB9H8va<br>     drOSejMxEU8pd0bWMuZDl5BiDBx49DSbA%2FRbLfQbpXYh7oSyOrdDaIletI%2FwSy0UVa6%2BD93ywFg%2BpZ7UcEu%2Ff7FVoeJA%3D%3D&sign_type=RSA2&timestamp=2021-09-03+14%3A07%3A16&version=1.0",
        "outTradeNo": "980363f7-3ece-4d71-8cf1-85a9b08ffde7"
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 小程序蓝牙对接H5链接,是指通过微信小程序的蓝牙接口,将小程序H5页面进行无线链接,实现高效快捷的数据传输和交互。 具体来说,小程序蓝牙对接H5链接需要以下步骤: 1、在小程序中调用蓝牙接口,扫描周围的蓝牙设备,选中目标设备,进行配对和连接。 2、在H5页面中引入JS蓝牙库,建立与小程序的无线链接,并进行数据传输和交互。 3、在小程序H5页面中实现数据的解码和编码,以确保数据传输的安全性和准确性。 4、在代码编写过程中,需要注意兼容性、稳定性和效率等因素,保证小程序蓝牙对接H5链接的顺畅运行。 通过小程序蓝牙对接H5链接,可以实现手机和其他物联网设备之间的数据传输和控制,为用户提供更加智能、便捷的使用体验,提高用户的生活品质。 ### 回答2: 小程序蓝牙对接H5链接是指通过小程序的蓝牙开放能力,将小程序H5链接进行无缝对接,实现蓝牙设备的连接与数据传输。该技术的核心是小程序蓝牙接口,借助这个接口,小程序可以通过蓝牙协议与外部设备进行通信,获取设备数据,同时也可以将数据传递给外部设备。 通过小程序蓝牙对接H5链接,用户可以方便地使用蓝牙设备进行数据交互,实现多种功能,如传输图片、音频、视频、文件等。在使用过程中,H5页面可以实时显示设备数据并进行交互,增强了用户体验。 小程序蓝牙对接H5链接具有以下优点: 1. 稳定可靠:小程序蓝牙接口具有高效、稳定的数据传输能力,保证数据传输时的可靠性和稳定性。 2. 多设备支持:小程序蓝牙对接H5链接可以同时支持多个蓝牙设备的连接,实现多设备的数据传输。 3. 远距离传输:小程序蓝牙对接H5链接可以实现对远距离的设备进行数据传输,提高了移动性和便捷性。 4. 易开发:小程序蓝牙对接H5链接支持多种开发语言和平台,开发人员可以根据自己的喜好选择开发环境和开发工具,降低了开发成本。 总的来说,小程序蓝牙对接H5链接是一种非常实用的技术,具有广泛的应用场景和前景,可以方便用户使用蓝牙设备进行数据交互,提高用户体验和使用效果。 ### 回答3: 小程序是一种轻量级的应用程序,用户可以在微信中直接使用。而蓝牙技术则是一种无线通讯协议,可以用于在设备之间传输数据。 将小程序与蓝牙技术对接,可以实现很多实际应用场景。例如,一个小程序可以连接到一个蓝牙设备,从而读取设备中的数据;或者通过蓝牙技术控制设备的工作状态等。 对于蓝牙技术与H5链接的对接,则可以借助一些现有的技术实现。例如,可以使用Web Bluetooth API来进行蓝牙与H5链接的对接。这样,通过蓝牙设备可以直接控制H5页面中的内容,也可以将H5页面中的数据传输到蓝牙设备中,进行进一步的处理或存储。 总之,小程序蓝牙对接H5链接可以让用户在微信中、通过蓝牙技术,直接连接到各类设备,更方便的使用各类产品。同时,这也促进了各类传感器技术和互联网技术的结合,增强了互联网的智能化程度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值