300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 支付宝小程序卡包开发(流程+详细案例+商户会员卡)

支付宝小程序卡包开发(流程+详细案例+商户会员卡)

时间:2020-10-30 11:35:29

相关推荐

支付宝小程序卡包开发(流程+详细案例+商户会员卡)

首先先让大家看看开发出来的卡是什么样子的如下:

开发出来是这个效果,其中包括步骤如下:

快速接入

第一步:创建小程序

要在您的小程序内使用 商户会员卡功能,您需要首先完成 开发者入驻 并 创建小程序 。

第二步:添加功能

在小程序详情页的功能列表中添加“商户会员卡”和“支付宝卡包”两个功能包,如下图所示:

第一步:创建卡模板

第二步:配置开卡表单(看个人业务了可有可无表单项)

第三步:获取投放链接

第四步:小程序内唤起会员开卡授权页面

第五步:获取用户填写的表单信息

第六步:商户开卡给用户

下面就是java写的接口说明了

/save 存支付宝信息接口

/getcode 根据 code获取AccessToken 和UserId(获取支付宝 唯一id)接口

/shenfenrz 拉取支付宝身份验证接口

/model 创建卡模板接口

/chuangjian 配置开卡表单信息接口

/fafang 投放链接接口

/userInfo 获取表单信息接口

/opencard 支付宝开卡接口

/imgurllog 获取卡包log图片接口

/imgurlbj 获取卡包背景图片接口

/delrz 删除支付宝信息接口

/delcard 会员卡销卡接口

其中/shenfenrz是拉取人脸识别认证的接口具体功能效果如下图:

上代码:

1.1 pom.xml文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><packaging>war</packaging><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 打war包时加入此项, 告诉spring-boot tomcat相关jar包用外部的,不要打进去 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.10.0.ALL</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.48</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>sqljdbc4</artifactId><version>4.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

1.2 application.yml

server:port: 8888spring:application:name: cloud-provider-servicedatasource:# type: com.alibaba.druid.pool.DruidDataSource#当前数据源操作类型# driver-class-name: org.gjt.mm.mysql.Driver #mysql驱动包# url: jdbc:mysql://localhost:3306/db326?useUnicode=true&characterEncoding-utr-8&useSSL=false# username: root# password: rooturl: jdbc:sqlserver://localhost;DatabaseName=dzrclkcsusername: sapassword: Dingzhou!#%# url: jdbc:sqlserver://192.168.1.65;DatabaseName=ccflow-dzrclk# username: sa# password: admin123W#使用druid数据源type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.microsoft.sqlserver.jdbc.SQLServerDrivermybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.demo.entities #所有Entity别名类所在包# configuration: map-underscore-to-camel-case=true

1.3 主启动

