最近公司计划对接支付宝会员卡功能,而任务恰巧由领导安排给我这边,小弟之前也未做过支付宝接口,研究了三天,终于将支付宝会员卡API接口大体上调通了,现将其整理下,以供参考。

  蚂蚁金服开发平台-商户会员卡文档地址:https://docs.open.alipay.com/251

 

  支付宝会员卡接口我大体上分为四块:

1、会员卡模板管理:包括会员卡模板创建会员卡模板查询会员卡模板修改

2、会员卡开卡模块:会员卡开卡表单模板配置,获取会员卡领卡投放链接,查询用户提交的开卡表单数据信息,会员卡的增删改查(会员卡开卡接口会员卡查询接口,会员卡更新,会员卡删除)

3、会员卡消费记录同步

4、会员卡依赖的接口:图片资料上传接口用户信息授权接口

调用接口直接使用支付宝提供的SDK,下来来针对这四块分别说明。

 

会员卡模板管理

  这块儿需要注意的点是:卡模板的栏位信息中的自定义栏位的展现形式如果是openWeb,必须要填写more_info字段的信息,主要是url的信息需要填写。这儿打开二级页面的展现方式我这边没用到,就没写,有兴趣的同学可以自己尝试。支付宝文档还是比较全,凡是按照支付宝标准接口文档说明来开发,大问题应该没。注意这个接口安接口文档上来说,logo_id和background_id必填,并且其ID是图片资料上传接口返回的结果图片image_id,但我开始几次调用的时候都是随便传的值,也调用成功并且没看出来哪里受影响(貌似会员卡开卡后用户支付宝上显示的会员卡哪里是张灰色的图片),我也就不纠结这个了。直接上一段我调用修改卡模板的代码:

  因为我这里是写的示例,所有构建的实体对象的字段都是直接写死的。实际开发中一般都是从配置或其他来源的数据读取的值。

/// <summary>
        /// 卡模板修改
        /// 
        /// </summary>
        public void demoCardModify()
        {
            IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", APPID, APP_PRIVATE_KEY, "json", "1.0", "RSA2", ALIPAY_PUBLIC_KEY, CHARSET, false);
            AlipayMarketingCardTemplateModifyRequest request = new AlipayMarketingCardTemplateModifyRequest();
            CardTemplateModify entity = getModifyParams();
            TemplateFieldRuleDTO fieldDto = new TemplateFieldRuleDTO();
            fieldDto.field_name = "OpenDate";
            fieldDto.rule_name = "DATE_IN_FUTURE";
            fieldDto.rule_value = "10m";
            entity.field_rule_list.Add(fieldDto);

            request.BizContent = Newtonsoft.Json.JsonConvert.SerializeObject(entity); ;

            AlipayMarketingCardTemplateModifyResponse response = client.Execute(request);
            Console.WriteLine(response.Body);
            if (!string.IsNullOrEmpty(response.Body))
                WriteFileLog.WriteLog("修改会员卡模板返回信息:" + response.Body);
        }

        /// <summary>
        /// 构造修改的实体
        /// </summary>
        /// <returns></returns>
        public CardTemplateModify getModifyParams()
        {
            CardTemplateModify entity = new CardTemplateModify();
            entity.request_id = DateTime.Now.ToString("yyyyMMddHHmmss") + "000001";
            entity.write_off_type = "qrcode";
            entity.template_id = template_id;

            entity.template_style_info = new TemplateStyleInfoDTO();
            entity.template_style_info.card_show_name = "五岳天下秀";
            entity.template_style_info.logo_id = "VY3VJvlATW6TrUs_6Ik_gQAAACMAAAAA";
            entity.template_style_info.color = "rgb(55,112,179)";
            entity.template_style_info.background_id = "VY3VJvlATW6TrUs_6Ik_gQAAACMAAAAA";
            entity.template_style_info.bg_color = "rgb(55,112,179)";
            entity.template_style_info.front_text_list_enable = false;

            entity.column_info_list = new List<TemplateColumnInfoDTO>();
            TemplateColumnInfoDTO columnDto = new TemplateColumnInfoDTO();
            //columnDto.code = "BENEFIT_INFO";
            columnDto.code = "BENEFIT_INFO";
            columnDto.operate_type = "staticinfo";
            columnDto.title = "优惠大礼";
            columnDto.value = "优惠礼包大放送";
            entity.column_info_list.Add(columnDto);

            TemplateColumnInfoDTO columnDto1 = new TemplateColumnInfoDTO();
            columnDto1.code = "TELEPHONE";
            columnDto1.operate_type = "staticinfo";
            columnDto1.title = "客服热线";
            columnDto1.value = "4006-999-999";
            entity.column_info_list.Add(columnDto1);

            TemplateColumnInfoDTO columnDto2 = new TemplateColumnInfoDTO();
            columnDto2.code = "MEMO";
            columnDto2.operate_type = "staticinfo";
            columnDto2.title = "使用说明";
            columnDto2.value = "仅限支付宝支付";
            entity.column_info_list.Add(columnDto2);

            //TemplateColumnInfoDTO columnDto3 = new TemplateColumnInfoDTO();
            //columnDto3.code = "WAIBULINK";
            //columnDto3.operate_type = "openWeb"; //必须要填写more_info信息
            //columnDto3.title = "官网地址1";
            //columnDto3.value = "http://www.baidu.com";
            //columnDto3.more_info = new MoreInfoDTO();
            //columnDto3.more_info.url = "http://www.baidu.com";
            //columnDto3.more_info.title = "官网地址";
            ////columnDto3.more_info.Params = new Params();
            //columnDto3.more_info.Params = "{}";  //这里大小写

            //entity.column_info_list.Add(columnDto3);

            entity.field_rule_list = new List<TemplateFieldRuleDTO>();
            TemplateFieldRuleDTO fieldDto = new TemplateFieldRuleDTO();
            fieldDto.field_name = "Balance";
            fieldDto.rule_name = "CONST";
            fieldDto.rule_value = "500";
            entity.field_rule_list.Add(fieldDto);

            return entity;
            //序列化Json串
            //return Newtonsoft.Json.JsonConvert.SerializeObject(entity);
        }
View Code

相关文章:

  • 2021-04-04
  • 2021-12-04
  • 2021-07-09
  • 2021-09-27
  • 2022-12-23
  • 2021-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-10
  • 2021-12-04
  • 2021-12-04
  • 2021-05-11
  • 2022-01-25
相关资源
相似解决方案