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

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

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

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

配置参数 获取方式/示例值
URL(支付宝网关(固定)) https://openapi.alipay.com/gateway.do
APPID(APPID 即创建应用后生成) 获取见(https://opendocs.alipay.com/open/200/105310#s5)
APP_PRIVATE_KEY(开发者私钥,由开发者自己生成) 获取见(https://opendocs.alipay.com/open/291/105971)
FORMAT(参数返回格式,只支持 JSON) JSON(固定)
CHARSET(编码集,支持 GBK/UTF-8) 开发者根据实际工程编码配置
ALIPAY_PUBLIC_KEY(支付宝公钥,由支付宝生成) 获取详见(https://opendocs.alipay.com/open/291/105971)
SIGN_TYPE(商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2) RSA2

第一步:创建卡模板
第二步:配置开卡表单(看个人业务了可有可无表单项)
第三步:获取投放链接
第四步:小程序内唤起会员开卡授权页面
第五步:获取用户填写的表单信息
第六步:商户开卡给用户

下面就是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="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/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: 8888
spring: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/db2020326?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 java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;/*** @author : 宋银义* @date : 2020-05-28 09:48**/
@Controller
public class shenfenrz {@Autowiredprivate sfrz sfrz;/*** 个人回调地址*/public static final String REDIRECT_URI = "http://www.baidu.com";/*** 支付宝网关(固定)*/public static final String URL = "https://openapi.alipay.com/gateway.do";/*** APPID 即创建应用后生成*/public static final String APP_ID = "202100116xxx";/*** 开发者私钥,由开发者自己生成*/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\":\"2017-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\":\"20161534000000000008863\"," +"\"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\": \"201928393932\"\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=2021001164604451&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%2Fapp.cqkqinfo.com%2Fcertify%2FzmxyBackNew.domerchantConfigObj.put("return_url", "alipays://platformapi/startapp?appId=20000067&url=https%3A%2F%2Fapp.cqkqinfo.com%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;}}

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

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

  1. 支付宝小程序模板开发,一整套流程

    支付宝小程序服务商模板开发着力于解决支付宝生态体系内的小程序管理问题,一套模板,随处部署.能尽可能地减少系统服务商的开发成本,系统服务商只用开发一套小程序代码作为模板就可以快速批量的孵化出大量的商家小 ...

  2. 支付宝小程序模板开发,协助商家一键创建小程序

    关于支付宝小程序模板开发,之前写过相关的介绍,详情请看 [支付宝小程序模板开发,一整套流程]这篇文章. 和微信一样,支付宝也有通过接口创建小程序的服务.不过在对接模板开发那时候,还没开放这个接口,是一 ...

  3. 支付宝小程序怎么开发?

    支付宝小程序怎么开发? 支付宝的小程序组成部分类型: 1.js负责页面逻辑. 2.xml负责页面结构. 3.css负责页面样式. 4.json负责页面配置. 支付宝的小程序积累了技术经验.组件采用了蚂 ...

  4. 《微信小程序:开发入门及案例详解》—— 3.4 小结

    本节书摘来自华章出版社<微信小程序:开发入门及案例详解>一 书中的第3章,第3.4节,作者李骏 边思,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.4 小 ...

  5. 支付宝小程序云开发(Serverless)

    支付宝小程序云开发(Serverless) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 一.在支付宝账号里面开通小程序云服务 ...

  6. 智慧物业小程序_智慧小区物业管理小程序搭建开发有现成案例

    智慧小区物业管理小程序搭建开发有现成案例 [欢迎手机致电:沈经理153.1556.5651 微信同步]你我您社区团购模式平台开发,你我您社区商城购物便捷取货模式开发,你我您社区app小程序系统开发,支 ...

  7. 【小程序】微信小程序云开发笔记详细教程(建议收藏)

    1- 前言 1.1 微信云开发是什么? 微信云开发是微信团队联合腾讯云推出的专业的小程序开发服务. 开发者可以使用云开发快速开发小程序.小游戏.公众号网页等,并且原生打通微信开放能力. 开发者无需搭建 ...

  8. 支付宝小程序对接流量位详细教程

    最近接触了好几个支付宝小程序,支付宝小程序没有流量主概念,应该说是没有CPM类型的广告,这个流量位算是淘宝客的扩展版,使用的是CPA模式.但是对于某些用户来说应该还是有点用处的,今天给大家一个详细的流 ...

  9. 支付宝小程序物联网开发

    支付宝小程序开发 现在我国主流的小程序分别是腾讯的微信小程序,以及阿里的小程序,抖音和快手现在也有自己的小程序系统. 在阿里的小程序中又分:支付宝小程序,香港版支付宝小程序,淘宝小程序,钉钉小程序,高 ...

  10. 微信小程序入门开发超详细笔记(一)

    文章目录 1 引入 1.1 小程序的应用 1.2 小程序的介绍 1.3 市场分类 1 小程序 2 webapp 3 混合app 4 原生app 1 ios 2 android 3 react-nati ...

最新文章

  1. Angularjs中文教程
  2. 删除唯一性约束unique
  3. n个数进栈后输出的可能序列数
  4. keras cnn 代码详解
  5. 基于jsp的教师科研工作量_基于jsp+mysql的JSP教师科研信息管理系统
  6. Qt 使用正则表达式进行字符串替换
  7. DenseNet详述
  8. c远程连接mysql数据库_MySQL数据库远程连接开启方法
  9. 芯唐语音识别_大联大品佳推出基于新唐科技ISD9160+Cyberon算法的语音识别方案
  10. java cc_6.JavaCC官方入门指南-例1
  11. javascript给类添加的方法
  12. Raki的读paper小记:Simplify the Usage of Lexicon in Chinese NER
  13. 3dm下载的都是linux游戏,3DM的游戏怎么下载和安装(没智商的小白用户)
  14. NIO 网络编程之群聊系统
  15. [JAVA毕业设计]大数据在线考试系统在线阅卷系统及大数据统计分析源码获取和系统演示
  16. Sass 基础教程——基本介绍
  17. 通信笑笑点(2010.08.14)
  18. 2022保研面试经历
  19. java猴子分桃_算法——猴子分桃
  20. FOne HCI超融合系统

热门文章

  1. 鬼使神差的给宝宝办了大米的卡
  2. 2.4g无线模块 java_ESP32 2.4G无线模块 WIFI和蓝牙双模模块
  3. Win10+Ubuntu双系统修复Ubuntu系统引导
  4. 热插拔技术详解(上)
  5. 《神奇的数学》读后感_奇妙的数学王国读后感10篇
  6. 计算机发展史观后感50字,《计算机:一部历史》读后感_1300字
  7. 关于能力素质模型建模
  8. 新版个人所得税计算python_最新个税计算 / 个税计算器 小程序 wepy 开发
  9. “熊猫烧香”制造者的起伏人生
  10. 实现Web前端 live2dw小人物的显示