支付宝支付(H5/APP)快速接入

编程入门 行业动态 更新时间:2024-10-22 21:17:58

<a href=https://www.elefans.com/category/jswz/34/1767806.html style=支付宝支付(H5/APP)快速接入"/>

支付宝支付(H5/APP)快速接入

  1. 支付宝开放平台 新增应用并签约手机网站支付/APP支付

  2. 服务端使用java, 集成支付宝sdk, 下载地址:=g:com.alipay.sdk AND a:alipay-sdk-java&core=gav 或

    	<dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>3.6.0.ALL</version></dependency>
    
  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();}
  1. 现在想对接支付宝的手机支付接口, 先实现配置接口
		public class AliWapConfig implements AliPayConfig {//沙箱账号private static final String ALIPAY_APP_ID = "";private static final String ALIPAY_GATEWAY = ".do";private static final String ALIPAY_APP_PRIVATE_KEY = "";private static final String ALIPAY_PUBLIC_KEY = "";@Overridepublic String getAppID() {return ALIPAY_APP_ID;}@Overridepublic String getAppPrivateKey() {return ALIPAY_APP_PRIVATE_KEY;}@Overridepublic String getAlipayPublicKey() {return ALIPAY_PUBLIC_KEY;}@Overridepublic String getAlipayGateway() {return ALIPAY_GATEWAY;}@Overridepublic String getFormat() {return "json";}@Overridepublic String getCharset() {return "UTF-8";}@Overridepublic String getSignType() {return "RSA2";}}
  1. 实例化配置对象, 各种支付方式集成, 爽的一批啊
	@Configurationpublic class Config {@Value("${weixin.pay.useSandbox:false}")private boolean useSandbox;@Autowiredprivate OkHttpClient okHttpClient;@Beanpublic WxConfig wxConfig() {return new WxConfig();}@Beanpublic WxMiniConfig wxMiniConfig() {return new WxMiniConfig();}@Beanpublic WxFasterConfig wxFasterConfig() {return new WxFasterConfig();}@Beanpublic 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());}}
  1. 配置类写好之后就可以下单了
    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;}//微信支付更新订单prepayIdif (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(".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);}
  1. 拿到上面接口返回的form表单, 在前台工程通过response直接返回即可, 剩下的交给前端, 走完支付流程即可,到此结束

  2. 部分代码注释不符合规范的地方均为手动添加的解释

     	支付宝APP支付接口
    
		private void aliOrder4App(Order order) {if (!Order.PAY_TYPE_ALIPAY.equalsIgnoreCase(order.getPayType())) {return;}AlipayTradeAppPayRequest alipayRequest = new AlipayTradeAppPayRequest ();AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();model.setBody("余额充值");model.setSubject("充值");model.setOutTradeNo(order.getBizId());model.setTimeoutExpress("30m");model.setTotalAmount(order.getAmount());model.setProductCode("QUICK_MSECURITY_PAY");alipayRequest.setBizModel(model);alipayRequest.setNotifyUrl(alipayNotifyUrl);try {String orderString = alipayClient.sdkExecute(alipayRequest).getBody();order.setOrderString(orderString);logger.warn("支付宝订单生成结果:" + orderString);} catch (AlipayApiException e) {logger.error(e.getErrMsg(), e);ServiceException.builder().setErrorMsg(e.getErrMsg()).throwEx();}}

更多推荐

支付宝支付(H5/APP)快速接入

本文发布于:2024-02-27 02:23:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1704848.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:支付宝   快速   APP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!