
package com.java.sdk.demo;
import com.alipay.v3.ApiClient;
import com.alipay.v3.ApiException;
import com.alipay.v3.ApiResponse;
import com.alipay.v3.Configuration;
import com.alipay.v3.util.GenericExecuteApi;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.util.model.CustomizedParams;
import com.alipay.v3.util.model.OpenApiGenericRequest;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GenericExecute {
public static void main(String[] args) throws ApiException {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// 初始化alipay参数(全局设置一次)
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey("<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->");
alipayConfig.setAlipayPublicKey("<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->");
defaultClient.setAlipayConfig(alipayConfig);
GenericExecuteApi api = new GenericExecuteApi();
Map<String, Object> bizParams = new HashMap<>();
Map<String, Object> bizContent = new HashMap<>();
bizContent.put("extra_param", "{\"category\":\"CHARGE_PILE_CAR\",\"serviceId\":\"2020042800000000000001450466\"}");
bizContent.put("business_params", "{\"outRiskInfo\":\"{\"mcCreateTradeTime\":\"2022-03-11 12:46:09\",\"extraAccountCertnoLastSix\":\"000011\",\"mobileOperatingPlatform\":\"ios\",\"sysVersion\":\"15.4.2\",\"mcCreateTradeIp\":\"11.110.111.43\"}\"}");
bizContent.put("identity_params", "{\"identity_hash\":\"acc2b92ffc5ed9b472faa19748f10045c30434132784f774b00216a56b8841c6\"}");
List<Map<String, Object>> postPayments = new ArrayList<>();
Map<String, Object> postPayments0 = new HashMap<>();
postPayments0.put("amount", "0.01");
postPayments0.put("description", "2元/小时,99元封顶");
postPayments0.put("name", "租金");
postPayments.add(postPayments0);
bizContent.put("post_payments", postPayments);
bizContent.put("payee_logon_id", "159****5620");
bizContent.put("product_code", "PRE_AUTH_ONLINE");
bizContent.put("order_title", "XX租车押金");
bizContent.put("disable_pay_channels", "[{\"payChannelType\":\"OPTIMIZED_MOTO\"},{\"payChannelType\":\"BIGAMOUNT_CREDIT_CARTOON\"}]");
bizContent.put("out_order_no", "8077735255938023");
bizContent.put("out_request_no", "8077735255938032");
bizContent.put("enable_pay_channels", "[{\"payChannelType\":\"PCREDIT_PAY\"},{\"payChannelType\":\"MONEY_FUND\"}]");
bizContent.put("amount", "0.01");
bizContent.put("deposit_product_mode", "POSTPAY");
bizContent.put("timeout_express", "2d");
bizContent.put("payee_user_id", "2088102000275795");
bizParams.put("biz_content", bizContent);
try {
String response = api.sdkExecute("alipay.fund.auth.order.app.freeze", bizParams);
System.out.println(response);
} catch (ApiException e) {
System.out.println("调用失败");
}
}
}| 参数名称 | 参数说明 |
|---|---|
| out_order_no | 商户授权资金订单号 |
| out_request_no | 商户本次资金操作的请求流水号 |
| order_title | 订单标题 |
| amount | 需要冻结的金额,由商户根据自身业务评估金额 |
| product_code | 产品码,固定为 PRE_AUTH_ONLINE |
| notify_url | 异步通知地址,异步通知响应详情可查看文中 授权异步通知 章节,当用户授权成功时将触发异步通知返回 auth_no等授权结果信息。若未设置 notify_url 则需调用 alipay.fund.auth.operation.detail.query(资金授权操作查询接口)轮询用户授权结果,当接口返回 order_status = AUTHORIZED 时则用户授权成功 |
| payee_user_id | 可选字段,收款账户的支付宝用户号 |
| payee_logon_id | 可选字段,收款账户的支付宝登录号(email或手机号)如果商户希望用户能够使 用花呗,则用户号(payee_user_id)和登录号(payee_logon_id)两者必须传入其一 |
| enable_pay_channels | 可选字段,可以指定支付渠道,如果不传,默认为签约协议的支付渠道;若需要限制支付渠道,目前仅支持余额宝(MONEY_FUND)、花呗(PCREDIT_PAY)以及芝麻信用(CREDITZHIMA)。冻结用户花呗(PCREDIT_PAY)额度渠道升级中,暂不支持新用户申请接入,请关注后续通知 |
final String orderInfo = orderStr;//orderStr从第一步:生成资金冻结订单,从服务端获取
Runnable payRunnable = new Runnable() {
@Override
public void run () {
PayTask alipay = new PayTask(DemoActivity. this );
Map<String,String> result = alipay.payV2(orderInfo, true );
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();private Handler mHandler = new Handler() {
public void handleMessage (Message msg) {
Result result = new Result((String) msg.obj);
Toast.makeText(DemoActivity. this , result.getResult(),
Toast.LENGTH_LONG).show();
};
};<script src= "https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script>
<button id = "J_btn" class = "btn btn-default">支付</button>
<script>
var btn = document.querySelector('#J_btn');
btn.addEventListener('click', function(){
ap.tradePay({
orderStr : 'timestamp=2016-12-27...'//orderStr从第一步:生成资金冻结订单,从服务端获取
}, function( res ) {
ap.alert(res.resultCode);
});
});
</script>| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| tradeNO | String | 否 | 交易号,多个交易号请用英文分号 ; 分隔。 |
| partnerID | String | 否 | 商户 id。 |
| bizType | String | 否 | 交易类型,默认为 trade。 |
| bizSubType | String | 否 | 交易子类型。 |
| bizContext | String | 否 | 支付额外的参数,格式为 JSON 字符串。 |
| orderStr | String | 否 | 完整的支付参数拼接成的字符串,从服务端获取。 |
| 名称 | 类型 | 描述 |
|---|---|---|
| resultCode | String | 支付结果状态码,详情可查看下表。 |
| resultCode | 描述 |
|---|---|
| 9000 | 订单支付成功。 |
| 8000 | 正在处理中。 |
| 4000 | 订单支付失败。 |
| 6001 | 用户中途取消。 |
| 6002 | 网络连接出错。 |
| 99 | 用户点击忘记密码导致快捷界面退出(only iOS)。 |
my.tradePay({
orderStr: 'orderStr', //orderStr从第一步:生成资金冻结订单,从服务端获取
success: (res) => {
my.alert({
content: JSON.stringify(res),
});
},
fail: (res) => {
my.alert({
content: JSON.stringify(res),
});
}
});https://www.merchant.com/receive_notify.htm?notify_type=trade_status_sync¬ify_id=91722adff935e8cfa58b3aabf4dead6ibe¬ify_time=2017-02-16 21:46:15&sign_type=RSA2&sign=WcO+t3D8Kg71dTlKwN7r9PzUOXeaBJwp8/FOuSxcuSkXsoVYxBpsAidprySCjHCjmaglNcjoKJQLJ28/Asl93joTW39FX6i07lXhnbPknezAlwmvPdnQuI01HZsZF9V1i6ggZjBiAd5lG8bZtTxZOJ87ub2i9GuJ3Nr/NUc9VeY=&auth_no=2014070800002001550000014417&out_order_no=4977164666634053&operation_id=2014070800032850551&out_request_no=8077735255938032&operation_type=FREEZE&amount=0.01&status=SUCCESS&gmt_create=2014-09-15 11:23:04&gmt_trans=2014-09-15 11:23:04&payer_logon_id=test***@alitest.com&payer_user_id=2088102000275885&payee_logon_id=159****5620&payee_user_id=2088102000275795&total_freeze_amount=0.01&total_unfreeze_amount=0.01&total_pay_amount=0.01&rest_amount=0.01&credit_amount=0.01&fund_amount=0.01&total_freeze_credit_amount=0.01&total_freeze_fund_amount=0.01&total_unfreeze_credit_amount=0.01&total_unfreeze_fund_amount=0.01&total_pay_credit_amount=0.01&total_pay_fund_amount=0.01&rest_credit_amount=0.01&rest_fund_amount=0.01&pre_auth_type=CREDIT_AUTH&trans_currency=USD| 参数名 | 参数说明 |
|---|---|
| auth_no | 支付宝资金授权订单号 |
| out_order_no | 商家的资金授权订单号 |
| operation_id | 支付宝的资金操作流水号 |
| out_request_no | 商家资金操作流水号 |