package com.example.demo;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;import org.springframework.context.annotation.ImportResource;@SpringBootApplication@MapperScan("com.example.demo.dao")@ImportResource(locations = {"classpath:mapper/PaymentMapper.xml"})public class DemoApplication extends SpringBootServletInitializer {// 重写 configure方法@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application){return application.sources(DemoApplication.class);}public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);System.err.println("111111111");}}

1.4 业务类

package com.example.demo;import com.alibaba.fastjson.JSONObject;import com.alipay.api.AlipayApiException;import com.alipay.api.AlipayClient;import com.alipay.api.DefaultAlipayClient;import com.alipay.api.FileItem;import com.alipay.api.request.*;import com.alipay.api.response.*;import com.example.demo.entities.NDShenPi;import com.example.demo.entities.userinfo;import com.example.demo.service.sfrz;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.ResponseBody;import .URLEncoder;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.UUID;/*** @author : 宋银义* @date : -05-28 09:48**/@Controllerpublic class shenfenrz {@Autowiredprivate sfrz sfrz;/*** 个人回调地址*/public static final String REDIRECT_URI = "";/*** 支付宝网关(固定)*/public static final String URL = "/gateway.do";/*** APPID 即创建应用后生成*/public static final String APP_ID = "00116xxx";/*** 开发者私钥,由开发者自己生成*/public static final String APP_PRIVATE_KEY = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDWm+wVrCh70oqmRpUtA/RAn7JhbJJaJ9yznVFqMdHk7jhIIP5J2pxQbIDAb/5iA8TuyURp6yu0uq3B1+fuf9PL/A7p8b8V4lyrMMD+5KrXZtZO7TfOLQwm1D+BxkMaY6LhFXs0LMf6jEndz+IvZZY0mi4RmkplkEWBOy+UoueEcF/LFkNXAr3VQy6DztnN1rlTuic0Bbb+uRMJSdvn9/H1OmbTC5mqYFOM5uB2jZYR49lhyLew3o02SLbvtZ9ML5xlg9lm8RSQkLC/2LO9fk9QO+P9HB8POoDwmFH0Rwccuz+nwVC6nEQgouKlGrFb3s/yRlsUFBctSmncsIpLgKYZAgMBAAECggEBANZNHyPJJSf4ZzGA/AfWkfpSPgthIofalF3bs2fq1eDYLOWB5MuU/FCm+K6xZwEzKF0WKDXoe11eqJIP6m9TwAhK7A2atKjCwKzF44LkjuDHtStdYEOG4kKH4d7SP0HDyusey0efjBZaLozLwN55f9OJPoWfX7kppu5UTsALKEsrIeVozTIFKG6gN2BgmH54T5nBE8x0HYHq5qymyeHnCiIPaqaoTxHzQK/n4hjS3zbbU214WbbyVxOyphTTn9RbHlLUq0V0opMne2ycn1iEKMPY4MyePZWV/y1syqP7WZY0MyNpicN2LeXOMEkZpFGGgxGL7RmCdHO/iOhnp31tIjECgYEA/8asi72F6C1kGVVChl19RoEV1KPv5YQQ9m6V6roXhPUhhxNLu781UCvB/14NGeZfNKcIXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";/*** 参数返回格式,只支持json*/public static final String FORMAT = "json";/*** 编码集,支持GBK/UTF-8*/public static final String CHARSET = "UTF-8";/*** 支付宝公钥,由支付宝生成*/public static final String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq9xTpJDfyWSwel7o6KXQ92o2Y5qSCMHoC8FFn5vFibWD/s5TcGSVzyMgiBrqqCPyY5Qxxxxxxxxxxxxxxxx";/*** 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2*/public static final String SIGN_TYPE = "RSA2";/*** 接口权限值,目前只支持auth_user和auth_base两个值-->>* auth_base:以auth_base为scope发起的网页授权,是用来获取进入页面的用户的userId的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(通常是业务页面)。* auth_user:以auth_user为scope发起的网页授权,是用来获取用户的基本信息的(比如头像、昵称等)。但这种授权需要用户手动同意,用户同意后,就可在授权后获取到该用户的基本信息。若想获取用户信息,scope的值中需要有该值存在,如scope=auth_user,auth_base。*/public static final String SCOPE = "auth_base";@GetMapping("/delcard")@ResponseBodypublic HashMap<String, String> selectcard(String appid) throws AlipayApiException {HashMap<String, String> map = new HashMap<>();AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayMarketingCardDeleteRequest request = new AlipayMarketingCardDeleteRequest();UUID uuid = UUID.randomUUID();String uuid1=String.valueOf(uuid);userinfo userinfo=sfrz.selectopcardid(appid);String opencardid = "";if (userinfo.getOpencardid()!=null){opencardid = userinfo.getOpencardid();}else {opencardid = "";}long time = new Date().getTime();request.setBizContent("{" +"\"out_serial_no\":\""+uuid1+"\"," +"\"target_card_no\":\""+opencardid+ "\"," +"\"target_card_no_type\":\"BIZ_CARD\"," +"\"reason_code\":\"USER_UNBUND\"," +"\"ext_info\":\"{\\\"new_card_no\\\":\\\""+time+"\\\",\\\" donee_user_id\\\":\\\""+appid+"\\\"}\"" +" }");AlipayMarketingCardDeleteResponse response = alipayClient.execute(request);String AlipayResultS = response.getBody();JSONObject AlipayResult = JSONObject.parseObject(AlipayResultS);if (AlipayResult != null) {JSONObject AlipayJson = AlipayResult.getJSONObject("alipay_marketing_card_delete_response");try {String msg = AlipayJson.getString("msg");String biz_serial_no = AlipayJson.getString("biz_serial_no");String code = AlipayJson.getString("code");map.put("msg",msg);map.put("biz_serial_no",biz_serial_no);map.put("code",code);} catch (Exception e) {e.getMessage();}}if(response.isSuccess()){System.out.println("调用成功");} else {System.out.println("调用失败");}return map;}@GetMapping("/delrz")@ResponseBodypublic HashMap<String, String> delappid(String sfzh){HashMap<String, String> map = new HashMap<>();int i = sfrz.delappid(sfzh);if (i>0){map.put("success","true");}else {map.put("success","false");}return map;}@GetMapping("/imgurlbj")@ResponseBodypublic HashMap<String, String> imgurlbj() throws AlipayApiException {HashMap<String, String> map = new HashMap<>();AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayOfflineMaterialImageUploadRequest request = new AlipayOfflineMaterialImageUploadRequest();request.setImageType("png");request.setImageName("定州市电子英才服务卡");String classesPath=Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(1);FileItem ImageContent = new FileItem(classesPath+"\\static\\img\\card2.png");System.err.println("user.dir:=="+classesPath);request.setImageContent(ImageContent);UUID uuid = UUID.randomUUID();String uuid1=String.valueOf(uuid);request.setImagePid(uuid1);AlipayOfflineMaterialImageUploadResponse response = alipayClient.execute(request);String AlipayResultS = response.getBody();JSONObject AlipayResult = JSONObject.parseObject(AlipayResultS);if (AlipayResult != null) {JSONObject AlipayJson = AlipayResult.getJSONObject("alipay_offline_material_image_upload_response");try {String msg = AlipayJson.getString("msg");String image_id = AlipayJson.getString("image_id");String image_url = AlipayJson.getString("image_url");map.put("msg",msg);map.put("image_idbj",image_id);map.put("image_urlbj",image_url);} catch (Exception e) {e.getMessage();}}if(response.isSuccess()){System.out.println("调用成功");} else {System.out.println("调用失败");}return map;}@GetMapping("/imgurllog")@ResponseBodypublic HashMap<String, String> imgurllog() throws AlipayApiException {HashMap<String, String> map = new HashMap<>();AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayOfflineMaterialImageUploadRequest request = new AlipayOfflineMaterialImageUploadRequest();request.setImageType("png");request.setImageName("定州市电子英才服务卡");String classesPath=Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(1);FileItem ImageContent = new FileItem(classesPath+"\\static\\img\\logo.png");System.err.println("user.dir:=="+classesPath);request.setImageContent(ImageContent);UUID uuid = UUID.randomUUID();String uuid1=String.valueOf(uuid);request.setImagePid(uuid1);AlipayOfflineMaterialImageUploadResponse response = alipayClient.execute(request);String AlipayResultS = response.getBody();JSONObject AlipayResult = JSONObject.parseObject(AlipayResultS);if (AlipayResult != null) {JSONObject AlipayJson = AlipayResult.getJSONObject("alipay_offline_material_image_upload_response");try {String msg = AlipayJson.getString("msg");String image_id = AlipayJson.getString("image_id");String image_url = AlipayJson.getString("image_url");map.put("msg",msg);map.put("image_idlog",image_id);map.put("image_urllog",image_url);} catch (Exception e) {e.getMessage();}}if(response.isSuccess()){System.out.println("调用成功");} else {System.out.println("调用失败");}return map;}@GetMapping("/opencard")@ResponseBodypublic HashMap<String, String> opencard(String template_id,String accessToken,String appid,String xm,String sfzh) throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayMarketingCardOpenRequest request = new AlipayMarketingCardOpenRequest();String format1="";HashMap<String, String> map = new HashMap<>();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");long time = new Date().getTime();Date date = new Date();String format = sdf.format(date);NDShenPi ndShenPi = sfrz.getselect(sfzh, xm);if (ndShenPi.getCardFiveDQTime()!=null){format1 = sdf.format(ndShenPi.getCardFiveDQTime());}else {format1 = format;}String LianXiRen="";if (ndShenPi.getLianXiRen()!=null){LianXiRen= ndShenPi.getLianXiRen();}else {LianXiRen= "没有填写联系人姓名";}String xingbie="";if (ndShenPi.getXingBie().equals("男")){xingbie="MALE";}else {xingbie="FEMALE";}String shengri="";if(ndShenPi.getShengRi()!=null){shengri=ndShenPi.getShengRi();}else {shengri="";}String lianXiDianHua = "";if(ndShenPi.getLianXiDianHua()!=null){lianXiDianHua = ndShenPi.getLianXiDianHua();}else {lianXiDianHua = "";}UUID uuid = UUID.randomUUID();UUID uuid2 = UUID.randomUUID();String uuid1=String.valueOf(uuid);String uuid3=String.valueOf(uuid2);int i1 = sfrz.save1(appid,uuid3);request.setBizContent("{" +"\"out_serial_no\":\""+uuid1+"\"," +"\"card_template_id\":\""+template_id+"\"," +"\"card_user_info\":{" +"\"user_uni_id\":\""+appid+"\"," +"\"user_uni_id_type\":\"UID\"" +" }," +"\"card_ext_info\":{" +"\"biz_card_no\":\""+uuid3+"\"," +"\"external_card_no\":\"定州市电子英才服务卡\"," +"\"open_date\":\""+format+"\"," +"\"valid_date\":\""+format1+"\"," +"\"level\":\"VIP1\"," +"\"point\":\"88\"," +"\"balance\":\"124.89\"," +/*资金卡余额,单位:元,精确到小数点后两位。*/"\"mdcode_info\":{" +"\"code_status\":\"SUCCESS\"," +"\"code_value\":\"1KFCDY0002\"," +"\"expire_time\":\"-06-09 16:25:53\"," +"\"time_stamp\":"+time+"" +"}," +" \"front_text_list\":[{" +"\"label\":\"专业\"," +"\"value\":\"金融贸易\"" +"}]," +"\"front_image_id\":\"9fxnkgt0QFmqKAl5V2BqxQAAACMAAQED\"" +" }," +"\"member_ext_info\":{" +"\"name\":\""+LianXiRen+"\"," +"\"gende\":\""+xingbie+"\"," +"\"birth\":\""+shengri+"\"," +"\"cell\":\""+lianXiDianHua+"\"" +" }," +"\"open_card_channel\":\"1534000000000008863\"," +"\"open_card_channel_id\":\"2088123123123123\"" +" }");request.putOtherTextParam("app_auth_token", null);AlipayMarketingCardOpenResponse response = alipayClient.execute(request,accessToken);String AlipayResultS = response.getBody();JSONObject AlipayResult = JSONObject.parseObject(AlipayResultS);if (AlipayResult != null) {JSONObject AlipayJson = AlipayResult.getJSONObject("alipay_marketing_card_open_response");try {String msg = AlipayJson.getString("msg");String code = AlipayJson.getString("code");String card_info = AlipayJson.getString("card_info");map.put("msg",msg);map.put("code",code);map.put("card_info",card_info);} catch (Exception e) {e.getMessage();}}return map;}@GetMapping("/userInfo")@ResponseBodypublic HashMap<String, String> userInfo(String template_id,String accessToken,String requestId) throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayMarketingCardActivateformQueryRequest request = new AlipayMarketingCardActivateformQueryRequest();HashMap<String, String> map = new HashMap<>();UUID uuid = UUID.randomUUID();String uuid1=String.valueOf(uuid);String bizContent="{\n" +" \"biz_type\": \"MEMBER_CARD\",\n" +" \"template_id\": \""+template_id+"\",\n" +" \"request_id\": \""+requestId+"\"\n" +"}";request.setBizContent(bizContent);AlipayMarketingCardActivateformQueryResponse response = alipayClient.execute(request,accessToken);String AlipayResultS = response.getBody();JSONObject AlipayResult = JSONObject.parseObject(AlipayResultS);if (AlipayResult != null) {JSONObject AlipayJson = AlipayResult.getJSONObject("alipay_marketing_card_activateform_query_response");try {String msg = AlipayJson.getString("msg");String code = AlipayJson.getString("code");map.put("msg",msg);map.put("code",code);} catch (Exception e) {e.getMessage();}}return map;}@GetMapping("/fafang")@ResponseBodypublic HashMap<String, String> fafang(String template_id) throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayMarketingCardActivateurlApplyRequest request = new AlipayMarketingCardActivateurlApplyRequest();HashMap<String, String> map = new HashMap<>();UUID uuid = UUID.randomUUID();String uuid1=String.valueOf(uuid);String bizContent="{\n" +" \"template_id\": \""+template_id+"\",\n" +" \"out_string\": \"28393932\"\n" +"}";request.setBizContent(bizContent);AlipayMarketingCardActivateurlApplyResponse response = alipayClient.execute(request);String AlipayResultS = response.getBody();JSONObject AlipayResult = JSONObject.parseObject(AlipayResultS);if (AlipayResult != null) {JSONObject AlipayJson = AlipayResult.getJSONObject("alipay_marketing_card_activateurl_apply_response");try {String apply_card_url = AlipayJson.getString("apply_card_url");String msg = AlipayJson.getString("msg");map.put("msg",msg);map.put("apply_card_url",apply_card_url);} catch (Exception e) {e.getMessage();}}return map;}@GetMapping("/chuangjian")@ResponseBodypublic String chuangjian(String template_id) throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayMarketingCardFormtemplateSetRequest request = new AlipayMarketingCardFormtemplateSetRequest();String bizContent="{\n" +"\"template_id\":\""+template_id+"\"," +"\"fields\":{" +"\"required\":\"{\\\"common_fields\\\":[\\\"OPEN_FORM_FIELD_MOBILE\\\"]}\"" +"}" +"}";request.setBizContent(bizContent);AlipayMarketingCardFormtemplateSetResponse response = alipayClient.execute(request);return response.getBody();}/*** 新建模板* appAuthToken如ISV代替商家调用接口,需将商户授权后获取的 app_auth_token 带上;如商家自己调用,则传 null。* bizContent 因该接口业务参数复杂,请详见接口文档*/@GetMapping("/model")@ResponseBodypublic HashMap<String, String> model(String sfzh,String xm,String appid) throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayMarketingCardTemplateCreateRequest request = new AlipayMarketingCardTemplateCreateRequest();String appAuthToken = null;String format1="";String finnalyStatus="";HashMap<String, String> map = new HashMap<String, String>();long time = new Date().getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = new Date();String format = sdf.format(date);NDShenPi ndShenPi = sfrz.getselect(sfzh, xm);/*sfrz.getapp_id()*/String serialNumber=appid;System.err.println("CardFiveDQTime:"+ndShenPi.getCardFiveDQTime());if (ndShenPi.getCardFiveDQTime()!=null){format1 = sdf.format(ndShenPi.getCardFiveDQTime());}else {format1 = format;}String leixing = "";if(ndShenPi.getCardTypeS()!=null){leixing = ndShenPi.getCardTypeS();}else {leixing = "还没有填写";}String card="";if(ndShenPi.getCardNo()!=null){card=ndShenPi.getCardNo();}else {card="没有卡号";}String bizContent="{\n" +" \"request_id\": \""+time+"\",\n" +" \"card_type\": \"OUT_MEMBER_CARD\",\n" +" \"biz_no_prefix\": \"prexupdate\",\n" +" \"biz_no_suffix_len\": \"15\",\n" +/*业务卡号后缀的长度*/" \"write_off_type\": \"none\",\n" +" \"template_style_info\": {\n" +" \"card_show_name\": \"定州市电子英才服务卡\",\n" +" \"logo_id\": \"YVdA4lajQ_irTUhAoOVOaAAAACMAAQED\",\n" +" \"color\": \"rgb(55,112,179)\",\n" +" \"background_id\": \"1Nso6cQtRxmVhyBQvN8h3QAAACMAAQED\",\n" +" \"bg_color\": \"rgb(16,142,233)\"\n" +" },\n" +" \"column_info_list\": [{\n" +" \"code\": \"BENEFIT_INFO\",\n" +" \"more_info\":{\n" +" \"title\": \"扩展信息\",\n" +" \"url\": \"alipays://platformapi/startapp?appId=001164604451&page=pages/activate/index&query="+sfzh+"\",\n" +" \"params\": \"{}\"\n" +" },\n" +" \"title\": \"卡号\",\n" +" \"operate_type\": \"openWeb\",\n" +" \"value\": \""+card+"\"\n" +" }, {\n" +" \"code\": \"NAME\",\n" +" \"title\": \"姓名\",\n" +" \"value\": \""+xm+"\"\n" +" }, {\n" +" \"code\": \"SFZH\",\n" +" \"title\": \"有效日期\",\n" +" \"value\": \""+format1+"\"\n" +" }, {\n" +" \"code\": \"TYPE\",\n" +" \"title\": \"类型\",\n" +" \"value\": \""+leixing+"卡\"\n" +" }],\n" +" \"field_rule_list\": [{\n" +" \"field_name\": \"Balance\",\n" +" \"rule_name\": \"ASSIGN_FROM_REQUEST\",\n" +" \"rule_value\": \"Balance\"\n" +" }]\n" +"}";request.putOtherTextParam("app_auth_token", appAuthToken);request.setBizContent(bizContent);AlipayMarketingCardTemplateCreateResponse response = alipayClient.execute(request);String body = response.getBody();if(response.isSuccess()) {System.err.println("调用成功");System.err.print("response.getBody():=="+response.getBody());//根据业务处理responseString AlipayResultS = response.getBody();JSONObject AlipayResult = JSONObject.parseObject(AlipayResultS);if (AlipayResult != null) {JSONObject AlipayJson = AlipayResult.getJSONObject("alipay_marketing_card_template_create_response");try {String template_id = AlipayJson.getString("template_id");String msg = AlipayJson.getString("msg");map.put("msg",msg);map.put("template_id",template_id);} catch (Exception e) {finnalyStatus = "认证已失效,请重试";}}}return map;}@GetMapping("/shenfenrz")@ResponseBodypublic HashMap<String, String> shenfenrz(String sfzh, String xm, String appid) throws AlipayApiException {HashMap<String, String> map = null;map = new HashMap<>();int i = sfrz.getapp_id(appid,sfzh,xm);System.err.println(i);if (i == 0) {AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayUserCertifyOpenInitializeRequest request = new AlipayUserCertifyOpenInitializeRequest();//new AlipayUserCertifyInfoApplyRequest();//构造身份信息json对象JSONObject identityObj = new JSONObject();//身份类型,必填,详细取值范围请参考接口文档说明identityObj.put("identity_type", "CERT_INFO");//证件类型,必填,详细取值范围请参考接口文档说明identityObj.put("cert_type", "IDENTITY_CARD");//真实姓名,必填String regex = "\\d{15}(\\d{2}[0-9xX])?";String id = sfzh;if (id.matches(regex)) {//证件号码,必填identityObj.put("cert_no", sfzh);} else {map.put("message", "请认真核对身份证证件号码信息");map.put("success", "false");}identityObj.put("cert_name", xm);//证件号码,必填// identityObj.put("cert_no", sfzh);//构造商户配置json对象JSONObject merchantConfigObj = new JSONObject();// 设置回调地址,必填. 如果需要直接在支付宝APP里面打开回调地址使用alipay协议,参考下面的案例:appId用固定值 20000067,url替换为urlEncode后的业务回跳地址// alipays://platformapi/startapp?appId=20000067&url=https%3A%2F%%2Fcertify%2FzmxyBackNew.domerchantConfigObj.put("return_url", "alipays://platformapi/startapp?appId=20000067&url=https%3A%2F%%2Fcertify%2FzmxyBackNew.do");//构造身份认证初始化服务业务参数数据JSONObject bizContentObj = new JSONObject();//商户请求的唯一标识,推荐为uuid,必填String uuid = UUID.randomUUID().toString();bizContentObj.put("outer_order_no", uuid);bizContentObj.put("biz_code", "FACE");bizContentObj.put("identity_param", identityObj);bizContentObj.put("merchant_config", merchantConfigObj);request.setBizContent(bizContentObj.toString());//发起请求AlipayUserCertifyOpenInitializeResponse response = alipayClient.execute(request);String url = "";if (response.isSuccess()) {System.out.println("调用成功");//接口调用成功,从返回对象中获取certify_idString certifyId = response.getCertifyId();url = url(certifyId);//执行后续流程...map.put("certifyId", certifyId);map.put("url", url);if (certifyId != null && url != null) {map.put("success", "2");} else {map.put("success", "3");}} else {System.out.println("调用失败");}return map;} else {map.put("success", "1");NDShenPi ndShenPi = sfrz.getselect(sfzh, xm);System.err.println("ndShenPi:" + ndShenPi);if (ndShenPi != null) {map.put("id", String.valueOf(ndShenPi.getId()));map.put("BillNo", ndShenPi.getBillNo());map.put("OID", String.valueOf(ndShenPi.getOID()));map.put("ShiXiangMingCheng", ndShenPi.getShiXiangMingCheng());map.put("ShiXiangLeiXing", ndShenPi.getShiXiangLeiXing());map.put("ShouLiShiXian", ndShenPi.getShouLiShiXian());map.put("ShiXiangBianMa", ndShenPi.getShiXiangBianMa());map.put("ShouLiBuMen", ndShenPi.getShouLiBuMen());map.put("ShouLiChuangKou", ndShenPi.getShouLiChuangKou());map.put("ShouLiShiJian", ndShenPi.getShouLiShiJian());map.put("ShenQingRen", ndShenPi.getShenQingRen());map.put("ShenQingRenEN", ndShenPi.getShenQingRenEN());map.put("ZhengJianType", ndShenPi.getZhengJianType());map.put("ZhengJianHao", ndShenPi.getZhengJianHao());map.put("Img", ndShenPi.getImg());map.put("ShengRi", ndShenPi.getShengRi());map.put("XingBie", ndShenPi.getXingBie());map.put("MinZu", ndShenPi.getMinZu());map.put("GuoJia", ndShenPi.getGuoJia());map.put("HuKouSuoZaiDi", ndShenPi.getHuKouSuoZaiDi());map.put("XueLi", ndShenPi.getXueLi());map.put("XueLiQuanRiZhi", ndShenPi.getXueLiQuanRiZhi());map.put("QuanRiZhiZhuanYe", ndShenPi.getQuanRiZhiZhuanYe());map.put("HaiWai", ndShenPi.getHaiWai());map.put("XueLiZaiZhi", ndShenPi.getXueLiZaiZhi());map.put("ZaiZhiZhuanYe", ndShenPi.getZaiZhiZhuanYe());map.put("RenCaiLeiBie", ndShenPi.getRenCaiLeiBie());map.put("RenCaiChengHao", ndShenPi.getRenCaiChengHao());map.put("BiYeZhengShuBH", ndShenPi.getBiYeZhengShuBH());map.put("YJTime", ndShenPi.getYJTime());map.put("YouXiang", ndShenPi.getYouXiang());map.put("DianHua", ndShenPi.getDianHua());map.put("ShouJi", ndShenPi.getShouJi());map.put("YuanDanWei", ndShenPi.getYuanDanWei());map.put("YuanZhiCheng", ndShenPi.getYuanZhiCheng());map.put("YinJinLeiXing", ndShenPi.getYinJinLeiXing());map.put("QianYueQiXian", ndShenPi.getQianYueQiXian());map.put("ZhiCheng", ndShenPi.getZhiCheng());map.put("DanWei", ndShenPi.getDanWei());map.put("DiZhiQu", ndShenPi.getDiZhiQu());map.put("DiZhi", ndShenPi.getDiZhi());map.put("HangYe", ndShenPi.getHangYe());map.put("XingZhi", ndShenPi.getXingZhi());map.put("ShengZhi", ndShenPi.getShengZhi());map.put("FaRen", ndShenPi.getFaRen());map.put("LianXiRen", ndShenPi.getLianXiRen());map.put("LianXiDianHua", ndShenPi.getLianXiDianHua());map.put("GZShiJian", ndShenPi.getGZShiJian());map.put("GZGongZuo", ndShenPi.getGZGongZuo());map.put("GZZhiWu", ndShenPi.getGZZhiWu());map.put("JLMingCheng", ndShenPi.getJLMingCheng());map.put("JLShiJian", ndShenPi.getJLShiJian());map.put("JLBuMen", ndShenPi.getJLBuMen());map.put("QXingMing", ndShenPi.getQXingMing());map.put("QZhengHao", ndShenPi.getQZhengHao());map.put("QXingBie", ndShenPi.getQXingBie());map.put("QGuanXi", ndShenPi.getQGuanXi());map.put("QMingZu", ndShenPi.getQMingZu());map.put("QShengRi", ndShenPi.getQShengRi());map.put("QZhiWu", ndShenPi.getQZhiWu());map.put("QHuKouDiZhi", ndShenPi.getQHuKouDiZhi());map.put("QHuKou", ndShenPi.getQHuKou());map.put("YuanHuKou", ndShenPi.getYuanHuKou());map.put("YuanHuKouDiZhi", ndShenPi.getYuanHuKouDiZhi());map.put("HuKou", ndShenPi.getHuKou());map.put("HuKouDiZhi", ndShenPi.getHuKouDiZhi());map.put("GuestNo", ndShenPi.getGuestNo());map.put("GuestName", ndShenPi.getGuestName());map.put("BeiZhu", ndShenPi.getBeiZhu());map.put("ShouLiTiaoJian", ndShenPi.getShouLiTiaoJian());map.put("ShenQingShiJian", ndShenPi.getShenQingShiJian());map.put("Type", ndShenPi.getType());map.put("FromTo", ndShenPi.getFromTo());map.put("YuShenTxt", ndShenPi.getYuShenTxt());map.put("YuShenTime", ndShenPi.getYuShenTime());map.put("YuShenRen", ndShenPi.getYuShenRen());map.put("YuShenAccount", ndShenPi.getYuShenAccount());map.put("PJQStar", ndShenPi.getPJQStar());map.put("SmsNote", ndShenPi.getSmsNote());map.put("PJQMsg", ndShenPi.getPJQMsg());map.put("CardNo", ndShenPi.getCardNo());SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");if (ndShenPi.getCardDate() == null) {map.put("CardDate", null);} else {map.put("CardDate", sdf.format(ndShenPi.getCardDate()));}if (ndShenPi.getCardDateDQ() == null) {map.put("CardDateDQ", null);} else {map.put("CardDateDQ", sdf.format(ndShenPi.getCardDateDQ()));}if (ndShenPi.getCardFiveDQTime() == null) {map.put("CardFiveDQTime", null);} else {map.put("CardFiveDQTime", sdf.format(ndShenPi.getCardFiveDQTime()));}map.put("CardState", String.valueOf(ndShenPi.getCardState()));map.put("CardType", String.valueOf(ndShenPi.getCardType()));if (ndShenPi.getCardZKDate() == null) {map.put("CardZKDate", null);} else {map.put("CardZKDate", sdf.format(ndShenPi.getCardZKDate()));}map.put("CardSerial", ndShenPi.getCardSerial());map.put("RenCaiFlg", String.valueOf(ndShenPi.getRenCaiFlg()));map.put("RenCaiFlgContent", ndShenPi.getRenCaiFlgContent());map.put("CardTypeS", ndShenPi.getCardTypeS());if (ndShenPi.getRenCaiZXTime() == null) {map.put("RenCaiZXTime", null);} else {map.put("RenCaiZXTime", sdf.format(ndShenPi.getRenCaiZXTime()));}if (ndShenPi.getFuShenTime() == null) {map.put("FuShenTime", null);} else {map.put("FuShenTime", sdf.format(ndShenPi.getFuShenTime()));}if (ndShenPi.getAddTime() == null) {map.put("AddTime", null);} else {map.put("AddTime", sdf.format(ndShenPi.getAddTime()));}map.put("cardcode", ndShenPi.getCardcode());map.put("zzmm", ndShenPi.getZzmm());map.put("FuShen", ndShenPi.getFuShen());} else {map.put("success", "4");}return map;}}// //生成认证请求URL// @GetMapping("/geturl")// @ResponseBodypublic String url(String certifyId) throws AlipayApiException {//参考代码如下://获取alipay clientAlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayUserCertifyOpenCertifyRequest request = new AlipayUserCertifyOpenCertifyRequest();//设置certifyIdJSONObject bizContentObj = new JSONObject();bizContentObj.put("certify_id", certifyId);request.setBizContent(bizContentObj.toString());//生成请求链接,这里一定要使用GET模式AlipayUserCertifyOpenCertifyResponse response = alipayClient.pageExecute(request, "GET");String certifyUrl = "";if (response.isSuccess()) {System.out.println("开始认证服务调用成功");certifyUrl = response.getBody();System.err.println("certifyUrl:" + certifyUrl);//执行后续流程...//} else {System.out.println("调用失败");}return certifyUrl;}//根据 code获取AccessToken 和UserId@GetMapping("/getcode")@ResponseBodypublic HashMap<String, String> urlsgrz(String code) {HashMap<String, String> map = new HashMap<>();AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();request.setCode(code);request.setGrantType("authorization_code");try {AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);System.out.println("AccessToken:" + oauthTokenResponse.getAccessToken());System.err.println("user_id:" + oauthTokenResponse.getUserId());if (oauthTokenResponse.getAccessToken() == null && oauthTokenResponse.getUserId() == null) {map.put("success", "false");map.put("message:", "参数code无效");} else {map.put("success", "true");map.put("AccessToken", oauthTokenResponse.getAccessToken());map.put("UserId", oauthTokenResponse.getUserId());}// map.put("AccessToken",oauthTokenResponse.getAccessToken());// map.put("UserId",oauthTokenResponse.getUserId());} catch (AlipayApiException e) {//处理异常e.printStackTrace();}return map;}@GetMapping("/save")@ResponseBodypublic HashMap<String, String> save(String sfzh, String xm, String appid) {String flag = "3";HashMap<String, String> map = new HashMap<>();int i1 = sfrz.save(sfzh, xm, appid);System.err.println("i1:" + i1);if (i1 > 0) {NDShenPi ndShenPi = sfrz.getselect(sfzh, xm);if (ndShenPi != null) {map.put("id", String.valueOf(ndShenPi.getId()));map.put("BillNo", ndShenPi.getBillNo());map.put("OID", String.valueOf(ndShenPi.getOID()));map.put("ShiXiangMingCheng", ndShenPi.getShiXiangMingCheng());map.put("ShiXiangLeiXing", ndShenPi.getShiXiangLeiXing());map.put("ShouLiShiXian", ndShenPi.getShouLiShiXian());map.put("ShiXiangBianMa", ndShenPi.getShiXiangBianMa());map.put("ShouLiBuMen", ndShenPi.getShouLiBuMen());map.put("ShouLiChuangKou", ndShenPi.getShouLiChuangKou());map.put("ShouLiShiJian", ndShenPi.getShouLiShiJian());map.put("ShenQingRen", ndShenPi.getShenQingRen());map.put("ShenQingRenEN", ndShenPi.getShenQingRenEN());map.put("ZhengJianType", ndShenPi.getZhengJianType());map.put("ZhengJianHao", ndShenPi.getZhengJianHao());map.put("Img", ndShenPi.getImg());map.put("ShengRi", ndShenPi.getShengRi());map.put("XingBie", ndShenPi.getXingBie());map.put("MinZu", ndShenPi.getMinZu());map.put("GuoJia", ndShenPi.getGuoJia());map.put("HuKouSuoZaiDi", ndShenPi.getHuKouSuoZaiDi());map.put("XueLi", ndShenPi.getXueLi());map.put("XueLiQuanRiZhi", ndShenPi.getXueLiQuanRiZhi());map.put("QuanRiZhiZhuanYe", ndShenPi.getQuanRiZhiZhuanYe());map.put("HaiWai", ndShenPi.getHaiWai());map.put("XueLiZaiZhi", ndShenPi.getXueLiZaiZhi());map.put("ZaiZhiZhuanYe", ndShenPi.getZaiZhiZhuanYe());map.put("RenCaiLeiBie", ndShenPi.getRenCaiLeiBie());map.put("RenCaiChengHao", ndShenPi.getRenCaiChengHao());map.put("BiYeZhengShuBH", ndShenPi.getBiYeZhengShuBH());map.put("YJTime", ndShenPi.getYJTime());map.put("YouXiang", ndShenPi.getYouXiang());map.put("DianHua", ndShenPi.getDianHua());map.put("ShouJi", ndShenPi.getShouJi());map.put("YuanDanWei", ndShenPi.getYuanDanWei());map.put("YuanZhiCheng", ndShenPi.getYuanZhiCheng());map.put("YinJinLeiXing", ndShenPi.getYinJinLeiXing());map.put("QianYueQiXian", ndShenPi.getQianYueQiXian());map.put("ZhiCheng", ndShenPi.getZhiCheng());map.put("DanWei", ndShenPi.getDanWei());map.put("DiZhiQu", ndShenPi.getDiZhiQu());map.put("DiZhi", ndShenPi.getDiZhi());map.put("HangYe", ndShenPi.getHangYe());map.put("XingZhi", ndShenPi.getXingZhi());map.put("ShengZhi", ndShenPi.getShengZhi());map.put("FaRen", ndShenPi.getFaRen());map.put("LianXiRen", ndShenPi.getLianXiRen());map.put("LianXiDianHua", ndShenPi.getLianXiDianHua());map.put("GZShiJian", ndShenPi.getGZShiJian());map.put("GZGongZuo", ndShenPi.getGZGongZuo());map.put("GZZhiWu", ndShenPi.getGZZhiWu());map.put("JLMingCheng", ndShenPi.getJLMingCheng());map.put("JLShiJian", ndShenPi.getJLShiJian());map.put("JLBuMen", ndShenPi.getJLBuMen());map.put("QXingMing", ndShenPi.getQXingMing());map.put("QZhengHao", ndShenPi.getQZhengHao());map.put("QXingBie", ndShenPi.getQXingBie());map.put("QGuanXi", ndShenPi.getQGuanXi());map.put("QMingZu", ndShenPi.getQMingZu());map.put("QShengRi", ndShenPi.getQShengRi());map.put("QZhiWu", ndShenPi.getQZhiWu());map.put("QHuKouDiZhi", ndShenPi.getQHuKouDiZhi());map.put("QHuKou", ndShenPi.getQHuKou());map.put("YuanHuKou", ndShenPi.getYuanHuKou());map.put("YuanHuKouDiZhi", ndShenPi.getYuanHuKouDiZhi());map.put("HuKou", ndShenPi.getHuKou());map.put("HuKouDiZhi", ndShenPi.getHuKouDiZhi());map.put("GuestNo", ndShenPi.getGuestNo());map.put("GuestName", ndShenPi.getGuestName());map.put("BeiZhu", ndShenPi.getBeiZhu());map.put("ShouLiTiaoJian", ndShenPi.getShouLiTiaoJian());map.put("ShenQingShiJian", ndShenPi.getShenQingShiJian());map.put("Type", ndShenPi.getType());map.put("FromTo", ndShenPi.getFromTo());map.put("YuShenTxt", ndShenPi.getYuShenTxt());map.put("YuShenTime", ndShenPi.getYuShenTime());map.put("YuShenRen", ndShenPi.getYuShenRen());map.put("YuShenAccount", ndShenPi.getYuShenAccount());map.put("PJQStar", ndShenPi.getPJQStar());map.put("SmsNote", ndShenPi.getSmsNote());map.put("PJQMsg", ndShenPi.getPJQMsg());map.put("CardNo", ndShenPi.getCardNo());SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");if (ndShenPi.getCardDate() == null) {map.put("CardDate", null);} else {map.put("CardDate", sdf.format(ndShenPi.getCardDate()));}if (ndShenPi.getCardDateDQ() == null) {map.put("CardDateDQ", null);} else {map.put("CardDateDQ", sdf.format(ndShenPi.getCardDateDQ()));}if (ndShenPi.getCardFiveDQTime() == null) {map.put("CardFiveDQTime", null);} else {map.put("CardFiveDQTime", sdf.format(ndShenPi.getCardFiveDQTime()));}map.put("CardState", String.valueOf(ndShenPi.getCardState()));map.put("CardType", String.valueOf(ndShenPi.getCardType()));if (ndShenPi.getCardZKDate() == null) {map.put("CardZKDate", null);} else {map.put("CardZKDate", sdf.format(ndShenPi.getCardZKDate()));}map.put("CardSerial", ndShenPi.getCardSerial());map.put("RenCaiFlg", String.valueOf(ndShenPi.getRenCaiFlg()));map.put("RenCaiFlgContent", ndShenPi.getRenCaiFlgContent());map.put("CardTypeS", ndShenPi.getCardTypeS());if (ndShenPi.getRenCaiZXTime() == null) {map.put("RenCaiZXTime", null);} else {map.put("RenCaiZXTime", sdf.format(ndShenPi.getRenCaiZXTime()));}if (ndShenPi.getFuShenTime() == null) {map.put("FuShenTime", null);} else {map.put("FuShenTime", sdf.format(ndShenPi.getFuShenTime()));}if (ndShenPi.getAddTime() == null) {map.put("AddTime", null);} else {map.put("AddTime", sdf.format(ndShenPi.getAddTime()));}map.put("cardcode", ndShenPi.getCardcode());map.put("zzmm", ndShenPi.getZzmm());map.put("FuShen", ndShenPi.getFuShen());flag = "1";} else {flag = "2";}}map.put("success", flag);return map;}}

差不多基本上流程是这样,有不清楚的朋友欢迎交流留言谢谢!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。