You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

211 lines
6.5 KiB

import EasySDKKernel;
type @kernel = EasySDKKernel
init(kernel: EasySDKKernel) {
@kernel = kernel;
}
model TradeFundBill {
fundChannel: string(name='fund_channel'),
bankCode: string(name='bank_code'),
amount: string(name='amount'),
realAmount: string(name='real_amount')
}
model VoucherDetail {
id: string(name='id'),
name: string(name='name'),
type: string(name='type'),
amount: string(name='amount'),
merchantContribute: string(name='merchant_contribute'),
otherContribute: string(name='other_contribute'),
memo: string(name='memo'),
templateId: string(name='template_id'),
purchaseBuyerContribute: string(name='purchase_buyer_contribute'),
purchaseMerchantContribute: string(name='purchase_merchant_contribute'),
purchaseAntContribute: string(name='purchase_ant_contribute')
}
model AlipayTradePayResponse {
httpBody: string(name='http_body', description='响应原始字符串'),
code: string(name='code'),
msg: string(name='msg'),
subCode: string(name='sub_code'),
subMsg: string(name='sub_msg'),
tradeNo: string(name='trade_no'),
outTradeNo: string(name='out_trade_no'),
buyerLogonId: string(name='buyer_logon_id'),
settleAmount: string(name='settle_amount'),
payCurrency: string(name='pay_currency'),
payAmount: string(name='pay_amount'),
settleTransRate: string(name='settle_trans_rate'),
transPayRate: string(name='trans_pay_rate'),
totalAmount: string(name='total_amount'),
transCurrency: string(name='trans_currency'),
settleCurrency: string(name='settle_currency'),
receiptAmount: string(name='receipt_amount'),
buyerPayAmount: string(name='buyer_pay_amount'),
pointAmount: string(name='point_amount'),
invoiceAmount: string(name='invoice_amount'),
gmtPayment: string(name='gmt_payment'),
fundBillList: [ TradeFundBill ](name='fund_bill_list'),
cardBalance: string(name='card_balance'),
storeName: string(name='store_name'),
buyerUserId: string(name='buyer_user_id'),
discountGoodsDetail: string(name='discount_goods_detail'),
voucherDetailList: [ VoucherDetail ](name='voucher_detail_list'),
advanceAmount: string(name='advance_amount'),
authTradePayMode: string(name='auth_trade_pay_mode'),
chargeAmount: string(name='charge_amount'),
chargeFlags: string(name='charge_flags'),
settlementId: string(name='settlement_id'),
businessParams: string(name='business_params'),
buyerUserType: string(name='buyer_user_type'),
mdiscountAmount: string(name='mdiscount_amount'),
discountAmount: string(name='discount_amount'),
buyerUserName: string(name='buyer_user_name')
}
model AlipayTradePrecreateResponse {
httpBody: string(name='http_body', description='响应原始字符串'),
code: string(name='code'),
msg: string(name='msg'),
subCode: string(name='sub_code'),
subMsg: string(name='sub_msg'),
outTradeNo: string(name='out_trade_no'),
qrCode: string(name='qr_code'),
}
api pay(subject: string, outTradeNo: string, totalAmount: string, authCode: string): AlipayTradePayResponse {
var systemParams: map[string]string = {
method = 'alipay.trade.pay',
app_id = @kernel.getConfig("appId"),
timestamp = @kernel.getTimestamp(),
format = 'json',
version = '1.0',
alipay_sdk = @kernel.getSdkVersion(),
charset = 'UTF-8',
sign_type = @kernel.getConfig("signType"),
app_cert_sn = @kernel.getMerchantCertSN(),
alipay_root_cert_sn = @kernel.getAlipayRootCertSN()
};
var bizParams: map[string]any = {
subject = subject,
out_trade_no = outTradeNo,
total_amount = totalAmount,
auth_code = authCode,
scene = 'bar_code'
};
var textParams: map[string]string = {
};
__request.protocol = @kernel.getConfig("protocol");
__request.method = 'POST';
__request.pathname = '/gateway.do';
__request.headers = {
host = @kernel.getConfig("gatewayHost"),
content-type = 'application/x-www-form-urlencoded;charset=utf-8'
};
__request.query = @kernel.sortMap({
sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")),
... systemParams,
... textParams
});
__request.body = @kernel.toUrlEncodedRequestBody(bizParams);
} returns {
var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.pay");
if (@kernel.isCertMode()) {
if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) {
return @kernel.toRespModel(respMap);
}
} else {
if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) {
return @kernel.toRespModel(respMap);
}
}
throw {
message = '验签失败请检查支付宝公钥设置是否正确'
}
} runtime {
connectTimeout = 15000,
readTimeout = 15000,
retry = {
maxAttempts = 0
}
}
api preCreate(subject: string, outTradeNo: string, totalAmount: string): AlipayTradePrecreateResponse {
var systemParams: map[string]string = {
method = 'alipay.trade.precreate',
app_id = @kernel.getConfig("appId"),
timestamp = @kernel.getTimestamp(),
format = 'json',
version = '1.0',
alipay_sdk = @kernel.getSdkVersion(),
charset = 'UTF-8',
sign_type = @kernel.getConfig("signType"),
app_cert_sn = @kernel.getMerchantCertSN(),
alipay_root_cert_sn = @kernel.getAlipayRootCertSN()
};
var bizParams: map[string]any = {
subject = subject,
out_trade_no = outTradeNo,
total_amount = totalAmount
};
var textParams: map[string]string = {
};
__request.protocol = @kernel.getConfig("protocol");
__request.method = 'POST';
__request.pathname = '/gateway.do';
__request.headers = {
host = @kernel.getConfig("gatewayHost"),
content-type = 'application/x-www-form-urlencoded;charset=utf-8'
};
__request.query = @kernel.sortMap({
sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")),
... systemParams,
... textParams
});
__request.body = @kernel.toUrlEncodedRequestBody(bizParams);
} returns {
var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.precreate");
if (@kernel.isCertMode()) {
if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) {
return @kernel.toRespModel(respMap);
}
} else {
if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) {
return @kernel.toRespModel(respMap);
}
}
throw {
message = '验签失败请检查支付宝公钥设置是否正确'
}
} runtime {
connectTimeout = 15000,
readTimeout = 15000,
retry = {
maxAttempts = 0
}
}