alipay.trade.payge.pay收费么

支付宝商户账号“花呗分期”功能与对接详解 - FreeBuf专栏·BIT泽清
支付宝商户账号“花呗分期”功能与对接详解
首发专栏:关注
介绍:支付宝商户账号“花呗分期”功能是蚂蚁金服推出的消费金融产品,买家用花呗分期支付,商家马上收到资金,买家分期偿还花呗。不过大家想要实现这个功能必须要有支付宝商户账号才行,花呗分期签约过程(如没有企业账户,可以通过Q Q:3 0 5 7 1 0 4 3 9 弄到已经签约了支付功能的企业支付宝):
介绍:支付宝商户账号“花呗分期”功能是蚂蚁金服推出的消费金融产品,买家用花呗分期支付,商家马上收到资金,买家分期偿还花呗。不过大家想要实现这个功能必须要有支付宝商户账号才行,花呗分期签约过程(如没有企业账户,可以通过Q Q:3 0 5 7 1 0 4 3 9 弄到已经签约了支付功能的企业支付宝):
1. 商户签约至少一款支付宝收单产品(即时到账、手机网站支付、app支付、当面付等);
2. 商户支付宝账户通过企业认证;
3. 商户未在淘宝、支付宝被处罚,无信用不良记录;
1. 网页支付场景
1)用户在商户网站选择购买的商品
2)用户选择支付渠道,此处建议花呗分期的支付渠道与其他支付渠道并列展示。将各分期数、各期金额和手续费展示给用户(商户收银台界面)
3)用户选择“立即支付”后跳转到支付宝收银台,用户确认,支付成功
2. APP端支付场景
1)用户在商户APP选择购买的商品
2)用户选择支付渠道,此处建议花呗分期的支付渠道与其他支付渠道并列展示。将各分期数、各期金额和手续费展示给用户(商户收银台界面);
3)用户选择“立即支付”后跳转到支付宝APP,用户确认,支付成功。
3. 线下支付场景
1)用户与收银员沟通使用的分期期数;用户打开支付宝钱包-付款,由收银员使用扫码枪进行扫码;
2)确认分期,输入密码交易成功。
4.口碑支付场景
1)进入口碑商家优惠买单页面,输入买单金额,使用花呗分期
2)确认分期,输入密码交易成功
业务数据处理注意事项
商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,并判断total_fee是否确实为该订单的实际金额(即商户订单创建时的金额),同时需要校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email),上述有任何一个验证不通过,则表明本次通知是异常通知,务必忽略。在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。 如果商户需要对同步返回的数据做验签,必须通过服务端的签名验签代码逻辑来实现。如果商户未正确处理业务通知,存在潜在的风险,商户自行承担因此而产生的所有损失。
交易状态TRADE_SUCCESS的通知触发条件是商户签约的产品支持退款功能的前提下,买家付款成功;
交易状态TRADE_FINISHED的通知触发条件是商户签约的产品不支持退款功能的前提下,买家付款成功;或者,商户签约的产品支持退款功能的前提下,交易已经成功并且已经超过可退款期限;
交易成功之后,商户(高级即时到账或机票平台商)可调用批量退款接口,系统会发送退款通知给商户,具体内容请参见批量退款接口文档;
当商户使用站内退款时,系统会发送包含refund_status和gmt_refund字段的通知给商户。
对于退款接口,以异步通知中的退款处理结果业务数据为准。 如果商户未正确处理业务通知,存在潜在的风险,商户自行承担因此而产生的所有损失。
退款接口只支持https请求;
退款接口不支持退分润;
同一批次中不允许包含两条交易号相同的退款明细。
花呗分期接入说明
花呗分期支付渠道需签约后才能使用,点此签约。
产品接口及文档
hb_fq_num代表花呗分期数,仅支持传入3、6、12,其他期数暂不支持,传入会报错;
hb_fq_seller_percent代表卖家承担收费比例,商家承担手续费传入100,用户承担手续费传入0,仅支持传入100、0两种,其他比例暂不支持,传入会报错。
花呗分期参数传入到extend_params中,格式如下:”extend_params”:{“hb_fq_num”:+,”hb_fq_seller_percent”:+}
花呗分期参数传入到extend_params中,格式如下:”extend_params”:{“hb_fq_num”:+,”hb_fq_seller_percent”:+}
手机网站支付
手机网站支付接口alipay.trade.wap.pay
手机App支付
App支付接口alipay.trade.app.pay
线下当面付
统一收单交易支付接口alipay.trade.pay
统一收单线下交易预创建接口alipay.trade.precreate
电脑网站支付
统一收单下单并支付页面接口alipay.trade.page.pay
若您使用的是老版本的接口,请参考如下老版本接口花呗分期参数。
hb_fq_num:代表花呗分期数;
hb_fq_seller_percent:商家承担手续费传入100,用户承担手续费传入0。
传入参数hb_fq_param={“hb_fq_num”:+,”hb_fq_seller_percent”:+}
hb_fq_num:代表花呗分期数;
hb_fq_seller_percent:商家承担手续费传入100,用户承担手续费传入0。
传入参数hb_fq_param=hb_fq_seller_percent^100|hb_fq_num^3
传入参数hb_fq_param=hb_fq_seller_percent^100|hb_fq_num^3
即时到账交易接口create_direct_pay_by_user
手机网站支付
老版本手机网站支付接口alipay.wap.create.direct.pay.by.user
手机App支付
老版本移动支付接口mobile.securitypay.pay
注:老wap支付接口(alipay.wap.trade.create.direct)不支持开通花呗分期支付渠道。
支付接入说明
1. 订单结算页和商品详情页(可选)增加花呗分期渠道展示(支付宝提供logo矢量图,详情见“资源下载”),将标准收银台的支付宝支付和花呗分期渠道的支付宝支付并列展示。
如果用户在商户订单结算页选择非分期支付宝支付,则跳转至标准收银台(不包含花呗分期渠道);
如果用户选择了花呗分期渠道,则跳转至花呗分期收银台(若由于额度不足或不准入等原因无法使用花呗分期,可在支付宝域内直接选择其他支付方式)。
详细使用场景请参考“应用案例”。
2. 选择花呗分期支付时,带上花呗分期的期数和承担手续费比例,请求相应渠道的收单接口(格式参见“产品接口及文档”)。
参数hb_fq_num指定可选期数,包括3/6/12期的,还款期数越长手续费越高(注:该期数是在签约时约定好的,不可指定未约定的期数,否则调接口时报错)。
参数hb_fq_seller_percent指定手续费承担方式,手续费可以由用户全承担(该值为0),也可以商户全承担(该值为100),但不可以共同承担,即不可取0和100外的其他值。
3. 每期支付费用=手续费和费用的总和/分期数,具体计算方法请参考买家分期费用计算规则。
4. 需要注意如果需要修改分期参数,请务必使用新的外部订单号。若在同一个交易中,第一次请求参数分N期,且用户已经进入支付宝收银台生成交易后,用相同的订单号再次请求参数分M期。则跳转到花呗分期收银台后还是显示N期,金额也是N期的金额,继续支付会报错。
5. 测试时注意使用的买家账号需要在支付宝钱包内开通“花呗”支付,否则测试会报错。
6. 如果是虚拟商品交易,为防止用户使用花呗分期套现,需要禁止使用花呗分期。如果商家在虚拟商品交易中使用花呗分期支付,一经发现关闭花呗分期权限。
禁用花呗分期方法:
传入参数goods_type=0,表示虚拟交易,花呗和花呗分期将不会出现在支付宝收银台供用户选择;
可在交易中通过传参禁用花呗分期渠道,具体方法:在收单接口中传入参数disable_pay_channels=pcreditpayInstallment,花呗和花呗分期将不会出现在支付宝收银台供用户选择。
如果是实物交易,请传goods_type=1。
花呗分期虚实分离适用的3个产品:PC即时到账(电脑网站支付)新老接口、手机App支付新老接口、手机网站支付新老接口。
7. 如果是用户在支付宝收银台选的花呗分期,花呗分期手续费100%由用户承担。如下图。
1. 商家退款后,款项原路退回到花呗账户。退款周期在签约时约定,默认3个月。
2. 花呗分期的退款方法和普通支付宝支付相同,详见收单产品(即时到账、App支付、手机网站支付、当面付)接口文档中的退款接口。
3. 发生退款时,资金由商户收款账户退至花呗分期账户,花呗根据用户还款情况,将退款金额做提前还款处理。
4. 分期手续费退费规则:
商户承担手续费,自交易发生后15天内发生退款花呗全额退手续费,15天后不退手续费。
用户已经支付的手续费一概不退,未支付的手续费,如果已经出了账单则不能减免,未出账单的,根据退款金额按比例减免。
5. 用户发起退款,相应的退款资金进入花呗分期放款账户,然后冲抵用户该笔交易的账单。冲抵顺序:先冲抵用户已经出账的账单,出账账单冲抵完成后再从该笔交易的最后一期账单向前冲抵,如仍有多余金额则进入用户支付宝余额。
可登录支付宝企业版后台下载对账单,花呗分期与普通支付宝收单交易在同一张对账单中。
必须您当前尚未登录。
必须(保密)标签 支付宝接口 下的文章
时间: December 19, 2016
搞了一个星期后搞定。
过程如下:
首先上传企业的信息,通过审核之后,开始接入。
下载了最新的支付宝手机网址支付SDK PHP版。
配置填写参数:APPID、openssl生成的私钥,公钥要上传到。
支付宝网关目前有两个,一个是以前的商家号1.0接口:/gateway.do
目前最新2.0采用应用的形式,接口:/gateway.do
采用AlipayTradeServcie类请求支付:
$timeout_express=&1m&;
$payRequestBuilder = new AlipayTradeWapPayContentBuilder();
$payRequestBuilder-&setBody($body);
$payRequestBuilder-&setSubject($subject);
$payRequestBuilder-&setOutTradeNo($out_trade_no);
$payRequestBuilder-&setTotalAmount($total_amount);
$payRequestBuilder-&setTimeExpress($timeout_express);
$payResponse = new AlipayTradeService($config);
$result=$payResponse-&wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
异步回调接收$_POST数据:notify_url.php
$arr = $_POST;
$alipaySevice = new AlipayTradeService($config);
$result = $alipaySevice-&check($arr);
jqlog(&notify data:&);
jqlog(print_r($arr, true));
if ($result) { //验证成功
此$result一直返回false,进入AlipayTradeService.php里面调用的openssl_verify,开日志,看不出来问题, 没有阿里官方的错误码。仅仅是openssl_verify函数返回失败。
大致就是使用了支付宝官网的php sdk集成到我们的第三方php商城平台。同步返回的验签通过了。但是异步验签失败。
同步返回的数据:
app_id=5493&auth_app_id=5493&charset=UTF-8&method=alipay.trade.wap.pay.return&out_trade_no=5712&seller_id=6251&timestamp= 15:39:54&total_amount=0.01&trade_no=3745&version=1.0
异步返回的数据:app_id=5493&auth_app_id=5493&buyer_id=0249&buyer_logon_id=tun***@&buyer_pay_amount=0.01&charset=UTF-8&fund_bill_list=[{&amount&:&0.01&,&fundChannel&:&ALIPAYACCOUNT&}]&gmt_create= 15:34:25&gmt_payment= 15:34:25&invoice_amount=0.01&notify_id=62fec6aebe29efc9deb1huq&notify_time= 15:40:53&notify_type=trade_status_sync&out_trade_no=0&point_amount=0.00&receipt_amount=0.01&seller_email=****&seller_id=6251&subject=order0&total_amount=0.01&trade_no=3034&trade_status=TRADE_SUCCESS&version=1.0
最后别着没办法,咨询支付宝网上客服,发现是机器人,没用!打支付宝售后电话 0 ,告诉我技术问题上支付宝网站咨询。在支付宝开放平台论坛,没有人回答。论坛也没啥人气。我的帖子还是第462贴。其实最有效和支付宝工作人员沟通的方式是在页面点击:提问。类似于tickets的方式一对一解答。
最后问题找到,支付宝返回数据有问题,转义字符多了一个反斜杠。
'fund_bill_list' =& '[{\\&amount\\&:\\&0.01\\&,\\&fundChannel\\&:\\&ALIPAYACCOUNT\\&}]'
正确的应该是这样的
'fund_bill_list' =& '[{\&amount\&:\&0.01\&,\&fundChannel\&:\&ALIPAYACCOUNT\&}]'
很奇怪的是,支付宝直接给我返回的就是两个反斜杠,所以PHP的解决办法就是返回的变量stripslashes一次就可以了。
$arr['fund_bill_list'] = stripslashes($arr['fund_bill_list']);
: Hello!viagra india
: Hello to all, how is everything,...
: 留个脚印
: 嗯嗯,此办法可行。
另问一下:win2003server 为何换...alipay.trade.page.pay-PHP-UTF-8
说明:&&很好用的一个阿里云支付~~~~~~~~~~~~~~~~(A good use of Ali cloud payment A good use of Ali cloud payment)
文件列表:
AopSdk.php
aop\AlipayMobilePublicMultiMediaClient.php
aop\AlipayMobilePublicMultiMediaExecute.php
aop\AopClient.php
aop\AopEncrypt.php
aop\EncryptParseItem.php
aop\EncryptResponseData.php
aop\request
aop\request\AlipayAccountExrateAdviceAcceptRequest.php
aop\request\AlipayAccountExrateAllclientrateQueryRequest.php
aop\request\AlipayAccountExrateRatequeryRequest.php
aop\request\AlipayAcquireCancelRequest.php
aop\request\AlipayAcquireCloseRequest.php
aop\request\AlipayAcquireCreateandpayRequest.php
aop\request\AlipayAcquirePrecreateRequest.php
aop\request\AlipayAcquireQueryRequest.php
aop\request\AlipayAcquireRefundRequest.php
aop\request\AlipayAppTokenGetRequest.php
aop\request\AlipayAssetAccountBindRequest.php
aop\request\AlipayAssetAccountGetRequest.php
aop\request\AlipayAssetAccountUnbindRequest.php
aop\request\AlipayAssetPointBalanceQueryRequest.php
aop\request\AlipayAssetPointBudgetQueryRequest.php
aop\request\AlipayAssetPointOrderCreateRequest.php
aop\request\AlipayAssetPointOrderQueryRequest.php
aop\request\AlipayBossCsChannelQueryRequest.php
aop\request\AlipayBossProdArrangementOfflineQueryRequest.php
aop\request\AlipayCommerceCityfacilitatorCityQueryRequest.php
aop\request\AlipayCommerceCityfacilitatorDepositCancelRequest.php
aop\request\AlipayCommerceCityfacilitatorDepositConfirmRequest.php
aop\request\AlipayCommerceCityfacilitatorDepositQueryRequest.php
aop\request\AlipayCommerceCityfacilitatorFunctionQueryRequest.php
aop\request\AlipayCommerceCityfacilitatorScriptQueryRequest.php
aop\request\AlipayCommerceCityfacilitatorStationQueryRequest.php
aop\request\AlipayCommerceCityfacilitatorVoucherBatchqueryRequest.php
aop\request\AlipayCommerceCityfacilitatorVoucherCancelRequest.php
aop\request\AlipayCommerceCityfacilitatorVoucherConfirmRequest.php
aop\request\AlipayCommerceCityfacilitatorVoucherGenerateRequest.php
aop\request\AlipayCommerceCityfacilitatorVoucherQueryRequest.php
aop\request\AlipayCommerceCityfacilitatorVoucherRefundRequest.php
aop\request\AlipayCommerceCityfacilitatorVoucherUploadRequest.php
aop\request\AlipayCommerceEducateStudentinfoShareRequest.php
aop\request\AlipayCommerceMedicalInstcardBindRequest.php
aop\request\AlipayCommerceTransportOfflinepayKeyQueryRequest.php
aop\request\AlipayCommerceTransportOfflinepayRecordVerifyRequest.php
aop\request\AlipayCommerceTransportOfflinepayUserblacklistQueryRequest.php
aop\request\AlipayDaoweiOrderCancelRequest.php
aop\request\AlipayDaoweiOrderConfirmRequest.php
aop\request\AlipayDaoweiOrderModifyRequest.php
aop\request\AlipayDaoweiOrderQueryRequest.php
aop\request\AlipayDaoweiOrderRefundRequest.php
aop\request\AlipayDaoweiOrderRefuseRequest.php
aop\request\AlipayDaoweiOrderSpModifyRequest.php
aop\request\AlipayDaoweiOrderTransferRequest.php
aop\request\AlipayDaoweiServiceModifyRequest.php
aop\request\AlipayDaoweiServicePriceModifyRequest.php
aop\request\AlipayDaoweiSpModifyRequest.php
aop\request\AlipayDaoweiSpScheduleModifyRequest.php
aop\request\AlipayDataBillDownloadurlGetRequest.php
aop\request\AlipayDataDataexchangeSfasdfRequest.php
aop\request\AlipayDataDataserviceBillDownloadurlQueryRequest.php
aop\request\AlipayDataDataserviceChinaremodelQueryRequest.php
aop\request\AlipayDataDataserviceCodeRecoRequest.php
aop\request\AlipayDataDataserviceSdfsdfRequest.php
aop\request\AlipayDataDataserviceUserlevelZrankGetRequest.php
aop\request\AlipayEbppBillAddRequest.php
aop\request\AlipayEbppBillGetRequest.php
aop\request\AlipayEbppBillSearchRequest.php
aop\request\AlipayEbppMerchantConfigGetRequest.php
aop\request\AlipayEbppPdeductBillPayStatusRequest.php
aop\request\AlipayEbppPdeductPayRequest.php
aop\request\AlipayEbppPdeductSignAddRequest.php
aop\request\AlipayEbppPdeductSignCancelRequest.php
aop\request\AlipayEbppPdeductSignQueryRequest.php
aop\request\AlipayEbppPdeductSignValidateRequest.php
aop\request\AlipayEcapiprodCreditGetRequest.php
aop\request\AlipayEcapiprodDataPutRequest.php
aop\request\AlipayEcapiprodDrawndnContractGetRequest.php
aop\request\AlipayEcapiprodDrawndnDrawndnlistQueryRequest.php
aop\request\AlipayEcapiprodDrawndnFeerecordQueryRequest.php
aop\request\AlipayEcapiprodDrawndnLendingrecordQueryRequest.php
aop\request\AlipayEcapiprodDrawndnPaymentscheduleGetRequest.php
aop\request\AlipayEcapiprodDrawndnRepaymentrecordQueryRequest.php
aop\request\AlipayEcardEduPublicBindRequest.php
aop\request\AlipayEcoCplifeBasicserviceInitializeRequest.php
aop\request\AlipayEcoCplifeBasicserviceModifyRequest.php
aop\request\AlipayEcoCplifeBillBatchqueryRequest.php
aop\request\AlipayEcoCplifeBillBatchUploadRequest.php
aop\request\AlipayEcoCplifeBillDeleteRequest.php
aop\request\AlipayEcoCplifeBillModifyRequest.php
aop\request\AlipayEcoCplifeBillSyncRequest.php
aop\request\AlipayEcoCplifeCommunityBatchqueryRequest.php
aop\request\AlipayEcoCplifeCommunityCreateRequest.php
aop\request\AlipayEcoCplifeCommunityDetailsQueryRequest.php
aop\request\AlipayEcoCplifeCommunityModifyRequest.php
aop\request\AlipayEcoCplifeNoticeDeleteRequest.php
aop\request\AlipayEcoCplifeNoticePublishRequest.php
aop\request\AlipayEcoCplifeRepairStatusUpdateRequest.php
aop\request\AlipayEcoCplifeResidentinfoDeleteRequest.php
近期下载者:
相关文件:2260人阅读
Java(17)
支付宝支付(9)
支付产品全面升级(更新时间: ),若您使用的是老接口,请移步。
支持沙盒环境的测试
此项目已开源欢迎Start、PR、发起Issues一起讨论交流共同进步
1、有图有真相
使用手机扫码进行支付
PC 端登录账号进行支付
2、如何申请PC电脑网站支付
费率、申请条件、签约、使用场景
3、如何快速接入PC电脑网站支付
如果你是使用新版本接入就比较方便了,因为官方提供了
3.1 接口调用流程图
主要涉及到的接口有:
退款查询接口
交易关闭接口
查询对账单下载地址查询接口
3.2 支付接口封装
初始化接口
alipayClient = new DefaultAlipayClient(SERVICE_URL, APP_ID, PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
封装支付接口并将SDK生成的表单响应给页面
* 电脑网站支付(PC支付)
* notifyUrl
* returnUrl
* AlipayApiException
* IOException
public static void tradePage(HttpServletResponse httpResponse, AlipayTradePayModel model, String notifyUrl, String returnUrl) throws AlipayApiException, IOException{
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.setBizModel(model);
request.setNotifyUrl(notifyUrl);
request.setReturnUrl(returnUrl);
String form
= alipayClient.pageExecute(request).getBody();
httpResponse.setContentType("text/charset=" + CHARSET);
httpResponse.getWriter().write(form);
httpResponse.getWriter().flush();
httpResponse.getWriter().close();
3.3 其他支付接口封装
3.4 封装测试
异步通知处理
<pre class="prettyprint prettyprinted" data-original-code="public void notify_url() {
// 获取支付宝POST过来反馈信息
Map params = AliPayApi.toMap(getRequest());
for (Map.Entry entry : params.entrySet()) {
System.out.println(entry.getKey() + & = & + entry.getValue());
boolean verify_result = AlipaySignature.rsaCheckV1(params, AliPayApi.ALIPAY_PUBLIC_KEY, AliPayApi.CHARSET,
AliPayApi.SIGN_TYPE);
if (verify_result) {// 验证成功
// TODO 请在这里加上商户的业务逻辑程序代码 异步通知可能出现订单重复通知 需要做去重处理
System.out.println(&notify_url 验证成功succcess&);
renderText(&success&);
System.out.println(&notify_url 验证失败&);
renderText(&failure&);
} catch (AlipayApiException e) {
e.printStackTrace();
renderText(&failure&);
}" data-snippet-id="ext.9ffa235d61d9fc23c19e" data-snippet-saved="false" data-codota-status="done">public void notify_url() {
Map&String, String& params = AliPayApi.toMap(getRequest());
for (Map.Entry&String, String& entry : params.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
boolean verify_result = AlipaySignature.rsaCheckV1(params, AliPayApi.ALIPAY_PUBLIC_KEY, AliPayApi.CHARSET,
AliPayApi.SIGN_TYPE);
if (verify_result) {
System.out.println("notify_url 验证成功succcess");
renderText("success");
System.out.println("notify_url 验证失败");
renderText("failure");
} catch (AlipayApiException e) {
e.printStackTrace();
renderText("failure");
同步商户页面验签,这里只是返回验签的状态
<pre class="prettyprint prettyprinted" data-original-code="public void return_url() {
// 获取支付宝GET过来反馈信息
Map map = AliPayApi.toMap(getRequest());
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + & = & + entry.getValue());
boolean verify_result = AlipaySignature.rsaCheckV1(map, AliPayApi.ALIPAY_PUBLIC_KEY, AliPayApi.CHARSET,
AliPayApi.SIGN_TYPE);
if (verify_result) {// 验证成功
// TODO 请在这里加上商户的业务逻辑程序代码
System.out.println(&return_url 验证成功&);
renderText(&success&);
System.out.println(&return_url 验证失败&);
renderText(&failure&);
} catch (AlipayApiException e) {
e.printStackTrace();
renderText(&failure&);
" data-snippet-id="ext.75ddebf20c1ad60acf6f" data-snippet-saved="false" data-codota-status="done">public void return_url() {
Map&String, String& map = AliPayApi.toMap(getRequest());
for (Map.Entry&String, String& entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
boolean verify_result = AlipaySignature.rsaCheckV1(map, AliPayApi.ALIPAY_PUBLIC_KEY, AliPayApi.CHARSET,
AliPayApi.SIGN_TYPE);
if (verify_result) {
System.out.println("return_url 验证成功");
renderText("success");
System.out.println("return_url 验证失败");
renderText("failure");
} catch (AlipayApiException e) {
e.printStackTrace();
renderText("failure");
将参数转化为Map,为验签做准备
<pre class="prettyprint prettyprinted" data-original-code="/**
* @param request
public static Map toMap(HttpServletRequest request) {
System.out.println(&>>>>& + request.getQueryString());
Map params = new HashMap();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = &&;
for (int i = 0; i /**
public static Map&String, String& toMap(HttpServletRequest request) {
System.out.println("&&&&" + request.getQueryString());
Map&String, String& params = new HashMap&String, String&();
Map&String, String[]& requestParams = request.getParameterMap();
for (Iterator&String& iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i & values. i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
params.put(name, valueStr);
4、测试数据
异步通知的参数
商户页面同步的参数
&&&&total_amount=88.88&timestamp=2017-05-14+13%3A28%3A11&sign=KRn%2FEi%2B8lOpPdmSBg8ZsB9dUsV8la2bMWaFGFs5R2hhQOP283m%2BolOwFamfC%2B1thxfIsEi92w99lH24K044yj6aLAN8mJq3umQTRI6j2SvZgn1Ufgpd5KdjfmpEAR5omFOJJP%2FDXIb2zEFs6VvA60RmpwYT5mHbujSWDUvj7X0LX1SGd5l90DbyUDtfMe%2FRSqBFd0iIDLloa78a3dPqHcId3mUKP4RrzZBGWNbAYxrZiEslmZiU%2BnT9K0zL9t%2BVm%2B24pHWsgVOR7hb4UicT%2FfHk6VnDPTnOlfVfJD3vOE2FP6N0jgj0QEKNIynOp6t74zmE8Xkca3pGQnkYyrUEQyg%3D%3D&trade_no=1311&sign_type=RSA2&auth_app_id=7659&charset=UTF-8&seller_id=2465&method=alipay.trade.page.pay.return&app_id=7659&out_trade_no=947&version=1.0
charset = UTF-8
out_trade_no = 947
method = alipay.trade.page.pay.return
total_amount = 88.88
sign = KRn/Ei+8lOpPdmSBg8ZsB9dUsV8la2bMWaFGFs5R2hhQOP283m+olOwFamfC+1thxfIsEi92w99lH24K044yj6aLAN8mJq3umQTRI6j2SvZgn1Ufgpd5KdjfmpEAR5omFOJJP/DXIb2zEFs6VvA60RmpwYT5mHbujSWDUvj7X0LX1SGd5l90DbyUDtfMe/RSqBFd0iIDLloa78a3dPqHcId3mUKP4RrzZBGWNbAYxrZiEslmZiU+nT9K0zL9t+Vm+24pHWsgVOR7hb4UicT/fHk6VnDPTnOlfVfJD3vOE2FP6N0jgj0QEKNIynOp6t74zmE8Xkca3pGQnkYyrUEQyg==
trade_no = 1311
auth_app_id = 7659
version = 1.0
sign_type = RSA2
app_id = 7659
seller_id = 2465
timestamp = 2017-05-14 13:28:11
return_url 验证成功
推荐阅读:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:56326次
积分:1155
积分:1155
排名:千里之外
原创:55篇
评论:32条
感兴趣的朋友可以加入我的QQ群。
乐于开源,享受开源
如果对你有帮助,请任意打赏
文章:27篇
阅读:33426
(1)(8)(7)(3)(8)(5)(14)(1)(11)(1)

我要回帖

更多关于 alipay.trade.pay 的文章

 

随机推荐