国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

信用卡支付网关Authorize.Net ARB模式主要的ubercart api

[复制链接]
发表于 10-13-2011 01:52 | 显示全部楼层 |阅读模式
authorizenet 主要的信用卡支付网关,国外用的比较多。最近做项目使用到,顺便看了一下。结合ubercart使用。如果使用自动续费功能,那authorizenet也是支持的。
& F3 M0 e8 Y- _/ G4 ~( ?5 D/ h4 O: j  z
<?php7 h. Q1 y$ d& k) f9 A; B6 }

8 G4 A2 ?" x+ h; B0 M2 B/ w1 r* e; E5 ]4 j7 V
//这个totalOccurrences 就是对这个续费操作的总共次数。
) U) E# r# P0 A4 V% l, b
. t% R8 K' a4 }1 z3 L//创建一个arb
0 h0 o/ F( \. H' @6 X" Ifunction uc_authorizenet_arb_create($order, $fee) {}
. L* ^7 y0 o% q6 Z6 S: \) Q( \/ s7 d3 z% b- e% C
//更新一个arb
5 A; i3 C6 e* ~* _function uc_authorizenet_arb_update($subscription_id, $updates, $order_id = NULL) {}
% D6 O0 s- h9 Q) @  A
) L1 v' k- B, q% ]//取消arb,如果不取消,那会自动扣款的。
' y' k$ s% p) j% Gfunction uc_authorizenet_arb_cancel($subscription_id, $order_id = NULL, $fee = array()) {} ! ]1 d. d! c1 q' D0 `. }2 k
?>

- }2 _# G" `6 X0 {( ]/ p
. V- Y) e  }( w# b9 B& Y" i; F. u/ E* a6 c) O, ], J, G

& ?' F$ S. L. K' T6 O  t0 x" N" d. t8 d& R% a  M
# U; I) N# y7 z, g0 P; o" G
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2 r! S& h% n5 n9 \% N4 M3 h

% c. P  A9 {9 q3 D+ |. u2 v# _信用卡支付网关Authorize.Net 续费之 CIM
/ c* e4 n1 S/ s% N4 Y+ m! P2 @8 L( ^: ^' Y3 ]  H, I

1 m' G( b2 Q; k+ J$ `/ Y1 u* Y2 n3 u6 |2 r. _1 r% L; y/ A* Z
Authorize.net网关还可以通过CIM来实现续费。本地只要保存一个CIM的customerProfileId你可以读取想要的信息。ubercart的支付网关模块 Authorize还没完善。运行简单的机制,订单下好,在订单order数据库' }6 x$ b2 d9 _  v7 P& k: o7 ]; w8 {
data字段里面保存customerProfileId等信息。当要需要使用信用卡信息的时候在通过author网关通过customerProfileId来读取进行续费操作。5 i' f9 \, p/ [: S4 P
* @. N- ]0 U: q2 Y3 R. Z
<?php
4 b* G, W* `6 F; p5 X// Main handler for processing credit card transactions., L+ e( @% ]7 ]: A: L
function uc_authorizenet_charge($order_id, $amount, $data) {2 m8 i, n! C2 n5 H& g- T3 ]- ?8 E1 `
  // Load the order.
- k5 `- j' b9 U- m  $order = uc_order_load($order_id);0 J* V: u# n% r5 r! Y/ U
8 Y. |, B9 V+ q
  // Perform the appropriate action based on the transaction type.# M* k3 y$ ~, c9 W3 r8 ~% a4 }
  switch ($data['txn_type']) {7 n( r- G/ D1 K  v$ `
    // Reference transactions are handled through Authorize.Net's CIM. 9 G* F. F3 Z3 m8 f+ T
    case UC_CREDIT_REFERENCE_TXN: // 第一种交易模式,通过CIM来处理交易费用0 _( N+ ^; R1 C# A$ X1 l1 w' m
      return _uc_authorizenet_cim_profile_charge($order, $amount, $data); // 通过cim续费& P3 O( N: e3 A& }6 W) u

5 Q) p* k3 S0 C  I6 ?# D$ {8 W    // Set a reference only.4 W; R+ U8 E! Z- N' a
    case UC_CREDIT_REFERENCE_SET: //另一模式,只建立一个CIM信息
- }! a! x! f9 ~  t( ]; E- f$ |8 j      // Return the error message if this failed.  s4 o0 C  n% }9 Z1 T$ ]+ ^/ @
      if ($message = _uc_authorizenet_cim_profile_create($order)) {& C) m* |- a9 S
        return array('success' => FALSE, 'message' => $message);
