接口名称:支付宝pass更新卡券实例接口
英文名称:alipay.pass.instance.update
上一步:[url]https://openclub.alipay.com/read.php?tid=13242&fid=72[/url]
下一步:[url]https://openclub.alipay.com/read.php?tid=13244&fid=72[/url]
一、注意事项
该接口主要用于使页面显示核销状态,且该接口还含有失效卡劵、更新卡劵功能。
更新卡券接口包含三大主要功能:核销卡券、失效卡券、更新卡券样式内容
根据status参数传值进行区分。
CLOSED:失效卡券功能 ,主要用于卡劵过期等操作;
USED:核销卡券功能,主要用于用户已核销使用该卡劵。
1、核销卡券功能
该接口核销操作只是将卡券状态变更为USED(已使用),用户客户端展示为已使用状态,未涉及资金流的核销。
status传值USED,且tpl_params的useStateDesc必须修改为不可使用。
2、失效卡券功能
将发放出去的卡券进行作废,让卡券在用户的支付宝客户端消失。
status传值CLOSED,且tpl_params的useStateDesc必须修改为不可使用。
3、更新卡券功能
更新卡券样式内容,包括内容、logo、背景图、样式等。
不设置传参status,且tpl_params参数信息进行修改。
二、参数说明
1,SERIAL_NUMBER:发放卡劵接口设置并返回的SERIALNUMBER参数值;
2,channl_id:发放卡劵接口设置的channl_id参数值;
3,状态传值更新卡券,支付宝对应的卡券会消失对应的卡券
(1)CLOSED:表示该卡劵失效--------------失效卡券功能
(2)用于:表示已使用该卡劵---------------核销卡券功能
4,verify_code:核销码串值,即发放卡劵接口设置的代码参数值 - 卡劵外部显示卡号;
5,verify_type:目前支持波(声波方式),QRCode的(二维码方式),条形码(条码方式),输入(文本方式,即手工输入方式).verify_code和verify_type需同时传入;
设置参数值为该卡劵模板pass.json中操作的格式参数值。
6,tpl_params:的channelID,代码,SERIALNUMBER设置的自定义参数不同于与发放接口设置参数值,不会影响调用效果。
三、接口请求示例
Java版本请求示例
public static void main(String[] args) throws AlipayApiException { AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type); AlipayPassInstanceUpdateRequest request = new AlipayPassInstanceUpdateRequest(); request.setBizContent( //券状态,支持更新为USED、CLOSED两种状态 "{"status":"USED"," //channl_id取发放卡券时候设置的值(应用的appid或pid) + ""channel_id":"2016101800718925"," //serial_number取发放成功的卡券的值 + ""serial_number":"20170809147614221"," + ""tpl_params":" + "{" + ""validStartDate":"2017-08-28 08:00:00"," + ""validEndDate":"2024-08-09 20:00:00"," + ""channelID":"2016101800718925"," + ""discountInfo":"凭此券即可打0.5折"," + ""code":"201607232562587i"," + ""useStateDesc":"不可使用"," + ""logoText":"2017年七夕8月28日优惠券"," + ""serialNumber":"20170809147614210"}," //核销卡劵码值 +""verify_code":"2016072325625921"," +""verify_type":"barcode"" + "}"); AlipayPassInstanceUpdateResponse response=null; try { response = alipayClient.execute(request); System.out.println(response.getBody()); } catch (AlipayApiException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(response.isSuccess()){ System.out.println("调用成功"); } else { System.out.println("调用失败"); } }
响应参数返回示例
{"alipay_pass_instance_update_response":{"code":"10000","msg":"Success","result":"{"operate":"UPDATE","serialNumber":"20170809147614221"}","success":true},"sign":"ddlhTexj/Tc5+gfXtd71GXecPpZrGsbBffLEs+/ioPmvJzfl9lQcZlekvPqZod8Ie5m2UhaY90fe0UszIn30wKlt7PnHNqV8U1Holqqy4mMUpjx3O2rPuF1zOIOFThYubhXveasJ7PxmLVohXNm3EE0PlPniY2dkYmOxhARkp1jtBous4CgCZ7gheOLOe4/x4PAAZDUfG1v1KFO5rBLjC5YQqt/pCRS//mqU+fQAL9CQvX+ioVUMV2UHyemv97ldWUwmeRoS1eL8FQnYVQcc2DpFM8CS7hFA5nbdMPyrHXpTwZMfjd7LruMTNWsRHTKnpGrgivZdzSLQ97burqUiTQ=="}
PHP版本请求示例
<?php require_once 'AopSdk.php'; $aop = new AopClient (); $aop->appId = '填写您的appid'; $aop->rsaPrivateKey = '填写您的私钥'; $aop->alipayrsaPublicKey='填写您的支付宝公钥'; $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->apiVersion = '1.0'; $aop->signType = 'RSA2'; $aop->postCharset='utf-8'; $aop->format='json'; $date=date("YmdHis"); $arr=range(1000,9999); shuffle($arr); $request = new AlipayPassInstanceUpdateRequest (); $request->setBizContent( ///券状态,支持更新为USED、CLOSED两种状态 "{"status":"USED"," //channl_id取发放卡券时候设置的值(应用的appid或pid) . ""channel_id":"2016101800718925"," //serial_number取发放成功的卡券的值 . ""serial_number":"20170809147614255"," . ""tpl_params":" . "{" . ""validStartDate":"2017-08-28 08:00:00"," . ""validEndDate":"2024-08-09 20:00:00"," . ""channelID":"2016091500520089"," . ""discountInfo":"凭此券即可打0.5折"," . ""code":"201607232562587i"," . ""useStateDesc":"不可使用"," . ""logoText":"2017年七夕8月28日优惠券"," . ""serialNumber":"20170809147614210"}," //核销卡劵码值 .""verify_code":"2016072325625921"," .""verify_type":"barcode"" . "}"); $result = $aop->execute ( $request); var_dump($result); $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response"; $resultCode = $result->$responseNode->code; if(!empty($resultCode)&&$resultCode == 10000){ echo "成功"; } else { echo "失败"; }
响应参数返回示例
public 'alipay_pass_instance_update_response' => object(stdClass)[9] public 'code' => string '10000' (length=5) public 'msg' => string 'Success' (length=7) public 'result' => string '{"operate":"UPDATE","serialNumber":"20170809147614255"}' (length=55) public 'success' => boolean true public 'sign' => string 'UFeRo6qHyhMpNe3+eja6d65MM7S2sxDz7fdHaSigL+YiU/JRz6cyXXc4qFiXH3FbFDsJ0GThesaMkmfJD5JA6T5bEydKsadynRxxjB2zg4PWtgF3fmEtR1Jac11qBKR7d4xRjVQbF5caQ4U4ST4jB0D0qqUJHk8RKRZgdxB3xkEWf/JMvAomt7DGeDUkr7aZSFp8uhFxsb71psnvMNn2FGSnmCxjkbXzXmCD6CiAiv+zPjbIacf4hkidMKWZjBxECx99dgFu5kYFy4k4LhxPBPfo/m5iNGrd0+F+GKBPQe9W698UNR+bgtEVPDzCHQAdNIKE2cvRlLB8Cl6+9zjUXA==' (length=344)
.NET版本请求示例
IAopClient client = new DefaultAopClient(config.gatewayUrl, config.app_id, config.private_key, "json", "1.0", "RSA2", config.alipay_public_key, config.charset, false); AlipayPassInstanceUpdateRequest request = new AlipayPassInstanceUpdateRequest(); request.BizContent="{" + ""serial_number":"20190402ygyg00001"," + ""channel_id":"2088522421611655"," + ""tpl_params":"