Skip to content

decryptPayCallback

支付回调参数解密

使用示例

ts
import { WechatService } from 'nest-wxpay'
import type { PayCallbackResponse, Order } from 'nest-wxpay'

@Injectable()
export class Controller {
  constructor(private readonly wechatService: WechatService) {}

  @Post('callback')
  async callback(
    @Body() body: PayCallbackResponse,
    @Headers() headers: Record<string, string>
  ): Promise<Order> {
    const timestamp = headers['Wechatpay-Timestamp']
    const nonce = headers['Wechatpay-Nonce']
    const signature = headers['Wechatpay-Signature']
    const result = await this.wechatService.verifySign({
      nonce,
      signature,
      timestamp,
      requestBody: JSON.stringify(body)
    })
    if (result) {
      const { resource: { ciphertext, associated_data } } = requestBody
      return this.wechatService.decryptPayCallback({
        nonce,
        ciphertext,
        associated_data
      })
    }
  }
}

参数解析

PayCallbackResource

字段名类型是否必填用途
algorithmstring对开启结果数据进行加密的加密算法,目前只支持AEAD_AES_256_GCM
ciphertextstringBase64编码后的开启/停用结果数据密文
associated_datastring附加数据
original_typestring原始回调类型,为transaction
noncestring加密使用的随机串

PayCallbackResponse

字段名类型是否必填用途
idstring通知的唯一ID
create_timestring通知创建的时间,遵循rfc3339标准格式
event_typestring通知的类型,支付成功通知的类型为TRANSACTION.SUCCESS
resource_typestring通知的资源数据类型,支付成功通知为encrypt-resource
resourcePayCallbackResource通知资源数据

响应参数

CommRespPayerInfo

字段名类型是否必填用途
openidstring用户唯一标识

CommRespAmountInfo

字段名类型是否必填用途
totalnumber总金额,单位为分
payer_totalnumber支付者支付金额,单位为分
currencystring货币类型
payer_currencystring支付者货币类型

CommRespSceneInfo

字段名类型是否必填用途
device_idstring设备ID

GoodsDetailInPromotion

字段名类型是否必填用途
goods_idstring商品ID
quantitynumber商品数量
unit_pricenumber商品单价,单位为分
discount_amountnumber折扣金额,单位为分
goods_remarkstring商品备注

PromotionDetail

字段名类型是否必填用途
coupon_idstring优惠券ID
namestring优惠券名称
scope'GLOBAL''SINGLE'
type'CASH''NOCASH'
amountnumber优惠金额,单位为分
stock_idstring库存ID
wechatpay_contributenumber微信支付出资金额,单位为分
merchant_contributenumber商户出资金额,单位为分
other_contributenumber其他出资金额,单位为分
currencystring货币类型
goods_detailGoodsDetailInPromotion[]商品详情

Order

字段名类型是否必填用途
appidstring应用ID
machidstring商户ID
out_trade_nostring商户订单号
transaction_idstring微信支付订单号
trade_type'JSAPI''NATIVE''APP'
trade_state'SUCCESS''REFUND''NOTPAY'
trade_state_descstring交易状态描述
bank_typestring银行类型
attachstring附加数据
success_timestring支付成功时间
payerCommRespPayerInfo支付者信息
amountCommRespAmountInfo订单金额信息
scene_infoCommRespSceneInfo场景信息
promotion_detailPromotionDetail[]优惠详情