3 }" N- ^2 F3 a4 X4 U  P3 h' L      }
  t/ R# J. b( ?, C* L0 L      else {
. g/ o* S5 ~# {        return array('success' => TRUE, 'message' => t('New customer profile created successfully at Authorize.Net.'));7 d! Z5 A, y8 ^& S2 G" Q+ _
      }6 ]# p" M! q: }6 G) E
' w- p. p0 U! t( T" s
    // Accommodate all other transaction types.+ T6 s  B9 r; C+ z; t4 C& l" s
    default: // 其他的什么都在这里处理
2 D! n3 v% [3 E0 w  P- S      return _uc_authorizenet_charge($order, $amount, $data);  ! |9 y: _5 i% h8 }; b" q
  }
# w8 m4 Z% Y, ~0 @0 R( j6 r" z}7 \, a' z' A4 e  a& c* h# J
3 C/ e1 e, W. {2 _
/**
' H& L7 L. |& x+ t8 x* Get a CIM payment profile stored at auth.net.  Z% I$ {# v. c+ V" e& B( L& _
  从auth.net 得到cim payment 信息。现有的版本好像还没试用到到这个函数,估计作者后期要加上一些功能,, S8 m3 g5 D! N! S( c/ Z: l
  这个函数还不完善。从auth的提供最新的网关接口信息来测试,会出错,因为少加了一个参数customerPaymentProfileId+ X  q4 T: {( L
*/
) F% @. H' W6 nfunction _uc_authorizenet_cim_payment_profile_get($order, $profile_id, $payment_profile_id) {! x7 a+ ^4 N# t. N
  $server = variable_get('uc_authnet_cim_mode', 'disabled');! ~; B9 R' r6 J4 T" `' X: \) T! |' a
  $request = array(. R. P3 o  g/ X7 x% `
    'customerProfileId' => $profile_id,
9 A% L2 y, S$ H: f3 b! g0 p        'customerPaymentProfileId' => $payment_profile_id // 额外添加,   u" w5 r# G/ ^& [  W
  );+ u2 I9 J8 Z6 H: N5 \  O
; Y; V' I9 ~, A7 {
  // Request a profile from auth.net.7 }- ^3 N1 m! V6 j7 i$ _  C! W
  $xml = _uc_authorizenet_xml_api_wrapper('getCustomerPaymentProfileRequest', _uc_authorizenet_array_to_xml($request));" F9 V9 y# E- ]# o: n# J. z
  // Parse the response.
# Y; n, T* t7 P3 {$ J" m4 S  $response = _uc_authorizenet_cim_parse_response(uc_authorizenet_xml_api($server, $xml));$ z' r  V+ `- e! q* u7 |" N
  return $response['resultCode'] == 'Error' ? FALSE : $response;
- T3 j' e( c" S3 w  x}
; N0 a8 e5 M; h1 x?>

0 E& b7 I) p4 ^7 b
# f, e# c! e' P- p8 _6 i0 k& [
- ?# n( E4 T  M1 s8 P+ v! z6 s# m% x+ l. B+ \) n" r/ Y

% E7 f2 ~+ l" s4 k$ N" t' s8 j2 X% ^. S2 P: Z

# V/ T6 V. Q( ?% n( [
# T' V4 @$ G  K, }, z( }  t( z6 K

|2011-2026-版权声明|平台(网站)公约|手机版|手机版|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 11-30-2025 17:34 , Processed in 0.229081 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表